Author: chatellier Date: 2009-05-06 16:56:49 +0000 (Wed, 06 May 2009) New Revision: 2191 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java Log: Re add previous simulae action (no deletion at end) for sub process 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-05-06 10:55:55 UTC (rev 2190) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-05-06 16:56:49 UTC (rev 2191) @@ -874,6 +874,8 @@ VCS_COMMIT(_(""), VCSAction.class.getName() + "#vcsCommit", "--vcsCommit"), 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"), SIMULATE_REMOTELLY(_(""), SimulationAction.class.getName() + "#simulateRemotelly", "--simulateRemotelly"), SIMULATE_REMOTELLY_WITH_PRESCRIPT(_(""), SimulationAction.class.getName() + "#simulateRemotellyWithPreScript", "--simulateRemotellyWithPreScript"); 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-05-06 10:55:55 UTC (rev 2190) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-05-06 16:56:49 UTC (rev 2191) @@ -28,7 +28,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.util.FileUtil; -import org.codelutin.util.Tbz2Util; import org.codelutin.util.ZipUtil; import org.codelutin.util.ApplicationConfig.Action.Step; @@ -102,6 +101,62 @@ } /** + * Launch a simulation with specified simulationId and simulation zip. + * + * @param simulationId id de simulation + * @param simulationZip Zip de la simulation + * @throws Exception + */ + @Step(IsisConfig.STEP_AFTER_INIT_VCS) + public static void simulateWithSimulation(String simulationId, File simulationZip) + throws Exception { + // just call with null pre script + simulateWithSimulationAndScript(simulationId, simulationZip, null); + } + + /** + * Launch a simulation with specified simulationId, simulationZip + * and simulationPrescript. + * + * @param simulationId id de simulation + * @param simulationZip Zip de la simulation + * @param simulationPrescript simulation prescript + * @throws Exception + */ + @Step(IsisConfig.STEP_AFTER_INIT_VCS) + public static void simulateWithSimulationAndScript(String simulationId, File simulationZip, File simulationPrescript) + throws Exception { + + if (log.isInfoEnabled()) { + log.info("Command line action : simulateWithSimulation (" + simulationId + ", " + simulationZip.getAbsolutePath() + ", " + simulationPrescript + ")"); + } + + String name = simulationId; // ne pas mettre la date, car le sub process la met deja + " " + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date()); + + SimulationControl control = new SimulationControl(name); + + // pour forcer le fichier de control a être sauver + // pour ensuite être lu par le processus parent + control.setAutoSaveState(true); + + // lancement de la simulation + SimulatorLauncher launcher = new InProcessSimulatorLauncher(); + + //SimulationStorage simulation = launcher.simulate(null, control, simulationZip); + //simulation.getStorage().closeContext(); + 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(); + + // FIXME integrer ca dans le process normal d'init + IsisFish.quit(); + } + + /** * Launch a simulation specialized for remote launch (caparmor). * * Done operations :