Isis-fish-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
April 2014
- 3 participants
- 73 discussions
r3923 - in branches/4.0.1/src/main: java/fr/ifremer/isisfish/ui/simulator resources/i18n resources/templates/script
by echatellier@users.forge.codelutin.com 02 Apr '14
by echatellier@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: echatellier
Date: 2014-04-02 17:19:15 +0200 (Wed, 02 Apr 2014)
New Revision: 3923
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3923
Log:
Fix translations and ftl templates
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties
branches/4.0.1/src/main/resources/templates/script/optimization.ftl
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-02 14:40:57 UTC (rev 3922)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-02 15:19:15 UTC (rev 3923)
@@ -49,15 +49,15 @@
<!-- Objective choice and param -->
<row>
<cell fill="horizontal">
- <JLabel text="isisfish.objective.select"/>
+ <JLabel text="isisfish.optimization.objective"/>
</cell>
- <cell fill="horizontal" weightx="1.0">
+ <cell fill="horizontal" weightx="1.0" columns="2">
<JComboBox id="fieldObjectiveMethodSelect" model='{handler.getObjectiveComboModel()}'
onActionPerformed='handler.objectiveChanged(this)'/>
</cell>
</row>
<row>
- <cell columns="2" fill="both" weightx="1.0" weighty="1.0">
+ <cell columns="3" fill="both" weightx="1.0" weighty="1.0">
<JScrollPane>
<JTable id="simulObjectiveMethodParam" rowHeight="24" />
</JScrollPane>
@@ -67,15 +67,15 @@
<!-- Optimisation choice and param -->
<row>
<cell fill="horizontal">
- <JLabel text="isisfish.optimization.select"/>
+ <JLabel text="isisfish.optimization.method"/>
</cell>
- <cell fill="horizontal" weightx="1.0">
+ <cell fill="horizontal" weightx="1.0" columns="2">
<JComboBox id="fieldOptimizationMethodSelect" model='{handler.getOptimizationComboModel()}'
onActionPerformed='handler.optimizationChanged(this)'/>
</cell>
</row>
<row>
- <cell columns="2" fill="both" weightx="1.0" weighty="1.0">
+ <cell columns="3" fill="both" weightx="1.0" weighty="1.0">
<JScrollPane>
<JTable id="simulOptimizationMethodParam" rowHeight="24" />
</JScrollPane>
Modified: branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties
===================================================================
--- branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-04-02 14:40:57 UTC (rev 3922)
+++ branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-04-02 15:19:15 UTC (rev 3923)
@@ -655,11 +655,9 @@
isisfish.month.september=septembre
isisfish.optimization.export=Export
isisfish.optimization.exports=Exports et observations
-isisfish.optimization.methodfactorsupported=La méthode d'optimisation choisie gère les cardinalités des facteurs
+isisfish.optimization.method=Méthode d'optimisation
isisfish.optimization.objective=Fonction d'objectif
isisfish.optimization.observation=Observations
-isisfish.optimization.optimization=Critère d'optimisation
-isisfish.optimization.select=Méthode d'optimisation
isisfish.optimization.title=Optimisation
isisfish.params.changeLogLev=Passe du niveau '%1$s' au niveau '%2$s'
isisfish.params.description=Description
@@ -691,7 +689,8 @@
isisfish.params.toString.simul.logger.level=niveau du logger de simulateur \: %1$s
isisfish.params.toString.simulation.done=Simulation réalisée avec \: %1$s
isisfish.params.toString.strategies=Stratégies d'exploitation \:
-isisfish.params.toString.use.optimization=
+isisfish.params.toString.use.optimization=Utiliser une méthode d'optimisation
+isisfish.params.useOptimization=Utiliser une méthode d'optimisation
isisfish.params.usePreSimulationScript=Utiliser un script de pré-simulation
isisfish.params.useSimulationPlan=Utiliser un plan de simulation
isisfish.population.capturability=Capturabilité
Modified: branches/4.0.1/src/main/resources/templates/script/optimization.ftl
===================================================================
--- branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-02 14:40:57 UTC (rev 3922)
+++ branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-02 15:19:15 UTC (rev 3923)
@@ -103,7 +103,9 @@
*
* @param context
*/
- void init(OptimizationContext context);
+ public void init(OptimizationContext context) {
+
+ }
/**
* Génère une nouvelle série de simulation suivant le context d'optimisation.
@@ -116,7 +118,6 @@
*/
public void getNextSimulation(OptimizationContext context) {
// TODO
- return null;
}
/**
@@ -124,6 +125,7 @@
* (init ou getNextSimulation n'ont pas fait appel a context.addSimulation)
* @param context
*/
- void endSimulation(OptimizationContext context);
-
+ public void endSimulation(OptimizationContext context) {
+
+ }
}
1
0
r3922 - in branches/4.0.1: . src/main/java/fr/ifremer/isisfish/simulator/sensitivity src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain src/main/java/fr/ifremer/isisfish/ui/sensitivity/model src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard src/main/resources/i18n
by echatellier@users.forge.codelutin.com 02 Apr '14
by echatellier@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: echatellier
Date: 2014-04-02 16:40:57 +0200 (Wed, 02 Apr 2014)
New Revision: 3922
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3922
Log:
MatricND can't be continuous factor anymore
Added:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/DistributionListRenderer.java
Modified:
branches/4.0.1/pom.xml
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/ContinuousDistributionPanel.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/ContinuousPanel.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/EquationContinuousPanelUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java
branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties
branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties
Modified: branches/4.0.1/pom.xml
===================================================================
--- branches/4.0.1/pom.xml 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/pom.xml 2014-04-02 14:40:57 UTC (rev 3922)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>5.0.1</version>
+ <version>5.0.4</version>
</parent>
<groupId>fr.ifremer</groupId>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2014-04-02 14:40:57 UTC (rev 3922)
@@ -30,7 +30,6 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.MatrixND;
import fr.ifremer.isisfish.entities.Equation;
import fr.ifremer.isisfish.types.RangeOfValues;
@@ -135,8 +134,6 @@
result = true;
} else if (value instanceof Equation) {
result = true;
- } else if (value instanceof MatrixND) {
- result = true;
} else if (value instanceof RangeOfValues) {
RangeOfValues rangeOfValues = (RangeOfValues)value;
if (rangeOfValues.getType().equals("Float")) {
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2014-04-02 14:40:57 UTC (rev 3922)
@@ -35,7 +35,6 @@
import org.apache.commons.beanutils.MethodUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.MatrixND;
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
@@ -184,27 +183,14 @@
// special management : % to min/max
Object reference = distributionParameters.get(Distribution.QUNIFPC.getDistibutionParams()[0].getName());
double coef = (Double)distributionParameters.get(Distribution.QUNIFPC.getDistibutionParams()[1].getName());
- if (reference instanceof MatrixND) {
- args.add(1.0 - coef); // min
- args.add(1.0 + coef); // max
- } else {
- double ref = (Double)reference;
- args.add(ref * (1.0 - coef)); // min
- args.add(ref * (1.0 + coef)); // max
- }
+ double ref = (Double)reference;
+ args.add(ref * (1.0 - coef)); // min
+ args.add(ref * (1.0 + coef)); // max
} else if (distribution == Distribution.QUNIFMM) {
Object min = distributionParameters.get(Distribution.QUNIFMM.getDistibutionParams()[0].getName());
- if (min instanceof MatrixND) {
- args.add(0.0); // min
- } else {
- args.add(min);
- }
+ args.add(min);
Object max = distributionParameters.get(Distribution.QUNIFMM.getDistibutionParams()[1].getName());
- if (max instanceof MatrixND) {
- args.add(1.0); // max
- } else {
- args.add(max);
- }
+ args.add(max);
} else {
for (DistributionParam param : distribution.getDistibutionParams()) {
String name = param.getName();
@@ -226,25 +212,7 @@
log.error("Can't invoke quantile method : args was " + args, ex);
}
}
-
- if (distribution == Distribution.QUNIFPC) {
- Object reference = distributionParameters.get(Distribution.QUNIFPC.getDistibutionParams()[0].getName());
- if (reference instanceof MatrixND) {
- MatrixND ref = ((MatrixND)reference).copy();
- result = ref.mults((Double)result);
- }
- } else if (distribution == Distribution.QUNIFMM) {
- Object min = distributionParameters.get(Distribution.QUNIFMM.getDistibutionParams()[0].getName());
- Object max = distributionParameters.get(Distribution.QUNIFMM.getDistibutionParams()[1].getName());
- if (min instanceof MatrixND && max instanceof MatrixND) {
- // le calcul ici est la suivant:
- // result = min + (max - min) * coef;
- MatrixND minm = ((MatrixND)min).copy();
- MatrixND maxm = ((MatrixND)max).copy();
- result = maxm.minus(minm).mults((Double)result).add(minm);
- }
- }
-
+
return result;
}
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorListRenderer.java 2014-04-02 14:40:57 UTC (rev 3922)
@@ -25,10 +25,9 @@
import java.awt.Component;
+import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
-import org.jdesktop.swingx.renderer.DefaultListRenderer;
-
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
/**
@@ -41,13 +40,13 @@
* Last update : $Date$
* By : $Author$
*/
-public class FactorListRenderer extends DefaultListRenderer {
+public class FactorListRenderer extends DefaultListCellRenderer {
/** serialVersionUID. */
private static final long serialVersionUID = -8210763862382993163L;
@Override
- public Component getListCellRendererComponent(JList list, Object value,
+ public Component getListCellRendererComponent(JList<?> list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
Factor factor = (Factor)value;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/ContinuousDistributionPanel.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/ContinuousDistributionPanel.java 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/ContinuousDistributionPanel.java 2014-04-02 14:40:57 UTC (rev 3922)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2012, 2013 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2012, 2014 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -25,6 +25,8 @@
package fr.ifremer.isisfish.ui.sensitivity.wizard;
+import static org.nuiton.i18n.I18n.t;
+
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
@@ -37,14 +39,11 @@
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.text.JTextComponent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.MatrixND;
-import org.nuiton.math.matrix.gui.MatrixPanelEditor;
import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
import fr.ifremer.isisfish.simulator.sensitivity.Distribution.DistributionParam;
@@ -69,7 +68,7 @@
private static final long serialVersionUID = 2289588676194644582L;
/** Distribution combo. */
- protected JComboBox distributionCombo;
+ protected JComboBox<Distribution> distributionCombo;
/** Panel that contains dynamics components. */
protected JPanel dynamicPanel;
@@ -84,18 +83,25 @@
setLayout(new GridBagLayout());
+ // label
+ JLabel distributionLabel = new JLabel(t("isisfish.sensitivity.distribution"));
+ add(distributionLabel, new GridBagConstraints(0, 0, 1, 1, 0, 0,
+ GridBagConstraints.WEST, GridBagConstraints.NONE,
+ new Insets(0, 0, 0, 0), 0, 0));
+
// combobox
- distributionCombo = new JComboBox(Distribution.values());
+ distributionCombo = new JComboBox<Distribution>(Distribution.values());
// important : for setSelectedItem to fire event
distributionCombo.setSelectedItem(null);
distributionCombo.addItemListener(this);
- add(distributionCombo, new GridBagConstraints(0, 0, 1, 1, 0, 0,
- GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
+ distributionCombo.setRenderer(new DistributionListRenderer());
+ add(distributionCombo, new GridBagConstraints(1, 0, 1, 1, 0, 0,
+ GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
// sub dynamic panel containing stuff
dynamicPanel = new JPanel(new GridBagLayout());
- add(dynamicPanel, new GridBagConstraints(0, 1, 1, 1, 1, 1,
+ add(dynamicPanel, new GridBagConstraints(0, 1, 2, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(5, 0, 0, 0), 0, 0));
@@ -121,12 +127,8 @@
Object value = domain.getDistributionParameters().get(param.getName());
if (value != null) {
JComponent comp = paramComponents.get(paramComponentIndex);
-
- if (comp instanceof MatrixPanelEditor) {
- ((MatrixPanelEditor)comp).setMatrix((MatrixND)value);
- } else {
- ((JTextComponent)comp).setText(value.toString());
- }
+
+ ((JTextComponent)comp).setText(value.toString());
} else {
if (log.isWarnEnabled()) {
log.warn("Param " + param.getName() + " not found during init");
@@ -161,21 +163,15 @@
return;
}
- // pas de gros composant = liste de composants
- // un seul, on gros et une liste mixé
- // plusieurs gros, ui par onglet
- int numberOfBigComponents = getNumberOfBigComponents(distrib);
-
- // rendu en liste / liste mixée
- JTabbedPane tabbedPane = null;
- if (numberOfBigComponents >= 2) {
- tabbedPane = new JTabbedPane();
- dynamicPanel.add(tabbedPane, new GridBagConstraints(0, 0, 1, 1, 1, 1,
- GridBagConstraints.CENTER, GridBagConstraints.BOTH,
- new Insets(0, 0, 0, 0), 0, 0));
- }
-
int index = 0;
+ // add label
+ JLabel paramDetailsLabel = new JLabel(t("isisfish.sensitivity.distribution.parameters", distrib.getDescription()));
+ dynamicPanel.add(paramDetailsLabel, new GridBagConstraints(0, index, 2, 1, 0, 0,
+ GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
+ new Insets(0, 0, 0, 0), 0, 0));
+ index++;
+
+ // add others params
DistributionParam[] params = distrib.getDistibutionParams();
for (DistributionParam param : params) {
JLabel paramLabel = new JLabel(param.getName() + " :");
@@ -184,32 +180,15 @@
JComponent paramField = getParamField(param);
paramField.setToolTipText(param.getDescription());
- // rendu en onglet
- if (numberOfBigComponents >= 2) {
- tabbedPane.add(param.getName(), paramField);
- }
- // rendu mixé
- else if (isParamBigComponent(param)) {
- dynamicPanel.add(paramLabel, new GridBagConstraints(0, index, 2, 1, 0, 0,
- GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
- new Insets(0, 0, 0, 0), 0, 0));
- index++;
-
- dynamicPanel.add(paramField, new GridBagConstraints(0, index, 2, 1, 1, 1,
- GridBagConstraints.NORTH, GridBagConstraints.BOTH,
- new Insets(0, 0, 0, 0), 0, 0));
- index++;
// rendu simple
- } else {
- dynamicPanel.add(paramLabel, new GridBagConstraints(0, index, 1, 1, 0, 0,
- GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
- new Insets(0, 0, 0, 0), 0, 0));
+ dynamicPanel.add(paramLabel, new GridBagConstraints(0, index, 1, 1, 0, 0,
+ GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
+ new Insets(0, 0, 0, 0), 0, 0));
- dynamicPanel.add(paramField, new GridBagConstraints(1, index, 1, 1, 1, 0,
- GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL,
- new Insets(0, 0, 0, 0), 0, 0));
- index++;
- }
+ dynamicPanel.add(paramField, new GridBagConstraints(1, index, 1, 1, 1, 0,
+ GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL,
+ new Insets(0, 0, 0, 0), 0, 0));
+ index++;
paramComponents.add(paramField);
}
@@ -232,12 +211,7 @@
JComponent result;
if (param.isOriginalValue()) {
- if (originalValue instanceof MatrixND) {
- result = new MatrixPanelEditor();
- ((MatrixPanelEditor)result).setMatrix((MatrixND)originalValue);
- } else {
- result = new JTextField(originalValue.toString());
- }
+ result = new JTextField(originalValue.toString());
} else {
result = new JTextField();
}
@@ -245,37 +219,6 @@
return result;
}
- /**
- * Return the number of big components necessary to edit
- * selected distribution.
- *
- * @return number of big components
- */
- protected int getNumberOfBigComponents(Distribution distrib) {
-
- int result = 0;
-
- DistributionParam[] params = distrib.getDistibutionParams();
- for (DistributionParam param : params) {
- if (isParamBigComponent(param)) {
- result++;
- }
- }
-
- return result;
- }
-
- /**
- * Param will be rendered as big ui component only a param
- * allows it and current value is big rendering (matrix?).
- *
- * @param param param to test (with current value)
- * @return
- */
- protected boolean isParamBigComponent(DistributionParam param) {
- return param.isOriginalValue() && originalValue instanceof MatrixND;
- }
-
/*
* @see fr.ifremer.isisfish.ui.sensitivity.wizard.ContinuousPanelContainerUI#isFactorValid()
*/
@@ -306,15 +249,11 @@
int paramComponentIndex = 0;
for (DistributionParam param : params) {
JComponent comp = paramComponents.get(paramComponentIndex);
-
- if (comp instanceof MatrixPanelEditor) {
- domain.addDistributionParam(param.getName(), ((MatrixPanelEditor)comp).getMatrix());
- } else {
- // XXX echatellier 20131201 : always double type ?
- String strValue = ((JTextComponent)comp).getText().trim();
- domain.addDistributionParam(param.getName(), Double.parseDouble(strValue));
- }
-
+
+ // XXX echatellier 20131201 : always double type ?
+ String strValue = ((JTextComponent)comp).getText().trim();
+ domain.addDistributionParam(param.getName(), Double.parseDouble(strValue));
+
paramComponentIndex++;
}
return domain;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/ContinuousPanel.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/ContinuousPanel.java 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/ContinuousPanel.java 2014-04-02 14:40:57 UTC (rev 3922)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2012 Codelutin, Chatellier Eric
+ * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/DistributionListRenderer.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/DistributionListRenderer.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/DistributionListRenderer.java 2014-04-02 14:40:57 UTC (rev 3922)
@@ -0,0 +1,53 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.sensitivity.wizard;
+
+import java.awt.Component;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JList;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
+
+/**
+ * Renderer qui affiche la description de la distribution.
+ *
+ * @author Eric Chatellier
+ */
+public class DistributionListRenderer extends DefaultListCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -8210763862382993163L;
+
+ @Override
+ public Component getListCellRendererComponent(JList<?> list, Object value,
+ int index, boolean isSelected, boolean cellHasFocus) {
+
+ Distribution distribution = (Distribution)value;
+ String stringValue = null;
+ if (distribution != null) {
+ stringValue = distribution.getDescription();
+ }
+ return super.getListCellRendererComponent(list, stringValue, index, isSelected, cellHasFocus);
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/DistributionListRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/EquationContinuousPanelUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/EquationContinuousPanelUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/EquationContinuousPanelUI.jaxx 2014-04-02 14:40:57 UTC (rev 3922)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2009 - 2012 Ifremer, CodeLutin, Chatellier Eric
+ Copyright (C) 2009 - 2014 Ifremer, CodeLutin, Chatellier Eric
%%
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@@ -141,7 +141,7 @@
<JScrollPane>
<fr.ifremer.isisfish.ui.sensitivity.model.FactorListModel
id="factorsListModel" constructorParams="factors" />
- <JList id="factorsList" model="{factorsListModel}"
+ <JList id="factorsList" model="{factorsListModel}" genericType="Factor"
cellRenderer="{new fr.ifremer.isisfish.ui.sensitivity.model.FactorListRenderer()}"/>
<ListSelectionModel initializer="factorsList.getSelectionModel()"
onValueChanged="displaySelectedFactor();setSelectedFactor(factorsList.getSelectedIndex() != -1)" />
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java 2014-04-02 14:40:57 UTC (rev 3922)
@@ -3,7 +3,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2012 Ifremer, Codelutin, Chatellier Eric
+ * Copyright (C) 2012 - 2014 Ifremer, Codelutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -372,12 +372,6 @@
ui.setBeanProperty(property);
ui.setBean(bean);
result = ui;
- } else if (value instanceof MatrixND) {
- MatrixND matrix = (MatrixND)value;
- //MatrixContinuousPanelUI matrixPanel = new MatrixContinuousPanelUI();
- //matrixPanel.init(matrix.clone(), matrix.clone(), matrix.clone(), null);
- //result = matrixPanel;
- result = new ContinuousDistributionPanel(matrix.clone());
} else if (value instanceof TimeUnit) {
TimeUnit timeUnit = (TimeUnit)value;
//DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
@@ -586,12 +580,6 @@
ui.setBeanProperty(property);
ui.setBean(entity);
result = ui;
- } else if (value instanceof MatrixND) {
- MatrixND matrix = (MatrixND)value;
- //MatrixContinuousPanelUI matrixPanel = new MatrixContinuousPanelUI();
- //matrixPanel.init(matrix.clone(), matrix.clone(), matrix.clone(), null);
- //result = matrixPanel;
- result = new ContinuousDistributionPanel(matrix.clone());
} else if (value instanceof TimeUnit) {
TimeUnit timeUnit = (TimeUnit)value;
//DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
@@ -609,24 +597,7 @@
topiaContext.closeContext();
} else {
- if (factorPath.startsWith("parameters.population.")) {
- // la seule facon d'avoir les parametres ici est d'aller
- // les chercher dans les parametres de simulation
- Pattern pattern = Pattern.compile("^parameters\\.population\\.(\\w+)(\\.(.+)?)$");
- Matcher matcher = pattern.matcher(factorPath);
- if (matcher.matches()) {
- String populationName = matcher.group(1);
- if (log.isDebugEnabled()) {
- log.debug("Loading population : " + populationName);
- }
- TopiaContext topiaContext = getTopiaContext(factorWizardUI);
- Population pop = IsisFishDAOHelper.getPopulationDAO(topiaContext).findByName(populationName);
- SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
- MatrixND N = action.getSimulationParameter().getNumberOf(pop);
- result = new ContinuousDistributionPanel(N.clone());
- topiaContext.closeContext();
- }
- } else if (factorPath.startsWith("parameters.rule.")) {
+ if (factorPath.startsWith("parameters.rule.")) {
Pattern pattern = Pattern.compile("^parameters\\.rule\\.(\\d+)\\.parameter\\.(\\w+)(\\..+)?$");
Matcher matcher = pattern.matcher(factorPath);
if (matcher.matches()) {
Modified: branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties
===================================================================
--- branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties 2014-04-02 14:40:57 UTC (rev 3922)
@@ -681,15 +681,19 @@
isisfish.params.toString.fishery=Fishery\: %1$s\n\n
isisfish.params.toString.lib.logger.level=Level of libraries' logger \: %1$s
isisfish.params.toString.number.years=Number of years\: %1$s\n\n
+isisfish.params.toString.objective=
+isisfish.params.toString.optimization=
isisfish.params.toString.plan=Plan\: %1$s
isisfish.params.toString.plan.number=Simulation plan sequence number\: %1$s\n\n
isisfish.params.toString.populations=Populations \:
isisfish.params.toString.rule=Rule\: %1$s
+isisfish.params.toString.script.generatedpresimulation=
isisfish.params.toString.script.logger.level=Level of scripts' logger \: %1$s
isisfish.params.toString.script.presimulation=Script de presimulation
isisfish.params.toString.simul.logger.level=Level of simulator's logger \: %1$s
isisfish.params.toString.simulation.done=Simulation done with \: %1$s
isisfish.params.toString.strategies=Strategies \:
+isisfish.params.toString.use.optimization=
isisfish.params.usePreSimulationScript=Use pre simulation script
isisfish.params.useSimulationPlan=Use simulation plan
isisfish.population.capturability=Capturability
@@ -895,6 +899,8 @@
isisfish.sensitivity.discret=Finite discrete factor
isisfish.sensitivity.discretevaluelabel=Value %d
isisfish.sensitivity.displaysecondpass=Display results
+isisfish.sensitivity.distribution=
+isisfish.sensitivity.distribution.parameters=
isisfish.sensitivity.equation.valid=Valid variable
isisfish.sensitivity.equation.variablename=Varaible name \:
isisfish.sensitivity.export=Export
Modified: branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties
===================================================================
--- branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-04-02 14:40:04 UTC (rev 3921)
+++ branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-04-02 14:40:57 UTC (rev 3922)
@@ -679,15 +679,19 @@
isisfish.params.toString.fishery=Pêcherie\: %1$s\n\n
isisfish.params.toString.lib.logger.level=niveau du logger de librairies \: %1$s
isisfish.params.toString.number.years=Nombre d'années \: %1$s\n\n
+isisfish.params.toString.objective=
+isisfish.params.toString.optimization=
isisfish.params.toString.plan=Plan\: %1$s
isisfish.params.toString.plan.number=Numéro de séquence dans le plan \: %1$s\n\n
isisfish.params.toString.populations=Populations \:
isisfish.params.toString.rule=Règle\: %1$s
+isisfish.params.toString.script.generatedpresimulation=
isisfish.params.toString.script.logger.level=niveau du logger de scripts \: %1$s
isisfish.params.toString.script.presimulation=Script de presimulation
isisfish.params.toString.simul.logger.level=niveau du logger de simulateur \: %1$s
isisfish.params.toString.simulation.done=Simulation réalisée avec \: %1$s
isisfish.params.toString.strategies=Stratégies d'exploitation \:
+isisfish.params.toString.use.optimization=
isisfish.params.usePreSimulationScript=Utiliser un script de pré-simulation
isisfish.params.useSimulationPlan=Utiliser un plan de simulation
isisfish.population.capturability=Capturabilité
@@ -888,11 +892,13 @@
isisfish.selectivity.title=Sélectivité
isisfish.sens.backParameter=Retour aux paramètres
isisfish.sens.title=Plan de simulation
-isisfish.sensitivity.comment=Commentaires
+isisfish.sensitivity.comment=Commentaire \:
isisfish.sensitivity.continue=Facteur continu
isisfish.sensitivity.discret=Facteur discret fini
isisfish.sensitivity.discretevaluelabel=Valeur %d
isisfish.sensitivity.displaysecondpass=Afficher les résultats
+isisfish.sensitivity.distribution=Distribution \:
+isisfish.sensitivity.distribution.parameters=Paramètres de la distribution %s \:
isisfish.sensitivity.equation.valid=Valider la variable
isisfish.sensitivity.equation.variablename=Variable name \:
isisfish.sensitivity.export=Export
1
0
r3921 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish: simulator ui/config ui/input ui/input/variable ui/models ui/models/optimization ui/result ui/simulator ui/vcs ui/widget/filter
by echatellier@users.forge.codelutin.com 02 Apr '14
by echatellier@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: echatellier
Date: 2014-04-02 16:40:04 +0200 (Wed, 02 Apr 2014)
New Revision: 3921
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3921
Log:
Fix compilation
Added:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationSeasonSpacializedUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/SpeciesUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/StrategyMonthInfoUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/TripTypeUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/VesselTypeUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSConfigUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSPassPhraseUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogUI.jaxx
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-02 14:40:04 UTC (rev 3921)
@@ -24,11 +24,6 @@
*/
package fr.ifremer.isisfish.simulator;
-import java.util.List;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.entities.FisheryRegion;
-
/**
* Script d'optimisation.
*
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -24,7 +24,9 @@
-->
<JDialog resizable="false" title="isisfish.simulator.ssh.configuration.title"
layout="{new javax.swing.BoxLayout(this.getContentPane(), javax.swing.BoxLayout.PAGE_AXIS)}">
-
+ <import>
+ static org.nuiton.i18n.I18n.t
+ </import>
<SSHLauncherConfigAction id="action" javaBean="new SSHLauncherConfigAction(this)" />
<Boolean id="connected" javaBean="false" />
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/CellUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -29,6 +29,7 @@
<import>
static org.nuiton.i18n.I18n.n
+ static org.nuiton.i18n.I18n.t
java.awt.event.MouseEvent;
fr.ifremer.isisfish.entities.Cell;
com.bbn.openmap.gui.Tool;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/EffortDescriptionParametersUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -30,6 +30,7 @@
<fr.ifremer.isisfish.entities.EffortDescription id='effortDescription' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
java.util.ArrayList;
fr.ifremer.isisfish.entities.EffortDescription;
fr.ifremer.isisfish.entities.SetOfVessels;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/FisheryRegionUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -29,6 +29,7 @@
<import>
static org.nuiton.i18n.I18n.n
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.FisheryRegion;
fr.ifremer.isisfish.map.CopyMapToClipboardListener;
com.bbn.openmap.gui.Tool;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -27,6 +27,7 @@
<fr.ifremer.isisfish.entities.Gear id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
static org.nuiton.i18n.I18n.n
java.beans.PropertyChangeEvent;
java.beans.PropertyChangeListener;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputOneEquationUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -43,6 +43,7 @@
<Boolean id="autoSaveModification" javaBean="true" />
<import>
+ static org.nuiton.i18n.I18n.t
java.lang.reflect.Method;
java.io.File;
fr.ifremer.isisfish.entities.Formule;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationBasicsUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -28,6 +28,7 @@
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.Species;
fr.ifremer.isisfish.entities.PopulationGroup;
fr.ifremer.isisfish.entities.Population;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -30,6 +30,7 @@
<fr.ifremer.isisfish.entities.PopulationSeasonInfo id='popInfo' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.PopulationSeasonInfo;
fr.ifremer.isisfish.entities.Population;
fr.ifremer.isisfish.ui.input.model.PopulationSeasonInfoComboModel;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationSeasonSpacializedUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationSeasonSpacializedUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationSeasonSpacializedUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -32,6 +32,7 @@
<Boolean id='ageGroupType' javaBean='false'/>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.entities.PopulationSeasonInfo;
fr.ifremer.isisfish.ui.util.ErrorHelper;
org.nuiton.math.matrix.MatrixND;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -28,6 +28,7 @@
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
static org.nuiton.i18n.I18n.n
</import>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/PortUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -28,6 +28,7 @@
<fr.ifremer.isisfish.entities.Port id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.Port
fr.ifremer.isisfish.entities.Cell
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -27,6 +27,7 @@
<fr.ifremer.isisfish.entities.SetOfVessels id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
static org.nuiton.i18n.I18n.n
</import>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/SpeciesUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/SpeciesUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/SpeciesUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -28,6 +28,7 @@
<fr.ifremer.isisfish.entities.Species id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.Species;
java.beans.PropertyChangeEvent;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/StrategyMonthInfoUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/StrategyMonthInfoUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/StrategyMonthInfoUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -40,6 +40,7 @@
<fr.ifremer.isisfish.entities.StrategyMonthInfo id='strategyMonthInfo11' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
org.apache.commons.lang3.StringUtils
java.beans.PropertyChangeEvent
java.beans.PropertyChangeListener
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/TripTypeUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/TripTypeUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/TripTypeUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -28,6 +28,7 @@
<fr.ifremer.isisfish.entities.TripType id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.TripType
fr.ifremer.isisfish.types.TimeUnit
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/VesselTypeUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/VesselTypeUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/VesselTypeUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -28,6 +28,7 @@
<fr.ifremer.isisfish.entities.VesselType id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
static org.nuiton.i18n.I18n.n
fr.ifremer.isisfish.entities.VesselType
fr.ifremer.isisfish.entities.TripType
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ZoneUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -27,6 +27,7 @@
<fr.ifremer.isisfish.entities.Zone id='bean' javaBean='null'/>
<import>
+ static org.nuiton.i18n.I18n.t
static org.nuiton.i18n.I18n.n
</import>
<script><![CDATA[
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -23,7 +23,9 @@
#L%
-->
<fr.ifremer.isisfish.ui.input.InputContentUI superGenericType='org.nuiton.topia.persistence.TopiaEntityContextable'>
-
+ <import>
+ static org.nuiton.i18n.I18n.t
+ </import>
<EntityVariableHandler id="varHandler" />
<!-- bean property -->
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java 2014-04-02 14:40:04 UTC (rev 3921)
@@ -0,0 +1,52 @@
+package fr.ifremer.isisfish.ui.models.optimization;
+
+import static org.nuiton.i18n.I18n.t;
+
+import javax.swing.table.AbstractTableModel;
+
+public class ExportObservationTableModel extends AbstractTableModel {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 7555677813473489539L;
+
+ /** Columns names. */
+ public final static String[] COLUMN_NAMES = {
+ t("isisfish.optimization.export"),
+ t("isisfish.optimization.observation")
+ };
+
+ /*
+ * @see javax.swing.table.TableModel#getColumnCount()
+ */
+ @Override
+ public int getColumnCount() {
+ int result = 2;
+ return result;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getRowCount()
+ */
+ @Override
+ public int getRowCount() {
+ int result = 4;
+ return result;
+ }
+
+ /*
+ * @see javax.swing.table.TableModel#getColumnName(int)
+ */
+ @Override
+ public String getColumnName(int columnIndex) {
+ return COLUMN_NAMES[columnIndex];
+ }
+
+ @Override
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ if (columnIndex == 0) {
+ return "Export " + rowIndex;
+ } else {
+ return "Observation " + rowIndex;
+ }
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java 2014-04-02 14:40:04 UTC (rev 3921)
@@ -0,0 +1,96 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2010 Ifremer, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.isisfish.ui.models.optimization;
+
+import java.awt.Component;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JLabel;
+import javax.swing.JList;
+
+import fr.ifremer.isisfish.simulator.Objective;
+
+/**
+ * Renderer pour la combo des script d'optimisation.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class ObjectiveComboRenderer extends DefaultListCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -4070846632975105788L;
+
+ /** Objective cache. */
+ protected Map<String, Objective> objectiveCache;
+
+ /**
+ * Empty constructor.
+ */
+ public ObjectiveComboRenderer() {
+ objectiveCache = new HashMap<String, Objective>();
+ }
+
+ /*
+ * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
+ */
+ @Override
+ public Component getListCellRendererComponent(JList<?> list, Object value,
+ int index, boolean isSelected, boolean cellHasFocus) {
+
+ // this must be used to have alterned highlight rows and default
+ // selection color
+ JLabel c = (JLabel) super.getListCellRendererComponent(list, value,
+ index, isSelected, cellHasFocus);
+
+ String objectiveName = (String) value;
+ c.setText(objectiveName);
+
+ // c'est tres couteux d'avoir une instance
+ // on les met en cache
+ /*try {
+ Optimization optim = optimizationCache.get(optimizationName);
+ if (optim == null) {
+ SensitivityAnalysisStorage storage = SensitivityAnalysisStorage
+ .getSensitivityAnalysis(optimizationName);
+ optim = storage.getNewInstance();
+ optimizationCache.put(optimizationName, optim);
+ }
+
+ c.setToolTipText(optim.getDescription());
+ } catch (Exception e) {
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", sensitivityName));
+ c.setToolTipText(errorTooltip);
+ }*/
+
+ return c;
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java 2014-04-02 14:40:04 UTC (rev 3921)
@@ -0,0 +1,97 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2010 Ifremer, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.isisfish.ui.models.optimization;
+
+import java.awt.Component;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JLabel;
+import javax.swing.JList;
+
+import fr.ifremer.isisfish.simulator.Optimization;
+
+/**
+ * Renderer pour la combo des script d'optimisation.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class OptimizationComboRenderer extends DefaultListCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -4070846632975105788L;
+
+ /** Optimization cache. */
+ protected Map<String, Optimization> optimizationCache;
+
+ /**
+ * Empty constructor.
+ */
+ public OptimizationComboRenderer() {
+ optimizationCache = new HashMap<String, Optimization>();
+ }
+
+ /*
+ * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
+ */
+ @Override
+ public Component getListCellRendererComponent(JList<?> list, Object value,
+ int index, boolean isSelected, boolean cellHasFocus) {
+
+ // this must be used to have alterned highlight rows and default
+ // selection color
+ JLabel c = (JLabel) super.getListCellRendererComponent(list, value,
+ index, isSelected, cellHasFocus);
+
+ String optimizationName = (String) value;
+ c.setText(optimizationName);
+
+ // c'est tres couteux d'avoir une instance
+ // on les met en cache
+ /*try {
+ Optimization optim = optimizationCache.get(optimizationName);
+ if (optim == null) {
+ SensitivityAnalysisStorage storage = SensitivityAnalysisStorage
+ .getSensitivityAnalysis(optimizationName);
+ optim = storage.getNewInstance();
+ optimizationCache.put(optimizationName, optim);
+ }
+
+ c.setToolTipText(optim.getDescription());
+ } catch (Exception e) {
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", sensitivityName));
+ c.setToolTipText(errorTooltip);
+ }*/
+
+ return c;
+ }
+
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/result/MapRendererUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -23,6 +23,9 @@
#L%
-->
<Table>
+ <import>
+ static org.nuiton.i18n.I18n.t
+ </import>
<row>
<cell fill="horizontal">
<com.bbn.openmap.gui.ToolPanel id="toolPanel" />
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -28,6 +28,7 @@
<Boolean id='changed' javaBean='false'/>
<import>
+ static org.nuiton.i18n.I18n.t
javax.swing.table.DefaultTableModel;
java.util.Map.Entry;
javax.swing.event.ListSelectionListener
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -24,6 +24,7 @@
-->
<Table>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.ui.WelcomePanelUI;
fr.ifremer.isisfish.ui.models.common.GenericListModel;
javax.swing.event.ListSelectionEvent;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-02 14:40:04 UTC (rev 3921)
@@ -39,6 +39,8 @@
import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer;
import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel;
import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
+import fr.ifremer.isisfish.ui.models.optimization.ExportObservationTableModel;
+
import javax.swing.ListModel;
import javax.swing.table.TableModel;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -27,6 +27,7 @@
java.awt.CardLayout
javax.swing.ComboBoxModel
javax.swing.table.DefaultTableModel
+ fr.ifremer.isisfish.ui.models.optimization.ExportObservationTableModel
</import>
<script><![CDATA[
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -29,6 +29,7 @@
<Boolean id='sensitivity' javaBean='false' />
<import>
+ static org.nuiton.i18n.I18n.t
java.text.ParseException;
fr.ifremer.isisfish.datastore.RegionStorage
fr.ifremer.isisfish.datastore.StorageChangeEvent
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -24,6 +24,7 @@
-->
<JPanel layout='{new BorderLayout()}'>
<import>
+ static org.nuiton.i18n.I18n.t
fr.ifremer.isisfish.ui.WelcomePanelUI
fr.ifremer.isisfish.ui.models.common.GenericListModel
javax.swing.event.ListSelectionEvent
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-02 14:40:04 UTC (rev 3921)
@@ -1345,12 +1345,4 @@
public void setOptimization(Optimization optimization) {
param.setOptimization(optimization);
}
-
- public Objective getObjective() {
- return param.getObjective();
- }
-
- public void setObjective(Objective objective) {
- param.setObjective(objective);
- }
}
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSConfigUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSConfigUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSConfigUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -24,6 +24,7 @@
-->
<JDialog>
<import>
+ static org.nuiton.i18n.I18n.t
javax.swing.text.html.HTMLEditorKit;
javax.swing.event.HyperlinkListener;
javax.swing.event.HyperlinkEvent;
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSPassPhraseUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSPassPhraseUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/vcs/VCSPassPhraseUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -24,6 +24,7 @@
-->
<JDialog title='isisfish.vcs.ask.passphrase.title' modal='true'>
<import>
+ static org.nuiton.i18n.I18n.t
java.io.BufferedReader
java.io.InputStreamReader
java.io.IOException
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogUI.jaxx 2014-04-02 14:06:11 UTC (rev 3920)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/filter/FilterDialogUI.jaxx 2014-04-02 14:40:04 UTC (rev 3921)
@@ -24,6 +24,7 @@
-->
<JDialog>
<import>
+ static org.nuiton.i18n.I18n.t
jaxx.runtime.JAXXObject
javax.swing.text.html.HTMLEditorKit
javax.swing.text.html.HTMLDocument
1
0
r3920 - in branches/4.0.1/src/main: java/fr/ifremer/isisfish/datastore java/fr/ifremer/isisfish/simulator resources/templates/script
by bpoussin@users.forge.codelutin.com 02 Apr '14
by bpoussin@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: bpoussin
Date: 2014-04-02 16:06:11 +0200 (Wed, 02 Apr 2014)
New Revision: 3920
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3920
Log:
add necessaryResult and used it for objective and optimization
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java
branches/4.0.1/src/main/resources/templates/script/objective.ftl
branches/4.0.1/src/main/resources/templates/script/optimization.ftl
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java 2014-04-02 13:52:17 UTC (rev 3919)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultDatabaseStorage.java 2014-04-02 14:06:11 UTC (rev 3920)
@@ -56,6 +56,8 @@
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationPlan;
@@ -299,6 +301,22 @@
}
}
}
+
+ // on objective and optimization
+ Objective objective = simulation.getParameter().getObjective();
+ if (objective != null) {
+ for (String resultName : objective.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ Optimization optimization = simulation.getParameter().getOptimization();
+ if (optimization != null) {
+ for (String resultName : optimization.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
log.info("Enabled result: " + enabledResult);
}
boolean result = enabledResult.contains(name);
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2014-04-02 13:52:17 UTC (rev 3919)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultMappedStorage.java 2014-04-02 14:06:11 UTC (rev 3920)
@@ -70,6 +70,8 @@
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationPlan;
@@ -653,6 +655,22 @@
}
}
}
+
+ // on objective and optimization
+ Objective objective = simulation.getParameter().getObjective();
+ if (objective != null) {
+ for (String resultName : objective.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ Optimization optimization = simulation.getParameter().getOptimization();
+ if (optimization != null) {
+ for (String resultName : optimization.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
log.info("Enabled result: " + enabledResult);
}
// par defaut on dit qu'on conserve le resultat
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java 2014-04-02 13:52:17 UTC (rev 3919)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageInMemory.java 2014-04-02 14:06:11 UTC (rev 3920)
@@ -48,6 +48,8 @@
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationPlan;
@@ -184,6 +186,22 @@
}
}
}
+
+ // on objective and optimization
+ Objective objective = simulation.getParameter().getObjective();
+ if (objective != null) {
+ for (String resultName : objective.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ Optimization optimization = simulation.getParameter().getOptimization();
+ if (optimization != null) {
+ for (String resultName : optimization.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
log.info("Enabled result: " + enabledResult);
}
boolean result = enabledResult.contains(name);
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java 2014-04-02 13:52:17 UTC (rev 3919)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Objective.java 2014-04-02 14:06:11 UTC (rev 3920)
@@ -37,6 +37,21 @@
public interface Objective {
/**
+ * Return plan necessary Results.
+ *
+ * @return the necessaryResult name
+ */
+ public String[] getNecessaryResult();
+
+ /**
+ * Return plan description.
+ *
+ * @return plan description
+ * @throws Exception
+ */
+ public String getDescription() throws Exception;
+
+ /**
* Effectue une evaluation entre les exports et les observations.
*
* @param context optimisation context
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-02 13:52:17 UTC (rev 3919)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-02 14:06:11 UTC (rev 3920)
@@ -38,6 +38,21 @@
public interface Optimization {
/**
+ * Return plan necessary Results.
+ *
+ * @return the necessaryResult name
+ */
+ public String[] getNecessaryResult();
+
+ /**
+ * Return plan description.
+ *
+ * @return plan description
+ * @throws Exception
+ */
+ public String getDescription() throws Exception;
+
+ /**
* Appele lors de l'initialisation. La premiere generation doit etre construite
* dans l'init.
*
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2014-04-02 13:52:17 UTC (rev 3919)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2014-04-02 14:06:11 UTC (rev 3920)
@@ -150,7 +150,23 @@
}
}
}
- log.info("Enabled result: " + enabledResult);
+
+ // on objective and optimization
+ Objective objective = param.getObjective();
+ if (objective != null) {
+ for (String resultName : objective.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ Optimization optimization = param.getOptimization();
+ if (optimization != null) {
+ for (String resultName : optimization.getNecessaryResult()) {
+ enabledResult.add(resultName);
+ }
+ }
+
+ log.info("Enabled result: " + enabledResult);
}
boolean result = enabledResult.contains(name);
return result;
Modified: branches/4.0.1/src/main/resources/templates/script/objective.ftl
===================================================================
--- branches/4.0.1/src/main/resources/templates/script/objective.ftl 2014-04-02 13:52:17 UTC (rev 3919)
+++ branches/4.0.1/src/main/resources/templates/script/objective.ftl 2014-04-02 14:06:11 UTC (rev 3920)
@@ -75,7 +75,29 @@
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory.getLog(${name}.class);
+ protected String[] necessaryResult = {
+ // put here all necessary result for this rule
+ // example:
+ // ResultName.MATRIX_BIOMASS,
+ // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
+ };
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
/**
+ * Permet d'afficher a l'utilisateur une aide sur le plan.
+ * @return L''aide ou la description du plan
+ */
+ @Override
+ public String getDescription() throws Exception {
+ // TODO change description
+ return _("TODO ${name} description plan");
+ }
+
+ /**
* Effectue une evaluation entre les exports et les observations.
*
* @param context optimization context
Modified: branches/4.0.1/src/main/resources/templates/script/optimization.ftl
===================================================================
--- branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-02 13:52:17 UTC (rev 3919)
+++ branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-02 14:06:11 UTC (rev 3920)
@@ -75,7 +75,29 @@
/** to use log facility, just put in your code: log.info("..."); */
private static Log log = LogFactory.getLog(${name}.class);
+ protected String[] necessaryResult = {
+ // put here all necessary result for this rule
+ // example:
+ // ResultName.MATRIX_BIOMASS,
+ // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
+ };
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
/**
+ * Permet d'afficher a l'utilisateur une aide sur le plan.
+ * @return L''aide ou la description du plan
+ */
+ @Override
+ public String getDescription() throws Exception {
+ // TODO change description
+ return _("TODO ${name} description plan");
+ }
+
+ /**
* Appele lors de l'initialisation. La premiere generation doit etre construite
* dans l'init via des appels a context.addSimulation(...)
*
@@ -83,7 +105,6 @@
*/
void init(OptimizationContext context);
-
/**
* Génère une nouvelle série de simulation suivant le context d'optimisation.
* Pour cela vous devez appeler context.addSimulation(...) pour ajouter
1
0
r3919 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui: . models sensitivity simulator widget/editor
by bpoussin@users.forge.codelutin.com 02 Apr '14
by bpoussin@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: bpoussin
Date: 2014-04-02 15:52:17 +0200 (Wed, 02 Apr 2014)
New Revision: 3919
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3919
Log:
try to merge Eric UI with mine
Added:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
Removed:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/optimization/
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx 2014-04-02 13:51:13 UTC (rev 3918)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx 2014-04-02 13:52:17 UTC (rev 3919)
@@ -69,6 +69,11 @@
public abstract void setEnabledSimulationPlanTab(boolean selected);
/**
+ * Change optimization tab enabled property.
+ */
+ public abstract void setEnabledOptimizationTab(boolean selected);
+
+ /**
* Open user dialog to selected a parameter file.
* Reload it, and call {@link #refresh()}.
*/
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx 2014-04-02 13:51:13 UTC (rev 3918)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx 2014-04-02 13:52:17 UTC (rev 3919)
@@ -30,7 +30,6 @@
fr.ifremer.isisfish.ui.input.InputSaveVerifier
fr.ifremer.isisfish.ui.sensitivity.SensitivitySaveVerifier
fr.ifremer.isisfish.ui.sensitivity.SensitivityInputHandler
- fr.ifremer.isisfish.ui.optimization.OptimizationHandler
javax.swing.ImageIcon
</import>
@@ -59,10 +58,6 @@
<fr.ifremer.isisfish.ui.sensitivity.SensitivityUI id="sensitivityUI"
constructorParams='new JAXXInitialContext().add(new InputAction()).add(new SensitivitySaveVerifier()).add(new SimulAction()).add(new SensitivityInputHandler()).add(this)' />
</tab>
- <tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/SimulationLauncher.gif"))}'>
- <fr.ifremer.isisfish.ui.optimization.OptimizationUI id="optimizationUI"
- constructorParams='new JAXXInitialContext().add(new InputAction()).add(new SensitivitySaveVerifier()).add(new SimulAction()).add(new OptimizationHandler()).add(this)' />
- </tab>
<tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/calc.gif"))}'>
<fr.ifremer.isisfish.ui.result.ResultUI />
</tab>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2014-04-02 13:51:13 UTC (rev 3918)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2014-04-02 13:52:17 UTC (rev 3919)
@@ -64,8 +64,13 @@
public void setEnabledSimulationPlanTab(boolean selected) {
// no simulation plan in AS
}
-
+
@Override
+ public void setEnabledOptimizationTab(boolean selected) {
+ // no optimisation.in AS
+ }
+
+ @Override
public void refreshFactorTree() {
sensitivityTabUI.setFactorModel();
}
Copied: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java (from rev 3905, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/optimization/OptimizationHandler.java)
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-02 13:52:17 UTC (rev 3919)
@@ -0,0 +1,209 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 - 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import fr.ifremer.isisfish.IsisFishException;
+import fr.ifremer.isisfish.datastore.ExportStorage;
+import fr.ifremer.isisfish.datastore.ObjectiveStorage;
+import fr.ifremer.isisfish.datastore.OptimizationStorage;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
+import fr.ifremer.isisfish.ui.input.InputHandler;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
+import javax.swing.ListModel;
+import javax.swing.table.TableModel;
+
+public class OptimizationHandler extends InputHandler {
+
+ private static final Log log = LogFactory.getLog(OptimizationHandler.class);
+
+ public void init(OptimizationUI view) {
+ }
+
+ /**
+ * Optimization model for combo box.
+ *
+ * @return model
+ */
+ public GenericComboModel<String> getObjectiveComboModel() {
+ List<String> result = new ArrayList<String>();
+ for (String r : ObjectiveStorage.getObjectiveNames()) {
+ // there is some non java files in sensitivity directory
+ if (r.endsWith(".java")) {
+ // Remove .java extention
+ // for example SensitivityStorage.getRuleName(String)
+ result.add(r.substring(0, r.length() - 5));
+ }
+ }
+
+ GenericComboModel<String> model = new GenericComboModel<String>(result);
+ return model;
+ }
+
+ /**
+ * Selection d'une méthode d'optimisation.
+ *
+ * @param view view
+ */
+ public void objectiveChanged(OptimizationUI view) {
+ String objectiveName = (String)view.getFieldObjectiveMethodSelect().getSelectedItem();
+ SimulAction simulAction = view.getContextValue(SimulAction.class);
+
+ // creation new instance only when name change to not lose parameters value
+ Objective objective = simulAction.getObjective();
+ if (objective != null && objective.getClass().getSimpleName().equals(objectiveName)) {
+ objective = simulAction.getObjective();
+ } else {
+ try {
+ ObjectiveStorage objectiveStorage = ObjectiveStorage.getObjective(objectiveName);
+ objective = objectiveStorage.getNewInstance();
+ } catch (IsisFishException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't set optimization", e);
+ }
+ }
+ }
+
+ // can be null for example if analysis can't be compiled
+ if (objective != null) {
+ simulAction.setObjective(objective);
+
+ /*CardLayout factorPanelLayout = (CardLayout)view.getFactorCardinalityPanel().getLayout();
+ if (sensitivityAnalysis.canManageCardinality()) {
+ factorPanelLayout.show(factorCardinalityPanel, "factorCardinalitySupported");
+ } else {
+ factorPanelLayout.show(factorCardinalityPanel, "factorCardinalityNotSupported");
+ }*/
+
+ // update model
+ ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(objective);
+ view.getSimulObjectiveMethodParam().setModel(parametersTableModel);
+ view.getSimulObjectiveMethodParam().getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(objective));
+ view.getSimulObjectiveMethodParam().getColumnModel().getColumn(1).setCellEditor(new ScriptParametersTableCellEditor(objective));
+ }
+ }
+
+
+ /**
+ * Optimization model for combo box.
+ *
+ * @return model
+ */
+ public GenericComboModel<String> getOptimizationComboModel() {
+ List<String> result = new ArrayList<String>();
+ for (String r : OptimizationStorage.getOptimizationNames()) {
+ // there is some non java files in sensitivity directory
+ if (r.endsWith(".java")) {
+ // Remove .java extention
+ // for example SensitivityStorage.getRuleName(String)
+ result.add(r.substring(0, r.length() - 5));
+ }
+ }
+
+ GenericComboModel<String> model = new GenericComboModel<String>(result);
+ return model;
+ }
+
+ /**
+ * Selection d'une méthode d'optimisation.
+ *
+ * @param view view
+ */
+ public void optimizationChanged(OptimizationUI view) {
+ String optimizationName = (String)view.getFieldOptimizationMethodSelect().getSelectedItem();
+ SimulAction simulAction = view.getContextValue(SimulAction.class);
+
+ // creation new instance only when name change to not lose parameters value
+ Optimization optimization = simulAction.getOptimization();
+ if (optimization != null && optimization.getClass().getSimpleName().equals(optimizationName)) {
+ optimization = simulAction.getOptimization();
+ } else {
+ try {
+ OptimizationStorage optimizationStorage = OptimizationStorage.getOptimization(optimizationName);
+ optimization = optimizationStorage.getNewInstance();
+ } catch (IsisFishException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't set optimization", e);
+ }
+ }
+ }
+
+ // can be null for example if analysis can't be compiled
+ if (optimization != null) {
+ simulAction.setOptimization(optimization);
+
+ /*CardLayout factorPanelLayout = (CardLayout)view.getFactorCardinalityPanel().getLayout();
+ if (sensitivityAnalysis.canManageCardinality()) {
+ factorPanelLayout.show(factorCardinalityPanel, "factorCardinalitySupported");
+ } else {
+ factorPanelLayout.show(factorCardinalityPanel, "factorCardinalityNotSupported");
+ }*/
+
+ // update model
+ ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(optimization);
+ view.getSimulOptimizationMethodParam().setModel(parametersTableModel);
+ view.getSimulOptimizationMethodParam().getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(optimization));
+ view.getSimulOptimizationMethodParam().getColumnModel().getColumn(1).setCellEditor(new ScriptParametersTableCellEditor(optimization));
+ }
+ }
+
+
+ /**
+ * Export model for combo box.
+ *
+ * @return model
+ */
+ public ListModel<String> getExportListModel() {
+ List<String> result = new ArrayList<String>();
+ for (String r : ExportStorage.getExportNames()) {
+ // there is some non java files in sensitivity directory
+ if (r.endsWith(".java")) {
+ // Remove .java extention
+ // for example SensitivityStorage.getRuleName(String)
+ result.add(r.substring(0, r.length() - 5));
+ }
+ }
+
+ GenericComboModel<String> model = new GenericComboModel<String>(result);
+ return model;
+ }
+
+ /**
+ * Export model for combo box.
+ *
+ * @return model
+ */
+ public TableModel getExportObservationTableModel() {
+ ExportObservationTableModel model = new ExportObservationTableModel();
+ return model;
+ }
+}
Copied: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx (from rev 3905, branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/optimization/OptimizationMethodUI.jaxx)
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-02 13:52:17 UTC (rev 3919)
@@ -0,0 +1,123 @@
+<!--
+ #%L
+ IsisFish
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2013 - 2014 Ifremer, CodeLutin, Chatellier Eric
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+<Table>
+ <import>
+ java.awt.CardLayout
+ javax.swing.ComboBoxModel
+ javax.swing.table.DefaultTableModel
+ </import>
+
+ <script><![CDATA[
+// protected void $afterCompleteSetup() {
+// handler.init(this);
+// }
+
+ public void refresh() {
+ // Objective names list
+ fieldObjectiveMethodSelect.setModel(handler.getObjectiveComboModel());
+ // Optimization names list
+ fieldOptimizationMethodSelect.setModel(handler.getOptimizationComboModel());
+ }
+
+
+ ]]></script>
+ <OptimizationHandler id="handler" javaBean='new OptimizationHandler()'/>
+
+ <!-- Objective choice and param -->
+ <row>
+ <cell fill="horizontal">
+ <JLabel text="isisfish.objective.select"/>
+ </cell>
+ <cell fill="horizontal" weightx="1.0">
+ <JComboBox id="fieldObjectiveMethodSelect" model='{handler.getObjectiveComboModel()}'
+ onActionPerformed='handler.objectiveChanged(this)'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns="2" fill="both" weightx="1.0" weighty="1.0">
+ <JScrollPane>
+ <JTable id="simulObjectiveMethodParam" rowHeight="24" />
+ </JScrollPane>
+ </cell>
+ </row>
+
+ <!-- Optimisation choice and param -->
+ <row>
+ <cell fill="horizontal">
+ <JLabel text="isisfish.optimization.select"/>
+ </cell>
+ <cell fill="horizontal" weightx="1.0">
+ <JComboBox id="fieldOptimizationMethodSelect" model='{handler.getOptimizationComboModel()}'
+ onActionPerformed='handler.optimizationChanged(this)'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns="2" fill="both" weightx="1.0" weighty="1.0">
+ <JScrollPane>
+ <JTable id="simulOptimizationMethodParam" rowHeight="24" />
+ </JScrollPane>
+ </cell>
+ </row>
+
+ <row>
+ <cell fill="both" columns='3'>
+ <JLabel text="isisfish.optimization.exports" />
+ </cell>
+ </row>
+ <row>
+ <cell fill="both" weightx="0.2" weighty="1.0">
+ <JScrollPane>
+ <JList id="fieldExportList" genericType="String"
+ model='{handler.getExportListModel()}'
+ cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}' />
+ </JScrollPane>
+ </cell>
+ <cell fill="horizontal" weighty="1.0">
+ <Table>
+ <row>
+ <cell fill="horizontal">
+ <JButton text="isisfish.common.add" />
+ </cell>
+ </row>
+ <row>
+ <cell fill="horizontal">
+ <JButton text="isisfish.common.remove" />
+ </cell>
+ </row>
+ <row>
+ <cell fill="horizontal">
+ <JButton text="isisfish.common.clear" />
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ <cell fill="both" weightx="1.0" weighty="1.0">
+ <JScrollPane>
+ <JTable id="exportObservationTable" model="{handler.getExportObservationTableModel()}" rowHeight='24' />
+ </JScrollPane>
+ </cell>
+ </row>
+
+</Table>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2014-04-02 13:51:13 UTC (rev 3918)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2014-04-02 13:52:17 UTC (rev 3919)
@@ -136,6 +136,11 @@
// simulation plan
fieldSimulUseSimulationPlan.setSelected(simulAction.getSimulationParameter().getUseSimulationPlan());
getParentContainer(SimulUI.class).getSensUI().refresh();
+
+ // optimization
+// fieldSimulUseOptimization.setSelected(simulAction.getSimulationParameter().getUseOptimization());
+// getParentContainer(OptimizationUI.class).getOptimizationUI().refresh();
+
}
}
@@ -226,6 +231,12 @@
simulationUI.setEnabledSimulationPlanTab(fieldSimulUseSimulationPlan.isSelected());
}
+protected void enableOptimization() {
+ simulAction.getSimulationParameter().setUseOptimization(fieldSimulUseOptimization.isSelected());
+ SimulationUI simulationUI = getParentContainer(SimulationUI.class);
+ simulationUI.setEnabledOptimizationTab(fieldSimulUseOptimization.isSelected());
+}
+
protected void setListSimulParamsStrategiesItems() {
List<Strategy> strategiesSelected = simulAction.getSimulationParameter().getStrategies();
DefaultListModel listSimulParamsStrategiesModel = new DefaultListModel();
@@ -497,6 +508,14 @@
enabled="{getRegionStorage() != null}" />
</cell>
<cell fill="horizontal" weightx="1">
+ <JCheckBox text="isisfish.params.useOptimization"
+ id="fieldSimulUseOptimization"
+ selected='{simulAction.getSimulationParameter().getUseOptimization()}'
+ visible='{!isSensitivity()}'
+ onItemStateChanged='enableOptimization()'
+ enabled="{getRegionStorage() != null}" />
+ </cell>
+ <cell fill="horizontal" weightx="1">
<JCheckBox text="isisfish.params.sensitivityOnlyKeepFirstResult"
id="sensitivityOnlyKeepFirstResultCheckBox"
selected='{simulAction.getSimulationParameter().isSensitivityAnalysisOnlyKeepFirst()}'
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-02 13:51:13 UTC (rev 3918)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-02 13:52:17 UTC (rev 3919)
@@ -1330,6 +1330,14 @@
}*/
}
+ public Objective getObjective() {
+ return param.getObjective();
+ }
+
+ public void setObjective(Objective objective) {
+ param.setObjective(objective);
+ }
+
public Optimization getOptimization() {
return param.getOptimization();
}
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2014-04-02 13:51:13 UTC (rev 3918)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2014-04-02 13:52:17 UTC (rev 3919)
@@ -30,6 +30,7 @@
paramsUI.refresh();
preScriptUI.refresh();
sensUI.refresh();
+ optimizationUI.refresh();
exportUI.refresh();
resultChoiceUI.refresh();
advancedParamsUI.refresh();
@@ -63,6 +64,14 @@
bodyTabbedPane.setSelectedIndex(2);
}
}
+
+ @Override
+ public void setEnabledOptimizationTab(boolean selected) {
+ bodyTabbedPane.setEnabledAt(3, selected);
+ if (selected) {
+ bodyTabbedPane.setSelectedIndex(3);
+ }
+ }
]]></script>
<JTabbedPane id="bodyTabbedPane">
<tab title='isisfish.params.title'>
@@ -74,6 +83,9 @@
<tab title='isisfish.sens.title' enabled='false'>
<SensUI id="sensUI" constructorParams='this' />
</tab>
+ <tab title='isisfish.optimization.title' enabled='false'>
+ <OptimizationUI id="optimizationUI" constructorParams='this' />
+ </tab>
<tab title='isisfish.export.title'>
<ExportUI id="exportUI" constructorParams='this' />
</tab>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java 2014-04-02 13:51:13 UTC (rev 3918)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java 2014-04-02 13:52:17 UTC (rev 3919)
@@ -47,6 +47,7 @@
import org.nuiton.topia.persistence.TopiaEntity;
import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.types.TimeStep;
import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.util.ConverterUtil;
@@ -91,6 +92,8 @@
Double(double.class, Double.class),
/** for a simple boolean. */
Boolean(boolean.class, Boolean.class),
+ /** for a Factor. */
+ Factor(Factor.class),
/** for a file location. */
File(java.io.File.class),
/** for a simple String. */
@@ -191,6 +194,9 @@
case Mounth:
editor = MonthComponent.createMounthCombo(((Month) value).getMonthNumber());
break;
+ case Factor:
+ // FIXME poussin 20140402 creer un selecteur de factor
+ // break;
case File:
// break;
default:
@@ -274,6 +280,9 @@
case TimeStep:
result = new TimeStep(((StepComponent) editor).getSelectedValue());
break;
+ case Factor:
+ // FIXME poussin 20140402 get value from factor editor
+ // break;
case File:
//TODO
// result = getTextFieldValue(editor);break;
1
0
r3918 - branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/launcher
by echatellier@users.forge.codelutin.com 02 Apr '14
by echatellier@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: echatellier
Date: 2014-04-02 15:51:13 +0200 (Wed, 02 Apr 2014)
New Revision: 3918
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3918
Log:
Fix test compilation
Modified:
branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java
Modified: branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java
===================================================================
--- branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2014-04-02 13:38:32 UTC (rev 3917)
+++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2014-04-02 13:51:13 UTC (rev 3918)
@@ -62,6 +62,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.Distribution;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorHelper;
import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysisRandomMock;
@@ -251,9 +252,8 @@
List<Factor> factors = new ArrayList<Factor>();
factors.add(factor);
scenario.setFactors(factors);
-
- SimulationService service = SimulationService.getService();
- String scriptContent = service.generatePreScript(scenario);
+
+ String scriptContent = FactorHelper.generatePreScript(scenario);
Assert.assertTrue(scriptContent.contains("java.lang.Double"));
Assert.assertTrue(scriptContent.contains("db.findByTopiaId(\"fr.ifremer.entities.Cell#1234567890\")"));
Assert.assertTrue(scriptContent.contains("BeanUtils.setProperty(entity0, \"length\""));
@@ -312,8 +312,7 @@
factors.add(factor2);
scenario.setFactors(factors);
- SimulationService service = SimulationService.getService();
- String scriptContent = service.generatePreScript(scenario);
+ String scriptContent = FactorHelper.generatePreScript(scenario);
//log.info("Script = " + scriptContent);
Assert.assertTrue(scriptContent.contains("org.nuiton.math.matrix.MatrixNDImpl "));
Assert.assertTrue(scriptContent.contains("db.findByTopiaId(\"org.nuiton.math.matrix.MatrixND#563456293453#2.456347646\");"));
@@ -345,8 +344,7 @@
factors.add(factorEquation);
scenario.setFactors(factors);
- SimulationService service = SimulationService.getService();
- String scriptContent = service.generatePreScript(scenario);
+ String scriptContent = FactorHelper.generatePreScript(scenario);
//log.info("Script = " + scriptContent);
// le nom de la valeur de la variable n'apparait pas "en elle meme"
@@ -403,8 +401,7 @@
scenario1.setFactors(factors);
// generate prescript for that wonderfull scenario
- SimulationService service = SimulationService.getService();
- String preScriptContent = service.generatePreScript(scenario1);
+ String preScriptContent = FactorHelper.generatePreScript(scenario1);
//log.info("Script = " + preScriptContent);
Assert.assertTrue(preScriptContent.contains("params.setProperty(\"population.xxx.number\""));
@@ -437,8 +434,7 @@
scenario1.setFactors(factors);
// generate prescript for that wonderfull scenario
- SimulationService service = SimulationService.getService();
- String preScriptContent = service.generatePreScript(scenario1);
+ String preScriptContent = FactorHelper.generatePreScript(scenario1);
log.info("Script = " + preScriptContent);
Assert.assertTrue(preScriptContent.contains("params.setProperty(\"rule.0.parameter.tacInTons\",\"42.0\");"));
@@ -515,8 +511,7 @@
scenario1.addFactor(group2);
// generate prescript for that wonderfull scenario
- SimulationService service = SimulationService.getService();
- String preScriptContent = service.generatePreScript(scenario1);
+ String preScriptContent = FactorHelper.generatePreScript(scenario1);
//log.info("Script = " + preScriptContent);
Assert.assertTrue(preScriptContent.contains("/* factor group : myContinuousGroup */"));
@@ -555,8 +550,7 @@
scenario1.addFactor(factor1);
// generate prescript for that wonderfull scenario
- SimulationService service = SimulationService.getService();
- String preScriptContent = service.generatePreScript(scenario1);
+ String preScriptContent = FactorHelper.generatePreScript(scenario1);
log.info("Script = " + preScriptContent);
Assert.assertTrue(preScriptContent.contains("beanUtils.convert(\"String myValue=\\\"test2\\\""));
1
0
r3917 - branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher
by echatellier@users.forge.codelutin.com 02 Apr '14
by echatellier@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: echatellier
Date: 2014-04-02 15:38:32 +0200 (Wed, 02 Apr 2014)
New Revision: 3917
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3917
Log:
Add fixme
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2014-04-02 13:25:29 UTC (rev 3916)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2014-04-02 13:38:32 UTC (rev 3917)
@@ -397,6 +397,8 @@
// try do download md5 control file
// MD5 + SIMULATION zip file
+ // FIXME echatellier 20140402 check not yet existing md5ControlFile and simulation ended
+ // simulation result will never be downloaded
try {
File md5ControlFile = downloadResultsMD5File(sshSession, control.getId());
1
0
r3916 - in branches/4.0.1/src/main: java/fr/ifremer/isisfish/simulator java/fr/ifremer/isisfish/simulator/launcher java/fr/ifremer/isisfish/simulator/sensitivity resources/templates/script
by bpoussin@users.forge.codelutin.com 02 Apr '14
by bpoussin@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: bpoussin
Date: 2014-04-02 15:25:29 +0200 (Wed, 02 Apr 2014)
New Revision: 3916
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3916
Log:
- add all code needed for optimization plan, but not the ui
this code doesn't work for this moment (Executor thread number probleme, directory probleme)
Added:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
branches/4.0.1/src/main/resources/templates/script/optimization.ftl
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/Optimization.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -38,12 +38,24 @@
public interface Optimization {
/**
+ * Appele lors de l'initialisation. La premiere generation doit etre construite
+ * dans l'init.
+ *
+ * @param context
+ */
+ void init(OptimizationContext context);
+
+ /**
* Génère une nouvelle série de simulation suivant le context d'optimisation.
*
* @param context context
- * @param region region
- * @return simulations serie
*/
- List<SimulationStorage> getNextGeneration(OptimizationContext context, FisheryRegion region);
+ void getNextSimulation(OptimizationContext context);
+ /**
+ * Cette methode est appelee lorsqu'il n'y a plus de simulation a faire
+ * (init ou getNextSimulation n'ont pas fait appel a context.addSimulation)
+ * @param context
+ */
+ void endSimulation(OptimizationContext context);
}
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/OptimizationContext.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -24,40 +24,118 @@
*/
package fr.ifremer.isisfish.simulator;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorHelper;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.entities.FisheryRegion;
-
/**
* Context utilisé pour gérer les différentes simulation lancées par un script d'optimisation.
*
* @author Eric Chatellier
* @since 4.3.0.0
*/
-public class OptimizationContext {
+public class OptimizationContext extends SimulationPlanContext {
- public FisheryRegion copyRegion(FisheryRegion region) {
- return null;
+ protected SimulationJob job;
+
+ protected List<List<SimulationStorage>> generations =
+ new ArrayList<List<SimulationStorage>>();
+
+ /** Simulation to do during next generation simulation */
+ protected List<SimulationStorage> nextSimulations;
+
+ protected int currentGeneration = 0;
+ protected int simNumber = 0;
+
+ public OptimizationContext(String id, SimulationParameter param, SimulationJob job) {
+ super(id, param);
+ this.job = job;
}
- public void createSimulation(FisheryRegion region) {
-
+ public List<SimulationStorage> getNextSimulations() {
+ if (nextSimulations == null) {
+ nextSimulations = new ArrayList<SimulationStorage>();
+ }
+ return nextSimulations;
}
- public int getCurrentGenerationNumber() {
- return 0;
+ /**
+ * Get simulation to do, put it generations and increment currentGeneration
+ * This method must be call be Simulator when it want to get next simulations
+ * to do.
+ * @return null or empty collection if no more simulation to do
+ */
+ public List<SimulationStorage> clearNextSimulation() {
+ List<SimulationStorage> result = nextSimulations;
+
+ if (CollectionUtils.isNotEmpty(result)) {
+ generations.add(result);
+ nextSimulations = null;
+ currentGeneration++;
+ }
+
+ return result;
}
-
- public List<SimulationStorage> getLastGeneration() {
- return null;
+
+ public List<SimulationStorage> getLastSimulations() {
+ List<SimulationStorage> result = getGeneration(generations.size() - 1);
+ return result;
}
+ public SimulationStorage getNewSimulation() {
+ try {
+ String simId = id + "_" + simNumber;
+ SimulationParameter childParam = param.copy();
+ childParam.setSimulationPlanNumber(simNumber);
+ SimulationStorage result = SimulationStorage.importAndRenameZip(job.getItem().getSimulationZip(), simId);
+
+ simNumber++;
+
+ return result;
+ } catch (Exception eee) {
+ throw new IsisFishRuntimeException("can't create new simulation", eee);
+ }
+ }
+
+ public void addSimulation(SimulationStorage s) {
+ getNextSimulations().add(s);
+ }
+
+ public void addSimulation(Factor ... factors) {
+ SimulationStorage s = getNewSimulation();
+
+ Collection<Factor> colFactors = new ArrayList<Factor>();
+ Collections.addAll(colFactors, factors);
+ String script = FactorHelper.generatePreScript(colFactors);
+
+ SimulationParameter childParam = s.getParameter();
+ childParam.setGeneratedPreScript(script);
+
+ addSimulation(s);
+ }
+
+ public int getCurrentGeneration() {
+ return currentGeneration;
+ }
+
+ public int getSimulationNumber() {
+ return simNumber;
+ }
+
public List<SimulationStorage> getGeneration(int n) {
- return null;
+ List<SimulationStorage> result = null;
+ if (n >= 0 && CollectionUtils.isNotEmpty(generations)) {
+ result = generations.get(n);
+ }
+
+ return result;
}
- public int getGenerationNumber() {
- return 0;
- }
}
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -349,7 +349,7 @@
/**
* Set simulation optimization.
- *
+ *
* @param optimization optimization
*/
public void setOptimization(Optimization optimization);
@@ -433,12 +433,26 @@
/**
* Set pre script content.
- *
+ *
* @param preScript prescript content
*/
public void setPreScript(String preScript);
/**
+ * Generated pre script is internal script generated by isis. This script
+ * must be executed before user defined preScript
+ */
+ public String getGeneratedPreScript();
+
+ /**
+ * Generated pre script is internal script generated by isis. This script
+ * must be executed before user defined preScript
+ *
+ * @param preScript prescript content
+ */
+ public void setGeneratedPreScript(String preScript);
+
+ /**
* Get region name.
*
* @return region name
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -584,10 +584,29 @@
SimulationParameter param = getParam();
param.setPreScript(preScript);
store(param);
-
+
}
/*
+ * @see fr.ifremer.isisfish.simulator.SimulationParameter#getGeneratedPreScript()
+ */
+ @Override
+ public String getGeneratedPreScript() {
+ SimulationParameter param = getParam();
+ return param.getGeneratedPreScript();
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.simulator.SimulationParameter#setGeneratedPreScript(java.lang.String)
+ */
+ @Override
+ public void setGeneratedPreScript(String preScript) {
+ SimulationParameter param = getParam();
+ param.setGeneratedPreScript(preScript);
+ store(param);
+ }
+
+ /*
* @see fr.ifremer.isisfish.simulator.SimulationParameter#getRegionName()
*/
@Override
@@ -916,6 +935,6 @@
param.setObjective(objective);
store(param);
}
+
-
}
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -140,6 +140,9 @@
/** Le script de pre simulation a utiliser. */
protected String preScript;
+ /** Le script de pre simulation defini par Isis */
+ protected String generatedPreScript;
+
/** Utilisation du plan de simulation. */
protected Boolean useSimulationPlan;
@@ -660,9 +663,9 @@
if (useOptimization == null) {
if (propertiesParameters != null) {
- useOptimization = Boolean.valueOf(propertiesParameters.getProperty("useOptimization", "true"));
+ useOptimization = Boolean.valueOf(propertiesParameters.getProperty("useOptimization", "false"));
} else {
- useOptimization = Boolean.TRUE;
+ useOptimization = Boolean.FALSE;
}
}
return useOptimization.booleanValue();
@@ -876,7 +879,7 @@
if (!StringUtils.isEmpty(optimizationName)) {
try {
OptimizationStorage optimizationStorage = OptimizationStorage.getOptimization(optimizationName);
- optimizationName = optimizationStorage.getNewInstance();
+ optimization = optimizationStorage.getNewInstance();
// 0 = only single sensitivity
StorageHelper.populateStorageParams(0, getRegion().getStorage(), optimization,
propertiesParameters, "optimization");
@@ -1074,6 +1077,26 @@
this.preScript = preScript;
}
+ @Override
+ public String getGeneratedPreScript() {
+
+ if (generatedPreScript == null) {
+
+ if (propertiesParameters != null) {
+ generatedPreScript = propertiesParameters.getProperty("generatedPreScript", "");
+ } else {
+ generatedPreScript = "";
+ }
+ }
+
+ return generatedPreScript;
+ }
+
+ @Override
+ public void setGeneratedPreScript(String preScript) {
+ this.generatedPreScript = preScript;
+ }
+
/*
* @see fr.ifremer.isisfish.simulator.SimulationParameter#getRegionName()
*/
@@ -1408,7 +1431,9 @@
result.useStatistic = getUseStatistic();
result.usePreScript = getUsePreScript();
result.preScript = getPreScript();
+ result.generatedPreScript = getGeneratedPreScript();
result.useSimulationPlan = getUseSimulationPlan();
+ result.useOptimization = getUseOptimization();
result.simulationPlanNumber = getSimulationPlanNumber();
if (exportNames != null) {
result.exportNames = new LinkedList<String>(exportNames);
@@ -1425,6 +1450,12 @@
if (simulationPlans != null) {
result.simulationPlans = new LinkedList<SimulationPlan>(simulationPlans);
}
+ if (objective != null) {
+ result.objective = objective;
+ }
+ if (optimization != null) {
+ result.optimization = optimization;
+ }
if (resultEnabled != null) {
result.resultEnabled = new LinkedList<String>(resultEnabled);
}
@@ -1475,6 +1506,11 @@
getSimulationPlanNumber()));
}
+ if (getUseOptimization()) {
+ result.append(t("isisfish.params.toString.use.optimization",
+ getUseOptimization()));
+ }
+
RegionStorage region = getRegion();
result.append(t("isisfish.params.toString.fishery", region.getName()));
result.append(t("isisfish.params.toString.number.years",
@@ -1521,7 +1557,7 @@
// simulation plans
for (SimulationPlan plan : getSimulationPlans()) {
- String name = RuleStorage.getName(plan);
+ String name = SimulationPlanStorage.getName(plan);
String param = "";
try {
param = SimulationPlanStorage.getParamAsString(plan);
@@ -1537,7 +1573,46 @@
result.append('\n');
}
+
+ if (objective != null) {
+ String name = ObjectiveStorage.getName(objective);
+ String param = "";
+ try {
+ param = ObjectiveStorage.getParamAsString(objective);
+ } catch (IsisFishException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't convert objective parameter to string for "
+ + name, eee);
+ }
+ }
+ result.append(t("isisfish.params.toString.objective", name));
+ result.append('\n');
+ result.append(param);
+ result.append('\n');
+ }
+
+ if (optimization != null) {
+ String name = OptimizationStorage.getName(optimization);
+ String param = "";
+ try {
+ param = OptimizationStorage.getParamAsString(optimization);
+ } catch (IsisFishException eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't convert optimization parameter to string for "
+ + name, eee);
+ }
+ }
+ result.append(t("isisfish.params.toString.optimization", name));
+ result.append('\n');
+ result.append(param);
+ result.append('\n');
+ }
+
result.append('\n');
+ result.append(t("isisfish.params.toString.script.generatedpresimulation"))
+ .append(":\n");
+ result.append(getGeneratedPreScript());
+ result.append('\n');
result.append(t("isisfish.params.toString.script.presimulation"))
.append(":\n");
result.append(getPreScript());
@@ -1654,6 +1729,46 @@
}
}
+ // objective
+ if (objective != null) {
+ String objectiveName = ObjectiveStorage.getName(objective);
+ Properties objectiveProp = StorageHelper.getParamsAsProperties(0,
+ getRegion().getStorage(), objective, "objective");
+ result.putAll(objectiveProp);
+ result.setProperty("objective", objectiveName);
+ } else {
+ if (propertiesParameters != null
+ && propertiesParameters.containsKey("objective")) {
+ result.setProperty("objective", propertiesParameters
+ .getProperty("objective"));
+ for (String key : propertiesParameters.stringPropertyNames()) {
+ if (key.startsWith("objective.")) {
+ result.setProperty(key, propertiesParameters.getProperty(key));
+ }
+ }
+ }
+ }
+
+ // optimization
+ if (optimization != null) {
+ String optimizationName = ObjectiveStorage.getName(optimization);
+ Properties optimizationProp = StorageHelper.getParamsAsProperties(0,
+ getRegion().getStorage(), optimization, "optimization");
+ result.putAll(optimizationProp);
+ result.setProperty("optimization", optimizationName);
+ } else {
+ if (propertiesParameters != null
+ && propertiesParameters.containsKey("optimization")) {
+ result.setProperty("optimization", propertiesParameters
+ .getProperty("optimization"));
+ for (String key : propertiesParameters.stringPropertyNames()) {
+ if (key.startsWith("optimization.")) {
+ result.setProperty(key, propertiesParameters.getProperty(key));
+ }
+ }
+ }
+ }
+
// export names
String exportList = "";
for (String export : getExportNames()) {
@@ -1717,10 +1832,12 @@
// sensitivity params
result.setProperty("sensitivityAnalysisOnlyKeepFirst", String.valueOf(isSensitivityAnalysisOnlyKeepFirst()));
+ result.setProperty("generatedPreScript", getGeneratedPreScript());
result.setProperty("usePreScript", String.valueOf(getUsePreScript()));
result.setProperty("preScript", getPreScript());
result.setProperty("useSimulationPlan", String.valueOf(getUseSimulationPlan()));
result.setProperty("simulationPlanNumber", String.valueOf(getSimulationPlanNumber()));
+ result.setProperty("useOptimization", String.valueOf(getUseOptimization()));
String resultList = "";
for (String r : getResultEnabled()) {
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -66,18 +66,29 @@
SimulationStorage simulation = context.getSimulationStorage();
SimulationParameter parameters = simulation.getParameter();
+
+ String generatedPreScript = parameters.getGeneratedPreScript();
String presimulationScript = parameters.getPreScript();
- if ((parameters.getUsePreScript() || parameters.getUseSimulationPlan())
- && StringUtils.isNotBlank(presimulationScript)) {
+
+ if (StringUtils.isNotBlank(generatedPreScript) ||
+ (parameters.getUsePreScript() && StringUtils.isNotBlank(presimulationScript))) {
// utilisation de la db en memoire que l'on commitera
TopiaContext tx = context.getDB();
Map<String, Object> args = new HashMap<>();
args.put("context", context);
- EvaluatorHelper.evaluate(SimulationPreScript.class.getPackage().getName(),
- "PreScript", SimulationPreScript.class, presimulationScript, args);
+ if (StringUtils.isNotBlank(generatedPreScript)) {
+ EvaluatorHelper.evaluate(SimulationPreScript.class.getPackage().getName(),
+ "GeneratedPreScript", SimulationPreScript.class, generatedPreScript, args);
+ }
+
+ if (parameters.getUsePreScript() && StringUtils.isNotBlank(presimulationScript)) {
+ EvaluatorHelper.evaluate(SimulationPreScript.class.getPackage().getName(),
+ "PreScript", SimulationPreScript.class, presimulationScript, args);
+ }
+
tx.commitTransaction();
}
} catch (Exception eee) {
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -0,0 +1,143 @@
+package fr.ifremer.isisfish.simulator.launcher;
+
+
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.simulator.Optimization;
+import fr.ifremer.isisfish.simulator.OptimizationContext;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.launcher.SimulationItem;
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import java.io.File;
+import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.nuiton.util.FileUtil;
+
+/**
+ * Permet de generer l'enchainement des simulations d'optimisation.
+ * Gere les differentes generation (plusieurs simulations par generation)
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class OptimizationPrepareJob implements Runnable, SimulationJob.PostAction {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private final Log log = LogFactory.getLog(OptimizationPrepareJob.class);
+
+ protected SimulationService simulationService;
+ protected OptimizationContext optimizationContext;
+ protected SimulationJob job;
+ protected String id;
+ protected SimulationControl control;
+ protected SimulationParameter param;
+ protected Objective objective;
+ protected Optimization optimization;
+
+ /** nombre de simulation faite ou en cours */
+ protected int simNumber = 0;
+ /** nombre de simulation faite */
+ protected int done = 0;
+ /** true if exception occure in one simulation */
+ protected boolean exception = false;
+
+ public OptimizationPrepareJob(SimulationService simulationService, SimulationJob job) {
+ this.simulationService = simulationService;
+ this.job = job;
+
+ id = job.getItem().getControl().getId();
+ control = job.getItem().getControl();
+ param = job.getItem().getParameter();
+
+ objective = param.getObjective();
+ optimization = param.getOptimization();
+ optimizationContext = new OptimizationContext(id, param, job);
+ }
+
+ @Override
+ public void run() {
+ try {
+ optimization.init(optimizationContext);
+
+ List<SimulationStorage> sims = optimizationContext.clearNextSimulation();
+ while (!exception && !control.isStopSimulationRequest()
+ && CollectionUtils.isNotEmpty(sims)) {
+ for (SimulationStorage s : sims) {
+ if (!exception && !control.isStopSimulationRequest()) {
+ String simId = s.getName();
+
+ File zip = s.createZip();
+ SimulationParameter childParam = s.getParameter();
+ int childNumber = childParam.getSimulationPlanNumber();
+ SimulationControl childControl = new SimulationControl(simId);
+ SimulationItem item = new SimulationItem(childControl, childParam);
+ item.setStandaloneSimulation(false);
+ item.setSimulationNumber(childNumber);
+ item.setSimulationZip(zip);
+
+ SimulationJob subJob = new SimulationJob(simulationService, job, item, job.getPriority());
+ subJob.setLauncher(job.getLauncher());
+
+ subJob.addPostAction(this);
+ simulationService.submitSubJob(subJob);
+
+ simNumber++;
+ }
+ }
+
+ // wait until wall simulation for this generation are done
+ while(!exception && !control.isStopSimulationRequest()
+ && simNumber > done) {
+ Thread.sleep(2000);
+ }
+
+ if (!exception && !control.isStopSimulationRequest()) {
+ optimization.getNextSimulation(optimizationContext);
+ sims = optimizationContext.clearNextSimulation();
+ }
+ }
+
+ if (!exception && !control.isStopSimulationRequest()) {
+ optimization.endSimulation(optimizationContext);
+ }
+
+ // on enleve le master plan des simulations en cours, vu que
+ // toutes les simu sont terminees
+ simulationService.fireStopEvent(this.job);
+ } catch (Exception eee) {
+ // add manual log
+ // we are in a thread, IsisFishRuntimeException is displayed
+ // outside a log
+ if (log.isErrorEnabled()) {
+ log.error(I18n._("isisfish.error.evaluate.optimization.script"), eee);
+ }
+ throw new IsisFishRuntimeException(I18n._("isisfish.error.evaluate.optimization.script"), eee);
+ }
+
+ }
+
+ @Override
+ public void finished(SimulationJob job, SimulationStorage sim) {
+ objective.eval(optimizationContext, null, null); // FIXME mettre les bons arguments
+ done++;
+ }
+
+ @Override
+ public void exception(SimulationJob job, Throwable eee) {
+ // il y a une simulation d'echoue, on ne fait pas les suivantes
+ // cela n'impacte pas les plan independant puisque toutes les
+ // simulation on deja ete generee
+ exception = true;
+ }
+
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationJob.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -215,7 +215,7 @@
&& param.getUseSimulationPlan() && !param.isIndependentPlan()) {
// on est sur un plan de simulation dependant, il faut generer les
// simulation les unes apres les autres
- SimulationService.PrepareSimulationJob i = new SimulationService.PrepareSimulationJob(
+ SimulationPlanPrepareJob i = new SimulationPlanPrepareJob(
simulationService, this);
while (!control.isStopSimulationRequest() && i.hasNext()) {
log.info(t("Generate next simulation"));
@@ -261,6 +261,12 @@
}
}
+ } else if (!onlyCheckControl && getParentJob() == null
+ && param.getUseOptimization()) {
+ // on est sur une optimisation, il faut faire toutes les simulations demandees
+ OptimizationPrepareJob optiPreJob =
+ new OptimizationPrepareJob(simulationService, this);
+ optiPreJob.run();
} else {
// on est sur une simple simulation, ou le resultat d'un plan
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -0,0 +1,253 @@
+package fr.ifremer.isisfish.simulator.launcher;
+
+
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.SimulationPlan;
+import fr.ifremer.isisfish.simulator.SimulationPlanContext;
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.nuiton.util.FileUtil;
+
+/**
+ * Permet de genere les sous simulations d'un plan de simulation. Pour les
+ * plan independant, on l'utilise en Runnable pour genere tous les plans
+ * possible et les soumettre a la queue. Pour les plans dependant
+ * on l'utilise seulement comme iterator. La methode afterSimulation des plans
+ * est appelee automatiquement a la fin de la simulation grace au mecanisme
+ * de PostAction sur les {@link SimulationJob}.
+ */
+public class SimulationPlanPrepareJob implements Runnable, Iterator<SimulationJob>, SimulationJob.PostAction {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static final Log log = LogFactory.getLog(SimulationPlanPrepareJob.class);
+
+ protected SimulationService simulationService;
+ protected SimulationPlanContext planContext;
+ protected SimulationJob job;
+ protected SimulationJob nextJob;
+ protected boolean doNext = true;
+ protected String id;
+ protected SimulationControl control;
+ protected SimulationParameter param;
+ protected int done = 0;
+ protected List<SimulationPlan> simulationPlan;
+
+ public SimulationPlanPrepareJob(SimulationService simulationService, SimulationJob job) {
+ this.simulationService = simulationService;
+ this.job = job;
+ id = job.getItem().getControl().getId();
+ control = job.getItem().getControl();
+ param = job.getItem().getParameter();
+ // take a copy of simulation paln list
+ // because they a freed during simulation (soft reference)
+ // is there is not enought memory available
+ simulationPlan = param.getSimulationPlans();
+ this.planContext = new SimulationPlanContext(control.getId(), param);
+ try {
+ // appel de init sur chaque plan
+ for (SimulationPlan plan : simulationPlan) {
+ plan.init(planContext);
+ }
+ } catch (Exception eee) {
+ // add manual log
+ // we are in a thread, IsisFishRuntimeException is displayed
+ // outside a log
+ if (log.isErrorEnabled()) {
+ log.error(I18n._("isisfish.error.evaluate.preplan.script"), eee);
+ }
+ throw new IsisFishRuntimeException(I18n._("isisfish.error.evaluate.preplan.script"), eee);
+ }
+ }
+
+ /**
+ * Genere toutes les sous simulations et les places dans la queue.
+ *
+ * Cette methode {@code run()} est appelée seulement dans le cas de la
+ * génération de plans indépendants.
+ *
+ * @see SimulationJob#run() pour les plans dépendants
+ */
+ public void run() {
+ /* Original code
+ while (hasNext()) {
+ try {
+ SimulationJob subJob = next();
+ if (log.isInfoEnabled()) {
+ log.info("Simulation generee: " + subJob.getId());
+ }
+ simulationService.submitSubJob(subJob);
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(_("Can't add simulation: %s", job.getItem()
+ .getControl().getId()), eee);
+ }
+ }
+ }*/
+ // New iteration remember always simulation N and N+1
+ // needed to know witch simulation is the last one
+ // get simulation N
+ SimulationJob subJobN = null;
+ if (hasNext()) {
+ subJobN = next();
+ }
+ while (subJobN != null) {
+ try {
+ if (log.isInfoEnabled()) {
+ log.info("Simulation generated: " + subJobN.getId());
+ }
+ // set item additionnal informations
+ SimulationItem itemN = subJobN.getItem();
+ itemN.setStandaloneSimulation(false); // independant plan
+ // - 1 because planContext.getNumber() is set to next simulation to generate
+ itemN.setSimulationNumber(planContext.getNumber() - 1);
+ // job N+1
+ // carefull call this next after itemN.setSimulationNumber()
+ SimulationJob subJobNp1 = next();
+ if (subJobNp1 == null) {
+ // there is no N+1 job, N is the last one
+ itemN.setLastSimulation(true);
+ }
+ simulationService.submitSubJob(subJobN);
+ subJobN = subJobNp1;
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(I18n._("Can't add simulation: %s", job.getItem().getControl().getId()), eee);
+ }
+ }
+ }
+ }
+
+ /**
+ * Indique s'il y a encore des simulations dans le plan. Par defaut pour
+ * Eviter les plans sans fin, le nombre de plan genere par simulation
+ * est limite a {@link SimulationService#MAX_PLAN_SIMULATION}
+ *
+ * @return <tt>true</tt> if has next
+ */
+ public boolean hasNext() {
+ try {
+ // if user request stop simulation, stop all futur planned simulation
+ // and if last doNext is false not do next simulation
+ boolean result = !control.isStopSimulationRequest() && doNext;
+ if (result) {
+ // hasNext() est appelee par un autre thread concurrent
+ // via la methode finished(SimulationJob, SimulationStorage)
+ synchronized (this) {
+ // si deja creer on ne le refait pas
+ if (nextJob == null) {
+ // Prepration de la simulation a faire
+ // create next id simulation
+ // this start a 0
+ int planNumber = planContext.getNumber();
+ if (planNumber > SimulationService.MAX_PLAN_SIMULATION) {
+ log.error(I18n._("Analyse plan error, too many simulation for %s : %s", id, planNumber));
+ doNext = false;
+ result = false;
+ } else {
+ String simId = id + "_" + planNumber;
+ param.setSimulationPlanNumber(planNumber);
+ File tmpDirectory = FileUtil.createTempDirectory("isisfish-simulation-", "-preparation");
+ SimulationStorage sim = SimulationStorage.importAndRenameZip(tmpDirectory, job.getItem().getSimulationZip(), simId);
+ sim.getParameter().setSimulationPlanNumber(planNumber);
+ // appel de tous les plans pour modifier la simulation
+ for (SimulationPlan plan : simulationPlan) {
+ result = result && plan.beforeSimulation(planContext, sim);
+ if (!result) {
+ nextJob = null;
+ break;
+ }
+ }
+ doNext = result;
+ if (result) {
+ File zip = sim.createZip();
+ SimulationControl childControl = new SimulationControl(simId);
+ SimulationParameter childParam = param.copy();
+ SimulationItem item = new SimulationItem(childControl, childParam);
+ item.setSimulationZip(zip);
+ nextJob = new SimulationJob(simulationService, job, item, job.getPriority());
+ nextJob.setLauncher(job.getLauncher());
+ // FIXME on retire la post action pour les plan dépendants
+ // sera appelé directement par le job de preparations
+ if (param.isIndependentPlan()) {
+ nextJob.addPostAction(this); // pour l'appel des after des plans
+ }
+ }
+ // close context for plan generator
+ // FIXME echatellier 20120904 could throw
+ //org.nuiton.topia.TopiaException: Ce contexte a deja ete ferme
+ sim.closeStorage();
+ // quoi qu'il arrive on supprime le repertoire temporaire
+ if (!FileUtils.deleteQuietly(tmpDirectory)) {
+ log.warn(I18n._("isisfish.error.remove.directory", tmpDirectory));
+ }
+ }
+ // increment number for next simulation job
+ planContext.incNumber();
+ }
+ }
+ }
+ return result;
+ } catch (Exception eee) {
+ throw new IsisFishRuntimeException(I18n._("isisfish.error.evalute.plan.script"), eee);
+ }
+ }
+
+ public SimulationJob next() {
+ hasNext(); // pour etre sur qu'il a ete appele au moins une fois
+ SimulationJob result = null;
+ // next est appelee par un autre thread concurrent
+ // via la methode finished(SimulationJob, SimulationStorage)
+ synchronized (this) {
+ result = nextJob;
+ nextJob = null;
+ }
+ return result;
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException("Not supported.");
+ }
+
+ @Override
+ public void finished(SimulationJob job, SimulationStorage sim) {
+ // doNext = true;
+ // appel de tous les plans pour modifier la simulation
+ // EC20090716 : use param.getSimulationPlans() instances,
+ // not sim.getParameters().getSimulationPlans() not sames !!!
+ for (SimulationPlan plan : simulationPlan) {
+ try {
+ boolean result = plan.afterSimulation(planContext, sim);
+ doNext = doNext && result;
+ } catch (Exception eee) {
+ log.error(I18n._("Stop simulation plan, because can't call afterSimulation correctly on plan %s", plan.getClass().getName()), eee);
+ doNext = false;
+ }
+ }
+ // une sim vient de se finir, on incremente le compteur
+ done++;
+ if (!hasNext() && (done + 1 == planContext.getNumber())) {
+ // on enleve le master plan des simulations en cours, vu que
+ // toutes les simu sont terminees
+ simulationService.fireStopEvent(this.job);
+ }
+ }
+
+ @Override
+ public void exception(SimulationJob job, Throwable eee) {
+ // il y a une simulation d'echoue, on ne fait pas les suivantes
+ // cela n'impacte pas les plan independant puisque toutes les
+ // simulation on deja ete generee
+ doNext = false;
+ simulationService.fireStopEvent(this.job);
+ }
+
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationPlanPrepareJob.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -25,6 +25,7 @@
package fr.ifremer.isisfish.simulator.launcher;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorHelper;
import static org.nuiton.i18n.I18n.t;
import java.beans.PropertyChangeListener;
@@ -37,7 +38,6 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -87,7 +87,6 @@
import fr.ifremer.isisfish.simulator.SimulationException;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.simulator.SimulationPlan;
-import fr.ifremer.isisfish.simulator.SimulationPlanContext;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
@@ -100,6 +99,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
import fr.ifremer.isisfish.util.CompileHelper;
import fr.ifremer.isisfish.util.ConverterUtil;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* Cette classe est responsable de conservation de toutes les simulations faites
@@ -392,12 +392,12 @@
job.setLauncher(launcher);
fireStartEvent(job);
- // Attention, dans le cas d'un plan de simulation, le new PrepareSimulationJob
+ // Attention, dans le cas d'un plan de simulation, le new SimulationPlanPrepareJob
// doit etre fait AVANT de faire le prepareSimulationZipFile
// car, il est possible que l'init des plans ajoute des regles !!!
- PrepareSimulationJob task = null;
+ SimulationPlanPrepareJob task = null;
if (localParameters.getUseSimulationPlan()) {
- task = new PrepareSimulationJob(this, job);
+ task = new SimulationPlanPrepareJob(this, job);
}
// on construit le zip de la simulation
@@ -488,10 +488,9 @@
// subParam only convenient for add pre script
// for launcher
SimulationParameter subParam = localParameters.copy();
- String preScriptContent = generatePreScript(scenario);
+ String generatedScriptContent = FactorHelper.generatePreScript(scenario);
// usefull next two line ?
- subParam.setUsePreScript(true);
- subParam.setPreScript(preScriptContent);
+ subParam.setGeneratedPreScript(generatedScriptContent);
// build new simulation id
String subsimulationId = id + "_" + simulationIndex;
@@ -512,7 +511,7 @@
if (subParam.getUseSimulationPlan()
&& subParam.isIndependentPlan()) {
// c un plan de simulation independant, on construit toute les sous simu
- Runnable task = new PrepareSimulationJob(this, job);
+ Runnable task = new SimulationPlanPrepareJob(this, job);
subSimulationComputationExecutor.execute(task);
} else {
// l'item est fini d'etre initialise, on peut l'ajouter a la queue
@@ -565,154 +564,6 @@
}
}
- /** Permet de manipuler un int entre plusieurs appele de methodes recursive. */
- public static class Counter {
- protected int counter = 0;
- public void inc() {
- counter++;
- }
- public int getCounter() {
- return counter;
- }
- }
-
- /**
- * Generate prescript to set factor values before simulation start.
- *
- * @param scenario to generate prescript
- * @return simulation pre script with correct values
- */
- protected String generatePreScript(Scenario scenario) {
- ConvertUtilsBean beanUtils = ConverterUtil.getConverter(null);
-
- // n'utilise plus freemarker, car il y avait plus d'instruction
- // freemarker compliqué que de code a afficher
- StringBuffer buffer = new StringBuffer();
- buffer.append("import org.apache.commons.beanutils.BeanUtils;\n");
- buffer.append("import org.apache.commons.beanutils.ConvertUtilsBean;\n");
- buffer.append("import fr.ifremer.isisfish.util.ConverterUtil;\n");
- buffer.append("import fr.ifremer.isisfish.simulator.SimulationParameter;\n");
- buffer.append("ConvertUtilsBean beanUtils = ConverterUtil.getConverter(db);\n");
- buffer.append("SimulationParameter params = context.getSimulationStorage().getParameter();\n");
-
- generatePreScript(beanUtils, buffer, new Counter(), scenario.getFactors());
-
- String scriptContent = buffer.toString();
- if (log.isTraceEnabled()) {
- log.trace("Simulation prescript content = " + scriptContent);
- }
- return scriptContent;
- }
-
- /**
- * Generate prescript for a factor list that can be called recursively to
- * manage factor group.
- *
- * @param beanUtils beanUtils converter
- * @param buffer buffer to fill
- * @param counter call counter used to avoid variables name collision
- * @param factors factor list to manage
- */
- protected void generatePreScript(ConvertUtilsBean beanUtils, StringBuffer buffer, Counter counter, Collection<Factor> factors) {
-
- for (Factor factor : factors) {
- if (factor instanceof FactorGroup) {
- buffer.append("/* factor group : ").append(factor.getName()).append(" */\n");
- FactorGroup factorGroup = (FactorGroup)factor;
- generatePreScript(beanUtils, buffer, counter, factorGroup.getFactors());
- }
- else {
- int factorIndex = counter.getCounter();
- buffer.append("/* factor : ").append(factor.getName()).append(" */\n");
-
- // cas special 1 : population de départ
- if (factor.getPath().matches("parameters.population\\.\\w+\\.number")) {
- String paramName = StringUtils.removeStart(factor.getPath(), "parameters.");
- // pas de convert, c'est fait comme ca dans
- // SimulationParameters.toProperties();
- MatrixND matrix = (MatrixND)factor.getValue();
- Object stringValue = String.valueOf(matrix.toList());
- buffer.append("params.setProperty(\"").append(paramName).append("\",\"").append(stringValue).append("\");\n");
- }
- // cas special 2 : regles
- else if (factor.getPath().equals("parameters.rules")) {
- List<Rule> rules = (List<Rule>)factor.getValue();
- List<String> rulesNames = new ArrayList<String>();
- int ruleIndex = 0;
- for (Rule rule : rules) {
- rulesNames.add(rule.getClass().getSimpleName());
- Properties rulesProps = RuleHelper.getRuleAsProperties(ruleIndex++, null, rule);
- for (String rulesProp : rulesProps.stringPropertyNames()) {
- String value = rulesProps.getProperty(rulesProp);
- buffer.append("params.setProperty(\"").append(rulesProp).append("\",\"").append(value).append("\");\n");
- }
- }
- buffer.append("params.setProperty(\"rules\",\"").append(StringUtils.join(rulesNames, ",")).append("\");\n");
- }
- // cas special 3 : facteur sur les parametres des regles
- else if (factor.getPath().startsWith("parameters.rule.")) {
- // special case for rule parameter with
- Pattern pattern = Pattern.compile("^parameters\\.(rule\\.\\d+\\.parameter\\.\\w+)(\\..+)?$");
- Matcher matcher = pattern.matcher(factor.getPath());
- String paramName = null;
- if (matcher.matches()) {
- paramName = matcher.group(1);
- } else {
- paramName = StringUtils.removeStart(factor.getPath(), "parameters.");
- }
- String stringValue = ConvertUtils.convert(factor.getValue());
- buffer.append("params.setProperty(\"").append(paramName).append("\",\"").append(stringValue).append("\");\n");
- }
- // cas special 4 : equation
- else if (StringUtils.isNotBlank(factor.getEquationVariableName())) {
- buffer.append("context.setComputeValue(\"").append(factor.getName() + "." + factor.getEquationVariableName());
- buffer.append("\",").append(factor.getValue()).append(");\n");
- }
- // cas pas si special
- else {
- Object value = factor.getValue();
- String stringValue = beanUtils.convert(value);
- String escValue = stringValue;
- if (factor.getDomain() instanceof EquationDiscreteDomain) {
- // echatellier: equation can contains quotes that break
- // prescript, only quote, not all java replacements
- // a ne pas faire pour le reste, pour les
- // matrice par exemple, ca passe mal
- escValue = StringUtils.replace(escValue, "\n", "");
- escValue = StringUtils.replace(escValue, "\r", "");
- escValue = StringUtils.replace(escValue, "\"", "\\\"");
- }
- String path = factor.getPath();
- String topiaId = path.substring(0, path.lastIndexOf('#'));
- String property = path.substring(path.lastIndexOf('#') + 1);
- // Double value123 = beanUtils.convert("mystringvalue", Double.class);
- buffer.append(value.getClass().getName()).append(" value");
- buffer.append(factorIndex).append(" = beanUtils.convert(\"");
- buffer.append(escValue).append("\", ").append(value.getClass().getName());
- buffer.append(".class);\n");
- // TopiaEntity entity123 = db.findByTopiaId(topiaId);
- buffer.append("TopiaEntity entity").append(factorIndex);
- buffer.append(" = db.findByTopiaId(\"").append(topiaId);
- buffer.append("\");\n");
-
- if (factor.getDomain() instanceof EquationDiscreteDomain) {
- // BeanUtils.setProperty(entity123, "propertyContent", value123);
- buffer.append("BeanUtils.setProperty(entity").append(factorIndex);
- buffer.append(", \"").append(property).append("Content\", ");
- buffer.append("value").append(factorIndex).append(");\n");
- } else {
- // BeanUtils.setProperty(entity123, "property", value123);
- buffer.append("BeanUtils.setProperty(entity").append(factorIndex);
- buffer.append(", \"").append(property).append("\", ");
- buffer.append("value").append(factorIndex).append(");\n");
- }
- }
- }
-
- counter.inc();
- }
- }
-
protected void submit(SimulationJob job) {
SimulatorLauncher launcher = job.getLauncher();
// on ajoute a la queue qui utilise le launcher defini dans le job
@@ -827,276 +678,8 @@
}
/**
- * Permet de genere les sous simulations d'un plan de simulation. Pour les
- * plan independant, on l'utilise en Runnable pour genere tous les plans
- * possible et les soumettre a la queue. Pour les plans dependant
- * on l'utilise seulement comme iterator. La methode afterSimulation des plans
- * est appelee automatiquement a la fin de la simulation grace au mecanisme
- * de PostAction sur les {@link SimulationJob}.
- */
- public static class PrepareSimulationJob implements Runnable,
- Iterator<SimulationJob>, SimulationJob.PostAction {
-
- protected SimulationService simulationService;
- protected SimulationPlanContext planContext;
- protected SimulationJob job;
- protected SimulationJob nextJob;
- protected boolean doNext = true;
- protected String id;
- protected SimulationControl control;
- protected SimulationParameter param;
- protected int done = 0;
- protected List<SimulationPlan> simulationPlan;
-
- public PrepareSimulationJob(SimulationService simulationService,
- SimulationJob job) {
- this.simulationService = simulationService;
- this.job = job;
- id = job.getItem().getControl().getId();
- control = job.getItem().getControl();
- param = job.getItem().getParameter();
- // take a copy of simulation paln list
- // because they a freed during simulation (soft reference)
- // is there is not enought memory available
- simulationPlan = param.getSimulationPlans();
- this.planContext = new SimulationPlanContext(control.getId(), param);
-
- try {
- // appel de init sur chaque plan
- for (SimulationPlan plan : simulationPlan) {
- plan.init(planContext);
- }
- } catch (Exception eee) {
- // add manual log
- // we are in a thread, IsisFishRuntimeException is displayed
- // outside a log
- if (log.isErrorEnabled()) {
- log.error(t("isisfish.error.evaluate.preplan.script"), eee);
- }
- throw new IsisFishRuntimeException(t("isisfish.error.evaluate.preplan.script"), eee);
- }
- }
-
- /**
- * Genere toutes les sous simulations et les places dans la queue.
- *
- * Cette methode {@code run()} est appelée seulement dans le cas de la
- * génération de plans indépendants.
- *
- * @see SimulationJob#run() pour les plans dépendants
- */
- public void run() {
- /* Original code
- while (hasNext()) {
- try {
- SimulationJob subJob = next();
-
- if (log.isInfoEnabled()) {
- log.info("Simulation generee: " + subJob.getId());
- }
- simulationService.submitSubJob(subJob);
- } catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(t("Can't add simulation: %s", job.getItem()
- .getControl().getId()), eee);
- }
- }
- }*/
-
- // New iteration remember always simulation N and N+1
- // needed to know witch simulation is the last one
- // get simulation N
- SimulationJob subJobN = null;
- if (hasNext()) {
- subJobN = next();
- }
-
- while (subJobN != null) {
-
- try {
- if (log.isInfoEnabled()) {
- log.info("Simulation generated: " + subJobN.getId());
- }
-
- // set item additionnal informations
- SimulationItem itemN = subJobN.getItem();
- itemN.setStandaloneSimulation(false); // independant plan
- // - 1 because planContext.getNumber() is set to next simulation to generate
- itemN.setSimulationNumber(planContext.getNumber() - 1);
-
- // job N+1
- // carefull call this next after itemN.setSimulationNumber()
- SimulationJob subJobNp1 = next();
- if (subJobNp1 == null) {
- // there is no N+1 job, N is the last one
- itemN.setLastSimulation(true);
- }
-
- simulationService.submitSubJob(subJobN);
-
- subJobN = subJobNp1;
- }
- catch (Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(t("Can't add simulation: %s", job.getItem()
- .getControl().getId()), eee);
- }
- }
- }
- }
-
- /**
- * Indique s'il y a encore des simulations dans le plan. Par defaut pour
- * Eviter les plans sans fin, le nombre de plan genere par simulation
- * est limite a {@link SimulationService#MAX_PLAN_SIMULATION}
- *
- * @return <tt>true</tt> if has next
- */
- public boolean hasNext() {
- try {
- // if user request stop simulation, stop all futur planned simulation
- // and if last doNext is false not do next simulation
- boolean result = !control.isStopSimulationRequest() && doNext;
- if (result) {
-
- // hasNext() est appelee par un autre thread concurrent
- // via la methode finished(SimulationJob, SimulationStorage)
- synchronized (this) {
-
- // si deja creer on ne le refait pas
- if (nextJob == null) {
- // Prepration de la simulation a faire
- // create next id simulation
-
- // this start a 0
- int planNumber = planContext.getNumber();
-
- if (planNumber > MAX_PLAN_SIMULATION) {
- log.error(t("Analyse plan error, too many simulation for %s : %s",
- id, planNumber));
- doNext = false;
- result = false;
- } else {
- String simId = id + "_" + planNumber;
- param.setSimulationPlanNumber(planNumber);
-
- File tmpDirectory = FileUtil.createTempDirectory(
- "isisfish-simulation-", "-preparation");
- SimulationStorage sim = SimulationStorage
- .importAndRenameZip(tmpDirectory, job
- .getItem().getSimulationZip(),
- simId);
- sim.getParameter().setSimulationPlanNumber(planNumber);
-
- // appel de tous les plans pour modifier la simulation
- for (SimulationPlan plan : simulationPlan) {
- result = result
- && plan.beforeSimulation(planContext, sim);
- if (!result) {
- nextJob = null;
- break;
- }
- }
- doNext = result;
- if (result) {
-
- File zip = sim.createZip();
- SimulationControl childControl = new SimulationControl(simId);
- SimulationParameter childParam = param.copy();
- SimulationItem item = new SimulationItem(childControl, childParam);
- item.setSimulationZip(zip);
-
- nextJob = new SimulationJob(simulationService, job, item, job.getPriority());
- nextJob.setLauncher(job.getLauncher());
-
- // FIXME on retire la post action pour les plan dépendants
- // sera appelé directement par le job de preparations
- if (param.isIndependentPlan()) {
- nextJob.addPostAction(this); // pour l'appel des after des plans
- }
- }
-
- // close context for plan generator
- // FIXME echatellier 20120904 could throw
- //org.nuiton.topia.TopiaException: Ce contexte a deja ete ferme
- sim.closeStorage();
-
- // quoi qu'il arrive on supprime le repertoire temporaire
- if (!FileUtils.deleteQuietly(tmpDirectory)) {
- log.warn(t("isisfish.error.remove.directory",
- tmpDirectory));
- }
- }
-
- // increment number for next simulation job
- planContext.incNumber();
- }
- }
- }
- return result;
- } catch (Exception eee) {
- throw new IsisFishRuntimeException(
- t("isisfish.error.evalute.plan.script"), eee);
- }
-
- }
-
- public SimulationJob next() {
- hasNext(); // pour etre sur qu'il a ete appele au moins une fois
- SimulationJob result = null;
-
- // next est appelee par un autre thread concurrent
- // via la methode finished(SimulationJob, SimulationStorage)
- synchronized (this) {
- result = nextJob;
- nextJob = null;
- }
-
- return result;
-
- }
-
- public void remove() {
- throw new UnsupportedOperationException("Not supported.");
- }
-
- public void finished(SimulationJob job, SimulationStorage sim) {
- // doNext = true;
-
- // appel de tous les plans pour modifier la simulation
- // EC20090716 : use param.getSimulationPlans() instances,
- // not sim.getParameters().getSimulationPlans() not sames !!!
- for (SimulationPlan plan : simulationPlan) {
- try {
- boolean result = plan.afterSimulation(planContext, sim);
- doNext = doNext && result;
- } catch (Exception eee) {
- log.error(t("Stop simulation plan, because can't call afterSimulation correctly on plan %s",
- plan.getClass().getName()), eee);
- doNext = false;
- }
- }
-
- // une sim vient de se finir, on incremente le compteur
- done++;
- if (!hasNext() && (done + 1 == planContext.getNumber())) {
- // on enleve le master plan des simulations en cours, vu que
- // toutes les simu sont terminees
- simulationService.fireStopEvent(this.job);
- }
- }
-
- public void exception(SimulationJob job, Throwable eee) {
- // il y a une simulation d'echoue, on ne fait pas les suivantes
- // cela n'impacte pas les plan independant puisque toutes les
- // simulation on deja ete generee
- doNext = false;
- simulationService.fireStopEvent(this.job);
- }
- }
-
- /**
* Prepare les fichiers qui seront utilsé à la simulation:
+ * Prepare les fichiers qui seront utilsé à la simulation:
* <ul>
* <li> scripts</li>
* <li> rules</li>
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java 2014-04-02 13:25:29 UTC (rev 3916)
@@ -0,0 +1,170 @@
+package fr.ifremer.isisfish.simulator.sensitivity;
+
+
+import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.rule.RuleHelper;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
+import fr.ifremer.isisfish.util.ConverterUtil;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.beanutils.ConvertUtilsBean;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.math.matrix.MatrixND;
+
+/**
+ * Useful method for factor
+ * - create prescript with factor list
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class FactorHelper {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static final Log log = LogFactory.getLog(FactorHelper.class);
+
+ /**
+ * Generate prescript to set factor values before simulation start.
+ *
+ * @param scenario to generate prescript
+ * @return simulation pre script with correct values
+ */
+ public static String generatePreScript(Scenario scenario) {
+ return generatePreScript(scenario.getFactors());
+ }
+
+ public static String generatePreScript(Collection<Factor> factors) {
+ ConvertUtilsBean beanUtils = ConverterUtil.getConverter(null);
+ // n'utilise plus freemarker, car il y avait plus d'instruction
+ // freemarker compliqué que de code a afficher
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("import org.apache.commons.beanutils.BeanUtils;\n");
+ buffer.append("import org.apache.commons.beanutils.ConvertUtilsBean;\n");
+ buffer.append("import fr.ifremer.isisfish.util.ConverterUtil;\n");
+ buffer.append("import fr.ifremer.isisfish.simulator.SimulationParameter;\n");
+ buffer.append("ConvertUtilsBean beanUtils = ConverterUtil.getConverter(db);\n");
+ buffer.append("SimulationParameter params = context.getSimulationStorage().getParameter();\n");
+ generatePreScript(beanUtils, buffer, new AtomicInteger(), factors);
+ String scriptContent = buffer.toString();
+ if (log.isTraceEnabled()) {
+ log.trace("Simulation prescript content = " + scriptContent);
+ }
+ return scriptContent;
+ }
+
+ /**
+ * Generate prescript for a factor list that can be called recursively to
+ * manage factor group.
+ *
+ * @param beanUtils beanUtils converter
+ * @param buffer buffer to fill
+ * @param counter call counter used to avoid variables name collision
+ * @param factors factor list to manage
+ */
+ protected static void generatePreScript(ConvertUtilsBean beanUtils, StringBuffer buffer, AtomicInteger counter, Collection<Factor> factors) {
+ for (Factor factor : factors) {
+ if (factor instanceof FactorGroup) {
+ buffer.append("/* factor group : ").append(factor.getName()).append(" */\n");
+ FactorGroup factorGroup = (FactorGroup) factor;
+ generatePreScript(beanUtils, buffer, counter, factorGroup.getFactors());
+ } else {
+ int factorIndex = counter.get();
+ buffer.append("/* factor : ").append(factor.getName()).append(" */\n");
+ // cas special 1 : population de départ
+ if (factor.getPath().matches("parameters.population\\.\\w+\\.number")) {
+ String paramName = StringUtils.removeStart(factor.getPath(), "parameters.");
+ // pas de convert, c'est fait comme ca dans
+ // SimulationParameters.toProperties();
+ MatrixND matrix = (MatrixND) factor.getValue();
+ Object stringValue = String.valueOf(matrix.toList());
+ buffer.append("params.setProperty(\"").append(paramName).append("\",\"").append(stringValue).append("\");\n");
+ }
+ // cas special 2 : regles
+ else if (factor.getPath().equals("parameters.rules")) {
+ List<Rule> rules = (List<Rule>) factor.getValue();
+ List<String> rulesNames = new ArrayList<String>();
+ int ruleIndex = 0;
+ for (Rule rule : rules) {
+ rulesNames.add(rule.getClass().getSimpleName());
+ Properties rulesProps = RuleHelper.getRuleAsProperties(ruleIndex++, null, rule);
+ for (String rulesProp : rulesProps.stringPropertyNames()) {
+ String value = rulesProps.getProperty(rulesProp);
+ buffer.append("params.setProperty(\"").append(rulesProp).append("\",\"").append(value).append("\");\n");
+ }
+ }
+ buffer.append("params.setProperty(\"rules\",\"").append(StringUtils.join(rulesNames, ",")).append("\");\n");
+ }
+ // cas special 3 : facteur sur les parametres des regles
+ else if (factor.getPath().startsWith("parameters.rule.")) {
+ // special case for rule parameter with
+ Pattern pattern = Pattern.compile("^parameters\\.(rule\\.\\d+\\.parameter\\.\\w+)(\\..+)?$");
+ Matcher matcher = pattern.matcher(factor.getPath());
+ String paramName = null;
+ if (matcher.matches()) {
+ paramName = matcher.group(1);
+ } else {
+ paramName = StringUtils.removeStart(factor.getPath(), "parameters.");
+ }
+ String stringValue = ConvertUtils.convert(factor.getValue());
+ buffer.append("params.setProperty(\"").append(paramName).append("\",\"").append(stringValue).append("\");\n");
+ }
+ // cas special 4 : equation
+ else if (StringUtils.isNotBlank(factor.getEquationVariableName())) {
+ buffer.append("context.setComputeValue(\"").append(factor.getName() + "." + factor.getEquationVariableName());
+ buffer.append("\",").append(factor.getValue()).append(");\n");
+ }
+ // cas pas si special
+ else {
+ Object value = factor.getValue();
+ String stringValue = beanUtils.convert(value);
+ String escValue = stringValue;
+ if (factor.getDomain() instanceof EquationDiscreteDomain) {
+ // echatellier: equation can contains quotes that break
+ // prescript, only quote, not all java replacements
+ // a ne pas faire pour le reste, pour les
+ // matrice par exemple, ca passe mal
+ escValue = StringUtils.replace(escValue, "\n", "");
+ escValue = StringUtils.replace(escValue, "\r", "");
+ escValue = StringUtils.replace(escValue, "\"", "\\\"");
+ }
+ String path = factor.getPath();
+ String topiaId = path.substring(0, path.lastIndexOf('#'));
+ String property = path.substring(path.lastIndexOf('#') + 1);
+ // Double value123 = beanUtils.convert("mystringvalue", Double.class);
+ buffer.append(value.getClass().getName()).append(" value");
+ buffer.append(factorIndex).append(" = beanUtils.convert(\"");
+ buffer.append(escValue).append("\", ").append(value.getClass().getName());
+ buffer.append(".class);\n");
+ // TopiaEntity entity123 = db.findByTopiaId(topiaId);
+ buffer.append("TopiaEntity entity").append(factorIndex);
+ buffer.append(" = db.findByTopiaId(\"").append(topiaId);
+ buffer.append("\");\n");
+ if (factor.getDomain() instanceof EquationDiscreteDomain) {
+ // BeanUtils.setProperty(entity123, "propertyContent", value123);
+ buffer.append("BeanUtils.setProperty(entity").append(factorIndex);
+ buffer.append(", \"").append(property).append("Content\", ");
+ buffer.append("value").append(factorIndex).append(");\n");
+ } else {
+ // BeanUtils.setProperty(entity123, "property", value123);
+ buffer.append("BeanUtils.setProperty(entity").append(factorIndex);
+ buffer.append(", \"").append(property).append("\", ");
+ buffer.append("value").append(factorIndex).append(");\n");
+ }
+ }
+ }
+ counter.incrementAndGet();
+ }
+ }
+
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: branches/4.0.1/src/main/resources/templates/script/optimization.ftl
===================================================================
--- branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-02 12:36:19 UTC (rev 3915)
+++ branches/4.0.1/src/main/resources/templates/script/optimization.ftl 2014-04-02 13:25:29 UTC (rev 3916)
@@ -76,14 +76,33 @@
private static Log log = LogFactory.getLog(${name}.class);
/**
+ * Appele lors de l'initialisation. La premiere generation doit etre construite
+ * dans l'init via des appels a context.addSimulation(...)
+ *
+ * @param context
+ */
+ void init(OptimizationContext context);
+
+
+ /**
* Génère une nouvelle série de simulation suivant le context d'optimisation.
- *
+ * Pour cela vous devez appeler context.addSimulation(...) pour ajouter
+ * des simulations pour la prochaine generation.
+ *
* @param context context
* @param region region
* @return simulations serie
*/
- public List<SimulationStorage> getNextGeneration(OptimizationContext context, FisheryRegion region) {
+ public void getNextSimulation(OptimizationContext context) {
// TODO
return null;
}
+
+ /**
+ * Cette methode est appelee lorsqu'il n'y a plus de simulation a faire
+ * (init ou getNextSimulation n'ont pas fait appel a context.addSimulation)
+ * @param context
+ */
+ void endSimulation(OptimizationContext context);
+
}
1
0
r3915 - branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher
by echatellier@users.forge.codelutin.com 02 Apr '14
by echatellier@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: echatellier
Date: 2014-04-02 14:36:19 +0200 (Wed, 02 Apr 2014)
New Revision: 3915
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3915
Log:
Add log warn
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2014-04-02 09:42:00 UTC (rev 3914)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2014-04-02 12:36:19 UTC (rev 3915)
@@ -551,6 +551,9 @@
File informationFile = SimulationStorage.getSimulationInformationFile(simulationRoot);
SimulationInformation information = new SimulationInformation(informationFile);
if (StringUtils.isNotEmpty(information.getException())) {
+ if (log.isWarnEnabled()) {
+ log.warn("Simulation exception : " + information.getException());
+ }
simulationEnded = true;
}
}
1
0
r3914 - branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher
by echatellier@users.forge.codelutin.com 02 Apr '14
by echatellier@users.forge.codelutin.com 02 Apr '14
02 Apr '14
Author: echatellier
Date: 2014-04-02 11:42:00 +0200 (Wed, 02 Apr 2014)
New Revision: 3914
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3914
Log:
Fix caparmor job pattern
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2014-04-01 16:27:53 UTC (rev 3913)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2014-04-02 09:42:00 UTC (rev 3914)
@@ -1172,8 +1172,8 @@
}
String out = output.toString();
- // multiple jobs id are like : 78600[].service4
- if (out.trim().matches("\\d+\\.\\[\\]\\w+") && log.isInfoEnabled()) {
+ // multiple jobs id are like : 78600[].service4 ou 6199230.service0
+ if (out.trim().matches("\\d+(\\[\\])?\\.\\w+") && log.isInfoEnabled()) {
log.info("Job submitted with job id : " + out);
}
}
1
0