| 
      
      
      From: <pat...@us...> - 2011-02-04 14:43:16
      
     | 
| Revision: 1195
          http://cishell.svn.sourceforge.net/cishell/?rev=1195&view=rev
Author:   pataphil
Date:     2011-02-04 14:43:09 +0000 (Fri, 04 Feb 2011)
Log Message:
-----------
* Minor code cleanup.
Modified Paths:
--------------
    trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java
Modified: trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java
===================================================================
--- trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java	2011-01-27 20:52:02 UTC (rev 1194)
+++ trunk/templates/org.cishell.templates/src/org/cishell/templates/staticexecutable/StaticExecutableRunner.java	2011-02-04 14:43:09 UTC (rev 1195)
@@ -57,7 +57,7 @@
 	public static final String IN_FILE_PLACEHOLDER = "inFile";
 
 	private String ALGORITHM;
-	private String ALGORITHM_MACOSX_PPC;
+	private String macOSX_PPC_DirectoryPath;
 	private String MACOSX;
 	private String ALGORITHM_WIN32;
 	private String WIN32;
@@ -65,51 +65,68 @@
 	private String LINUX;
 	private String ALGORITHM_DEFAULT;
 
-	protected final String algDirPath;
-	protected final String tempDirPath;
-	protected final Data[] data;
-	protected Dictionary parameters;
-	protected Properties props;
-	protected CIShellContext ciContext;
-	protected ProgressMonitor monitor;
-	protected BundleContext bContext;
-	protected String algName;
+	private String algorithmDirectoryPath;
+	private String temporaryDirectoryPath;
+	private Data[] data;
+	private Dictionary<String, Object> parameters;
+	private Properties properties;
+	private CIShellContext ciShellContext;
+	private ProgressMonitor monitor;
+	private BundleContext bundleContext;
+	private String algorithmName;
 
-	public StaticExecutableRunner(BundleContext bContext, CIShellContext ciContext, Properties props,
-			Dictionary parameters, Data[] data, ProgressMonitor monitor, String algName) throws IOException {
+	public StaticExecutableRunner(
+			BundleContext bundleContext,
+			CIShellContext ciShellContext,
+			Properties properties,
+			Dictionary<String, Object> parameters,
+			Data[] data,
+			ProgressMonitor monitor,
+			String algorithmName) throws IOException {
+		// Assign normal member variables.
 
-		// assign normal member-variables
-
-		this.bContext = bContext;
-		this.ciContext = ciContext;
-		this.props = props;
+		this.bundleContext = bundleContext;
+		this.ciShellContext = ciShellContext;
+		this.properties = properties;
 		this.parameters = parameters;
 		this.data = data;
 		this.monitor = monitor;
-		this.algName = algName;
+		this.algorithmName = algorithmName;
 
-		// determine directory paths for each platform, based on algName
+		// Determine directory paths for each platform, based on algorithmName.
 
-		ALGORITHM = algName + "/";
-		ALGORITHM_MACOSX_PPC = ALGORITHM + "macosx.ppc/";
-		MACOSX = "macosx";
-		ALGORITHM_WIN32 = ALGORITHM + "win32/";
-		WIN32 = "win32";
-		ALGORITHM_LINUX_X86 = ALGORITHM + "linux.x86/";
-		LINUX = "linux";
-		ALGORITHM_DEFAULT = ALGORITHM + "default/";
+		this.ALGORITHM = algorithmName + "/";
+		this.macOSX_PPC_DirectoryPath = ALGORITHM + "macosx.ppc/";
+		this.MACOSX = "macosx";
+		this.ALGORITHM_WIN32 = ALGORITHM + "win32/";
+		this.WIN32 = "win32";
+		this.ALGORITHM_LINUX_X86 = ALGORITHM + "linux.x86/";
+		this.LINUX = "linux";
+		this.ALGORITHM_DEFAULT = ALGORITHM + "default/";
 
 		// if a constructor variable was null, use a null object version of it if possible
 
-		if (monitor == null) this.monitor = ProgressMonitor.NULL_MONITOR;
-		if (data == null) data = new Data[0];
-		if (parameters == null) parameters = new Hashtable();
+		if (this.monitor == null) {
+			this.monitor = ProgressMonitor.NULL_MONITOR;
+		}
 
-		// make a temporary directory to run the executable in
+		if (this.data == null) {
+			this.data = new Data[0];
+		}
 
-		tempDirPath = makeTempDirectory();
+		if (this.parameters == null) {
+			this.parameters = new Hashtable<String, Object>();
+		}
 
-		algDirPath = tempDirPath + File.separator + props.getProperty("Algorithm-Directory") + File.separator;
+		// Make a temporary directory to run the executable in.
+
+		this.temporaryDirectoryPath = makeTemporaryDirectory();
+		this.algorithmDirectoryPath = String.format(
+			"%s%s%s%s",
+			temporaryDirectoryPath,
+			File.separator,
+			properties.getProperty("Algorithm-Directory"),
+			File.separator);
 	}
 
 	/**
@@ -117,18 +134,19 @@
 	 */
 	public Data[] execute() throws AlgorithmExecutionException {
 		copyFilesUsedByExecutableIntoDir(getTempDirectory());
-		makeDirExecutable(algDirPath);
+		makeDirExecutable(algorithmDirectoryPath);
 		
-		String[] commandLineArguments = createCommandLineArguments(algDirPath, data, parameters);
+		String[] commandLineArguments =
+			createCommandLineArguments(algorithmDirectoryPath, this.data, this.parameters);
 		
-		File[] rawOutput = executeProgram(commandLineArguments, algDirPath);
+		File[] rawOutput = executeProgram(commandLineArguments, algorithmDirectoryPath);
 
 		return formatAsData(rawOutput);
 	}
 
 	private void copyFilesUsedByExecutableIntoDir(File dir) throws AlgorithmExecutionException {
 		try {
-			Enumeration e = bContext.getBundle().getEntryPaths("/" + algName);
+			Enumeration e = bundleContext.getBundle().getEntryPaths("/" + algorithmName);
 
 			Set entries = new HashSet();
 
@@ -140,11 +158,11 @@
 				}
 			}
 
-			dir = new File(dir.getPath() + File.separator + algName);
+			dir = new File(dir.getPath() + File.separator + algorithmName);
 			dir.mkdirs();
 
-			String os = bContext.getProperty("osgi.os");
-			String arch = bContext.getProperty("osgi.arch");
+			String os = bundleContext.getProperty("osgi.os");
+			String arch = bundleContext.getProperty("osgi.arch");
 
 			String path = null;
 
@@ -159,8 +177,8 @@
 			// but override with platform idiosyncracies
 			if (os.equals(WIN32) && entries.contains(ALGORITHM_WIN32)) {
 				path = ALGORITHM_WIN32;
-			} else if (os.equals(MACOSX) && entries.contains(ALGORITHM_MACOSX_PPC)) {
-				path = ALGORITHM_MACOSX_PPC;
+			} else if (os.equals(MACOSX) && entries.contains(macOSX_PPC_DirectoryPath)) {
+				path = macOSX_PPC_DirectoryPath;
 			} else if (os.equals(LINUX) && entries.contains(ALGORITHM_LINUX_X86)) {
 				path = ALGORITHM_LINUX_X86;
 			}
@@ -187,7 +205,7 @@
 		// FIXME: Surely java has a way to do this!!!!
 		if (new File("/bin/chmod").exists()) {
 			try {
-				String executable = baseDir + props.getProperty("executable");
+				String executable = baseDir + properties.getProperty("executable");
 				Runtime.getRuntime().exec("/bin/chmod +x " + executable).waitFor();
 			} catch (IOException e) {
 				throw new AlgorithmExecutionException(e);
@@ -295,7 +313,7 @@
 	}
 
 	protected Data[] formatAsData(File[] files) {
-		String outData = (String) props.get(AlgorithmProperty.OUT_DATA);
+		String outData = (String) properties.get(AlgorithmProperty.OUT_DATA);
 
 		// if out data is null then it returns no data
 		if (("" + outData).trim().equalsIgnoreCase(AlgorithmProperty.NULL_DATA)) {
@@ -317,7 +335,7 @@
 		}
 
 		for (int i = 0; i < data.length; i++) {
-			String file = props.getProperty("outFile[" + i + "]", null);
+			String file = properties.getProperty("outFile[" + i + "]", null);
 
 			if (i < formats.length) {
 				File f = (File) nameToFileMap.remove(file);
@@ -325,10 +343,10 @@
 				if (f != null) {
 					data[i] = new BasicData(f, formats[i]);
 
-					String label = props.getProperty("outFile[" + i + "].label", f.getName());
+					String label = properties.getProperty("outFile[" + i + "].label", f.getName());
 					data[i].getMetadata().put(DataProperty.LABEL, label);
 
-					String type = props.getProperty("outFile[" + i + "].type", DataProperty.OTHER_TYPE);
+					String type = properties.getProperty("outFile[" + i + "].type", DataProperty.OTHER_TYPE);
 					type = type.trim();
 					if (type.equalsIgnoreCase(DataProperty.MATRIX_TYPE)) {
 						type = DataProperty.MATRIX_TYPE;
@@ -387,7 +405,7 @@
 
 	protected StringBuffer log(int logLevel, StringBuffer buffer) {
 		if (buffer.indexOf("\n") != -1) { // any new newlines to output?
-			LogService log = (LogService) ciContext.getService(LogService.class.getName());
+			LogService log = (LogService) ciShellContext.getService(LogService.class.getName());
 
 			int lastGoodIndex = 0;
 			int fromIndex = 0;
@@ -420,23 +438,25 @@
 		return buffer;
 	}
 
-	protected String[] createCommandLineArguments(String algDir, Data[] data, Dictionary parameters) {
-		String template = "" + props.getProperty("template");
-		String[] cmdarray = template.split("\\s");
+	protected String[] createCommandLineArguments(
+			String algorithmDirectory, Data[] data, Dictionary<String, Object> parameters) {
+		String template = "" + this.properties.getProperty("template");
+		String[] commands = template.split("\\s");
 
-		for (int i = 0; i < cmdarray.length; i++) {
-			cmdarray[i] = substituteVars(cmdarray[i], data, parameters);
+		for (int ii = 0; ii < commands.length; ii++) {
+			commands[ii] = substituteVars(commands[ii], data, parameters);
 		}
 
 		// TODO: Expanded later to support .cmd and other extensions
-		if (!new File(algDir + cmdarray[0]).exists()) {
-			if (new File(algDir + cmdarray[0] + ".bat").exists()) {
-				cmdarray[0] = cmdarray[0] + ".bat";
+		if (!new File(algorithmDirectory + commands[0]).exists()) {
+			if (new File(algorithmDirectory + commands[0] + ".bat").exists()) {
+				commands[0] = commands[0] + ".bat";
 			}
 		}
-		cmdarray[0] = algDir + cmdarray[0];
 
-		return cmdarray;
+		commands[0] = algorithmDirectory + commands[0];
+
+		return commands;
 	}
 
 	// replaces place-holder variables in the template with the actual arguments the executable needs to work.
@@ -444,9 +464,10 @@
 	// (also, real values like "6" or "dog" instead of placeholders for parameters)
 	protected String substituteVars(String str, Data[] data, Dictionary parameters) {
 		str = str.replaceAll(
-			"\\$\\{" + EXECUTABLE_PLACEHOLDER + "\\}", props.getProperty(EXECUTABLE_PLACEHOLDER));
+			"\\$\\{" + EXECUTABLE_PLACEHOLDER + "\\}", properties.getProperty(EXECUTABLE_PLACEHOLDER));
 
 		for (int ii = 0; ii < data.length; ii++) {
+			System.err.println(data[0]);
 			String label = data[0].getMetadata().get(DataProperty.LABEL).toString();
 			String escapedLabel = label.replaceAll("\\\\", "/");
 			str = str.replaceAll(
@@ -479,10 +500,10 @@
 	}
 
 	public File getTempDirectory() {
-		return new File(tempDirPath);
+		return new File(temporaryDirectoryPath);
 	}
 
-	protected String makeTempDirectory() throws IOException {
+	protected String makeTemporaryDirectory() throws IOException {
 		File sessionDir = Activator.getTempDirectory();
 		File dir = File.createTempFile("StaticExecutableRunner-", "", sessionDir);
 
@@ -493,7 +514,7 @@
 	}
 
 	private void copyDir(File dir, String dirPath, int depth) throws IOException {
-		Enumeration e = bContext.getBundle().getEntryPaths(dirPath);
+		Enumeration e = bundleContext.getBundle().getEntryPaths(dirPath);
 
 		// dirPath = dirPath.replace('/', File.separatorChar);
 
@@ -515,7 +536,7 @@
 	}
 
 	private void copyFile(File dir, String path) throws IOException {
-		URL entry = bContext.getBundle().getEntry(path);
+		URL entry = bundleContext.getBundle().getEntry(path);
 
 		// path = path.replace('/', File.separatorChar);
 		String file = getName(path);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |