Author: chatellier Date: 2009-11-24 09:01:23 +0000 (Tue, 24 Nov 2009) New Revision: 2773 Modified: isis-fish/trunk/changelog.txt isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties Log: #1585 : Analyze plans are now reloaded before each simulation Modified: isis-fish/trunk/changelog.txt =================================================================== --- isis-fish/trunk/changelog.txt 2009-11-23 17:22:54 UTC (rev 2772) +++ isis-fish/trunk/changelog.txt 2009-11-24 09:01:23 UTC (rev 2773) @@ -1,8 +1,9 @@ isis-fish (3.3.0.0) stable; urgency=low + * #1585 : Analyze plans are now reloaded before each simulation * Editing sensitivity factors after simulation reload now works * Add confirmation message before launching groups creation wizard - * Fix metierSeasonInfo deletion (#1914) + * #1914 : Fix metierSeasonInfo deletion * Remove some deprecated unused UI classes * Remove all GenericCell reference (now model based implementation) * Add missing log category in simulation filter appender Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-11-23 17:22:54 UTC (rev 2772) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-11-24 09:01:23 UTC (rev 2773) @@ -1583,6 +1583,9 @@ /** * A copy instance of SimulationParameter. * + * Warning, this is not a deep copy, already instancied objects are + * not duplicated. + * * @return a copy of this instance */ public SimulationParameter copy() { @@ -1648,6 +1651,21 @@ } /** + * Make a deep copy of current parameters. + * + * Bump all current parameters to properties and make a new one with + * those propeties. + * + * @return new parameters instance + */ + public SimulationParameter deepCopy() { + Properties props = toProperties(); + SimulationParameter newInstance = new SimulationParameter(); + newInstance.fromProperties(null, props); + return newInstance; + } + + /** * The toString() methode call getters. * * So make instances of rules/export/plans... 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-11-23 17:22:54 UTC (rev 2772) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-11-24 09:01:23 UTC (rev 2773) @@ -366,9 +366,14 @@ */ public void submit(String id, SimulationParameter param, SimulatorLauncher launcher, int priority) { + + // make deep copy, ui, still work with + // copy need to be deep for analyze plan to reload + SimulationParameter localParameters = param.deepCopy(); + // on l'ajoute tout de suite a la liste des simulations demandee SimulationControl control = new SimulationControl(id); - SimulationItem item = new SimulationItem(control, param); + SimulationItem item = new SimulationItem(control, localParameters); SimulationJob job = new SimulationJob(this, item, priority); job.setLauncher(launcher); fireStartEvent(job); @@ -377,15 +382,15 @@ // doit etre fait AVANT de faire le prepareSimulationZipFile // car, il est possible que l'init des plans ajoute des regles !!! PrepareSimulationJob task = null; - if (param.getUseAnalysePlan()) { + if (localParameters.getUseAnalysePlan()) { task = new PrepareSimulationJob(this, job); } // on construit le zip de la simulation - File zip = prepareSimulationZipFile(control, param, null, true); + File zip = prepareSimulationZipFile(control, localParameters, null, true); item.setSimulationZip(zip); - if (param.getUseAnalysePlan() && param.isIndependentPlan()) { + if (localParameters.getUseAnalysePlan() && localParameters.isIndependentPlan()) { // c un plan d'analyse independant, on construit toute les sous simu subSimulationComputationExecutor.execute(task); } else { @@ -411,6 +416,10 @@ SimulatorLauncher launcher, int priority, SensitivityCalculator sensitivitycalculator, DesignPlan designPlan) { + // make deep copy, ui, still work with + // copy need to be deep for analyse plan to reload + SimulationParameter localParameters = param.deepCopy(); + try { // build master sensitivity export directory @@ -428,8 +437,8 @@ .compute(designPlan, masterExportDirectory); // ajout des parametres de simulation - param.setSensitivityCalculator(sensitivitycalculator); - param.setNumberOfSensitivitySimulation(sensitivityScenarios.getScenarios().size()); + localParameters.setSensitivityCalculator(sensitivitycalculator); + localParameters.setNumberOfSensitivitySimulation(sensitivityScenarios.getScenarios().size()); // on l'ajoute tout de suite a la liste des simulations demandee // init with default "id" must been changed for designPlan @@ -438,7 +447,7 @@ // on construit le zip de la simulation // in zip, there will be param "without" prescript - File zip = prepareSimulationZipFile(controlJustForZip, param, xmlDesignPlan, true); + File zip = prepareSimulationZipFile(controlJustForZip, localParameters, xmlDesignPlan, true); // for each simulation, we neeed to launch a specific simulation // new simulation ids will be id + "_" + x @@ -449,7 +458,7 @@ // modify modification parameter // subParam only convenient for add pre script // for launcher - SimulationParameter subParam = param.copy(); + SimulationParameter subParam = localParameters.copy(); String preScriptContent = generatePreScript(scenario); // usefull next two line ? subParam.setUsePreScript(true); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx 2009-11-23 17:22:54 UTC (rev 2772) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx 2009-11-24 09:01:23 UTC (rev 2773) @@ -22,6 +22,8 @@ <script><![CDATA[ import javax.swing.table.DefaultTableModel; + import fr.ifremer.isisfish.datastore.StorageChangeEvent; + import fr.ifremer.isisfish.datastore.StorageChangeListener; import fr.ifremer.isisfish.simulator.AnalysePlan; import fr.ifremer.isisfish.ui.models.analyzeplan.AnalyzePlanComboModel; import fr.ifremer.isisfish.ui.models.analyzeplan.AnalyzePlanComboRenderer; @@ -31,6 +33,16 @@ import fr.ifremer.isisfish.ui.models.analyzeplan.AnalyzePlanParametersTableCellEditor; import fr.ifremer.isisfish.ui.models.analyzeplan.AnalyzePlanParametersTableCellRenderer; + // to be notified of storage change event + StorageChangeListener analyzePlanStorageListener; + analyzePlanStorageListener = new StorageChangeListener() { + @Override + public void versionDataChanged(StorageChangeEvent e) { + refresh(); + } + }; + AnalysePlanStorage.addStorageChangeListener(analyzePlanStorageListener); + public void refresh() { // analyse plans names list fieldSimulParamsAnalysePlansSelect.setModel(getAnalyzePlansComboModel()); @@ -44,8 +56,6 @@ protected AnalyzePlanComboModel getAnalyzePlansComboModel() { java.util.List<String> analyzePlanNames = simulAction.getAnalysePlanNames(); AnalyzePlanComboModel model = new AnalyzePlanComboModel(analyzePlanNames); - /*fieldSimulParamsAnalysePlansSelect.setModel(model); - fieldSimulParamsAnalysePlansSelect.setRenderer(new AnalyzePlanComboRenderer());*/ return model; } @@ -55,8 +65,6 @@ protected AnalyzePlanListModel getSimulationAnalyzePlansListModel() { java.util.List<AnalysePlan> analyzePlans = simulAction.getParamAnalysePlans(); AnalyzePlanListModel model = new AnalyzePlanListModel(analyzePlans); - /*listSimulParamsAnalysePlansList.setModel(model); - listSimulParamsAnalysePlansList.setCellRenderer(new AnalyzePlanListRenderer());*/ return model; } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-11-23 17:22:54 UTC (rev 2772) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-11-24 09:01:23 UTC (rev 2773) @@ -201,7 +201,7 @@ FileOutputStream fos = null; try { fos = new FileOutputStream(f); - param.copy().toProperties().store(fos, simulName); + param.toProperties().store(fos, simulName); } catch (Exception e) { if (log.isErrorEnabled()) { log.error("Can't save simulation", e); @@ -967,9 +967,7 @@ ErrorHelper.showErrorDialog(_("isisfish.simulator.simulaction.badid", fullSimulationId), null); } else { - SimulationParameter p = param.copy(); - - SimulationService.getService().submit(fullSimulationId, p, + SimulationService.getService().submit(fullSimulationId, param, launcher, 0); } } catch (Exception eee) { @@ -1014,8 +1012,7 @@ ErrorHelper.showErrorDialog(_("isisfish.simulator.simulaction.badid", fullSimulationId), null); } else { - SimulationParameter p = param.copy(); - SimulationService.getService().submit(fullSimulationId, p, + SimulationService.getService().submit(fullSimulationId, param, launcher, 0, sensitivityCalculator, designPlan); } } catch (Exception eee) { Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-11-23 17:22:54 UTC (rev 2772) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-11-24 09:01:23 UTC (rev 2773) @@ -389,7 +389,7 @@ isisfish.error.undefined.correspondence.zones.reproduction.recruitment=pas de correspondance entre les zones de reproduction et les zones de recrutement isisfish.error.undefined.gear=The engin is not defined isisfish.error.undefined.mesh=No mesh defined -isisfish.error.undefined.mesh.sector=No maille defined in sector +isisfish.error.undefined.mesh.sector=No mesh defined in sector isisfish.error.undefined.meta.population=No population defined isisfish.error.undefined.natural.death=No natural mortality on classes naissantes isisfish.error.undefined.sector=No sector defined