Author: chatellier Date: 2009-03-31 09:23:19 +0000 (Tue, 31 Mar 2009) New Revision: 2049 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java Log: Store design plan as xml in simulation Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2009-03-31 09:17:55 UTC (rev 2048) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2009-03-31 09:23:19 UTC (rev 2049) @@ -67,6 +67,7 @@ public static final String PARAMETERS_FILENAME = "parameters.properties"; public static final String RESULT_XML_FILENAME = "isis-mexico-output.xml"; public static final String RESULT_EXPORT_DIRECTORY = "resultExports"; + public static final String DESIGN_PLAN_FILENAME = "isis-mexico-designplan.xml"; /** to use log facility, just put in your code: log.info(\"...\"); */ private static Log log = LogFactory.getLog(SimulationStorage.class); @@ -162,7 +163,8 @@ /** * Retourne le fichier de stockage des resultats sous format XML mexico - * de la simulation + * de la simulation. + * * @param root le repertoire de stockage de la simulation * @return */ @@ -172,7 +174,8 @@ } /** - * Retourne le fichier de stockage des parametres de la simulation courante + * Retourne le fichier de stockage des parametres de la simulation courante. + * * @return */ protected File getSimulationParametersFile() { @@ -181,6 +184,17 @@ } /** + * Get Mexico XML design plan file. + * + * @param root le repertoire de stockage de la simulation + * @return a {@link File} even if file doesn't exist + */ + public static File getMexicoDesignPlan(File root) { + File result = new File(root, DESIGN_PLAN_FILENAME); + return result; + } + + /** * Retourne le fichier de stockage du fichier de control de la simulation. * Ce fichier conserve l'etat de la simulation, cela permet a un processus * externe de connaitre l'etat d'une simulation distante Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-03-31 09:17:55 UTC (rev 2048) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-03-31 09:23:19 UTC (rev 2049) @@ -43,6 +43,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.mutable.MutableInt; import org.apache.commons.lang.time.DurationFormatUtils; import org.apache.commons.logging.Log; @@ -63,6 +64,7 @@ import fr.ifremer.isisfish.datastore.ScriptStorage; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.datastore.SimulatorStorage; +import fr.ifremer.isisfish.mexico.MexicoHelper; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.simulator.AnalysePlan; import fr.ifremer.isisfish.simulator.AnalysePlanContext; @@ -367,7 +369,7 @@ fireStartEvent(job); // on construit le zip de la simulation - File zip = prepareSimulationZipFile(control, param, true); + File zip = prepareSimulationZipFile(control, param, null, true); item.setSimulationZip(zip); if (param.getUseAnalysePlan() && param.isIndependentPlan()) { @@ -412,6 +414,9 @@ param.setSensitivityCalculator(sensitivitycalculator); param.setNumberOfSensitivitySimulation(sensitivityScenarios.getScenarios().size()); + // export designplan as XML + String xmlDesignPlan = MexicoHelper.getDesignPlanAsXML(designPlan); + // on l'ajoute tout de suite a la liste des simulations demandee // init with default "id" must been changed for designPlan // simulation @@ -419,7 +424,7 @@ // on construit le zip de la simulation // in zip, there will be param "without" prescript - File zip = prepareSimulationZipFile(controlJustForZip, param, true); + File zip = prepareSimulationZipFile(controlJustForZip, param, xmlDesignPlan, true); // for each simulation, we neeed to launch a specific simulation // new simulation ids will be id + "_" + x @@ -819,15 +824,17 @@ * <li> exports * <li> simulators * <li> export de la database de la region + * <li> analyseplan * <p> * Le tout est zippé et le zip est retourné, il peut-être directement - * importé dans le SimulationStorage (en le renomant comme il faut - * importAndRenameZip). + * importé dans le {@link SimulationStorage} (en le renommant comme + * il faut {@link SimulationStorage#importAndRenameZip(File, String)}. * <p> * Ce zip est automatiquement supprimé à la fin de l'application. * * @param control le controleur * @param param les parametre de la simulation + * @param xmlDesignPlan contenu xml des design plan * @param compile si vrai la version compile des fichiers Java est aussi * mise dans le fichier zip. Cela peut servir pour les simulations locales * pour ne pas recompiler pour chaque simulation avec plan d'analyse @@ -835,7 +842,7 @@ * @throws SimulationException pour tout problème rencontré (IO,Topia...) */ protected File prepareSimulationZipFile(SimulationControl control, - SimulationParameter param, boolean compile) + SimulationParameter param, String xmlDesignPlan, boolean compile) throws SimulationException { try { File tmpDirectory = FileUtil.createTempDirectory( @@ -914,6 +921,17 @@ compileAllFile(control, tmpDirectory); } + // Sauvegarde du design plan en XML + if (!StringUtils.isEmpty(xmlDesignPlan)) { + File simulationDesignPlanFile = SimulationStorage.getMexicoDesignPlan(tmpDirectory); + FileUtil.writeString(simulationDesignPlanFile, xmlDesignPlan); + } + + FileUtil.copy(new File(SimulatorStorage.getSimulatorDirectory(), + param.getSimulatorName()), new File(tmpDirectory, + SimulatorStorage.SIMULATOR_PATH + File.separator + + param.getSimulatorName())); + // creation du zip File result = new File(tmpDirectory.getPath() + ".zip"); result.deleteOnExit();
participants (1)
-
chatellier@users.labs.libre-entreprise.org