r1958 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: . actions simulator/launcher
Author: chatellier Date: 2009-03-13 09:58:41 +0000 (Fri, 13 Mar 2009) New Revision: 1958 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java Log: Add simulationWithSimulationAndScript action. Fix subprocess launcher. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-03-13 09:02:57 UTC (rev 1957) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-03-13 09:58:41 UTC (rev 1958) @@ -782,6 +782,7 @@ SIMULATE_WITH_REGION(_(""), SimulationAction.class.getName() + "#simulateWithRegion", "--simulateWithRegion"), SIMULATE_WITH_SIMULATION(_(""), SimulationAction.class.getName() + "#simulateWithSimulation", "--simulateWithSimulation"), + SIMULATE_WITH_SIMULATION_AND_SCRIPT(_(""), SimulationAction.class.getName() + "#simulateWithSimulationAndScript", "--simulateWithSimulationAndScript"), ; public String description; Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-03-13 09:02:57 UTC (rev 1957) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-03-13 09:58:41 UTC (rev 1958) @@ -27,6 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.codelutin.util.FileUtil; import fr.ifremer.isisfish.IsisConfig; import fr.ifremer.isisfish.IsisFish; @@ -103,7 +104,7 @@ public static void simulateWithSimulation(String simulationId, File simulationZip) throws Exception { // just call with null pre script - simulateWithSimulation(simulationId, simulationZip, null); + simulateWithSimulationAndScript(simulationId, simulationZip, null); } /** @@ -115,7 +116,7 @@ * @param simulationPrescript simulation prescript * @throws Exception */ - public static void simulateWithSimulation(String simulationId, File simulationZip, String simulationPrescript) + public static void simulateWithSimulationAndScript(String simulationId, File simulationZip, File simulationPrescript) throws Exception { if (log.isInfoEnabled()) { @@ -135,8 +136,11 @@ //SimulationStorage simulation = launcher.simulate(null, control, simulationZip); //simulation.getStorage().closeContext(); - // FIXME simulation prescript to get from parameters !!! - launcher.simulate(null, control, simulationZip, null); + String simulationPrescriptContent = null; + if (simulationPrescript != null && simulationPrescript.canRead()) { + simulationPrescriptContent = FileUtil.readAsString(simulationPrescript); + } + launcher.simulate(null, control, simulationZip, simulationPrescriptContent); SimulationStorage simulation = launcher.getSimulationStorage(SimulationService.getService(), control); simulation.getStorage().closeContext(); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-03-13 09:02:57 UTC (rev 1957) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-03-13 09:58:41 UTC (rev 1958) @@ -30,8 +30,10 @@ import java.net.URLClassLoader; import java.net.URL; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.codelutin.util.FileUtil; import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.datastore.SimulationStorage; @@ -71,7 +73,7 @@ try { // simulation = SimulationStorage.importAndRenameZip( // simulationZip, simulationId); - simulation = subProcessSimulate(control, simulationZip); + simulation = subProcessSimulate(control, simulationZip, simulationPrescript); } catch (Exception eee) { if (log.isErrorEnabled()) { log.error(_("Can't do simulation %s", simulationId), eee); @@ -123,7 +125,7 @@ } public SimulationStorage subProcessSimulate(SimulationControl control, - File simulationZip) throws Exception { + File simulationZip, String simulationPrescript) throws Exception { message(control, _("isisfish.message.simulation.prepare")); @@ -131,6 +133,14 @@ // on ferme le SimulationStorage pour ne pas interferer avec le process //simulation.closeStorage(); + // write prescript in a temporary file + File tempPrescriptFile = null; + if (!StringUtils.isEmpty(simulationPrescript)) { + tempPrescriptFile = File.createTempFile("isis", ".prescript"); + tempPrescriptFile.deleteOnExit(); + FileUtil.writeString(tempPrescriptFile, simulationPrescript); + } + String java = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"; String classpath = System.getProperty("java.class.path"); @@ -155,10 +165,19 @@ log.debug("classpath to use : " + classpath); } // prepare le process - ProcessBuilder processBuilder = new ProcessBuilder(java, "-classpath", + ProcessBuilder processBuilder = null; + if (tempPrescriptFile != null) { + processBuilder = new ProcessBuilder(java, "-classpath", classpath, IsisFish.class.getName(), "--option", "launch.ui", + "false", "--simulateWithSimulationAndScript", simulationId, + simulationZip.getAbsolutePath(), tempPrescriptFile.getAbsolutePath()); + } + else { + processBuilder = new ProcessBuilder(java, "-classpath", + classpath, IsisFish.class.getName(), "--option", "launch.ui", "false", "--simulateWithSimulation", simulationId, simulationZip.getAbsolutePath()); + } processBuilder.redirectErrorStream(true); // demarrage du process
participants (1)
-
chatellierï¼ users.labs.libre-entreprise.org