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
r3933 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui: . sensitivity simulator widget/editor
by echatellier@users.forge.codelutin.com 04 Apr '14
by echatellier@users.forge.codelutin.com 04 Apr '14
04 Apr '14
Author: echatellier
Date: 2014-04-04 18:09:12 +0200 (Fri, 04 Apr 2014)
New Revision: 3933
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3933
Log:
refs #4803: Ajout de la possibilit?\195?\169 de d?\195?\169finir des parametres de regles de type "Factor"
Added:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.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/sensitivity/SensitivityTabUI.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/SimulAction.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/MonthComponent.java
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/StepComponent.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-04 13:00:45 UTC (rev 3932)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx 2014-04-04 16:09:12 UTC (rev 3933)
@@ -108,7 +108,7 @@
*/
public void refreshFactorTree() {
- }
+ }*/
]]></script>
<JMenuBar constraints='BorderLayout.NORTH'>
<JMenu text="isisfish.simulation.menu.simulation">
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2014-04-04 13:00:45 UTC (rev 3932)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2014-04-04 16:09:12 UTC (rev 3933)
@@ -62,7 +62,6 @@
public void setTreeModel() {
if (getFisheryRegion() != null) {
getCardlayoutPrincipal().show(inputPanePrincipal,"normale");
- String regionName = getFisheryRegion().getName();
setContextValue(getFisheryRegion());
getHandler().loadFisheryRegionTree(this);
}
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-04 13:00:45 UTC (rev 3932)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-04 16:09:12 UTC (rev 3933)
@@ -22,15 +22,20 @@
*/
package fr.ifremer.isisfish.ui.simulator;
+import java.awt.event.ActionEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import javax.swing.JDialog;
import javax.swing.JTable;
import javax.swing.ListModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaContext;
import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.IsisFishRuntimeException;
@@ -38,12 +43,16 @@
import fr.ifremer.isisfish.datastore.ObjectiveStorage;
import fr.ifremer.isisfish.datastore.OptimizationStorage;
import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.entities.FisheryRegion;
import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.simulator.Objective;
import fr.ifremer.isisfish.simulator.Optimization;
import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.ui.input.InputHandler;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
+import fr.ifremer.isisfish.ui.SimulationUI;
+import fr.ifremer.isisfish.ui.input.InputAction;
import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor;
import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer;
@@ -51,11 +60,17 @@
import fr.ifremer.isisfish.ui.models.optimization.ExportObservationTableModel;
import fr.ifremer.isisfish.ui.models.optimization.ExportTableCellEditor;
import fr.ifremer.isisfish.ui.models.optimization.ExportTableCellRenderer;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivitySaveVerifier;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
+import fr.ifremer.isisfish.ui.widget.editor.FactorEditorListener;
-public class OptimizationHandler extends InputHandler {
+public class OptimizationHandler {
+
private static final Log log = LogFactory.getLog(OptimizationHandler.class);
+ protected FactorEditorListener factorEditorListener;
+
public void init(OptimizationUI view) {
RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
view.getExportObservationTable().getColumnModel().getColumn(0).setCellRenderer(new ExportTableCellRenderer());
@@ -129,11 +144,70 @@
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));
+
+ ScriptParametersTableCellEditor editor = new ScriptParametersTableCellEditor(objective);
+ editor.setFactorActionListener(getFactorActionListener(view));
+ view.getSimulObjectiveMethodParam().getColumnModel().getColumn(1).setCellEditor(editor);
}
}
+ /**
+ * Retourne une instance de action listener qui affichera l'interface de sélection d'un facteur.
+ *
+ * @param view parent view
+ * @return action listener
+ */
+ protected FactorEditorListener getFactorActionListener(final OptimizationUI view) {
+ if (factorEditorListener == null) {
+ factorEditorListener = new FactorEditorListener() {
+ public void actionPerformed(ActionEvent event) {
+ // init new sensitivity tav ui hierarchy
+ final SensitivityTabUI sensitivityTabUI = new SensitivityTabUI(view);
+ sensitivityTabUI.setContextValue(new InputAction());
+ sensitivityTabUI.setContextValue(new SensitivitySaveVerifier()); // prevent NPE
+ sensitivityTabUI.setContextValue(view.getParentContainer(SimulationUI.class), "SimulationUI"); // prevent NPE
+
+ // init region
+ // FIXME this transaction in never closed
+ // and can't be closed because used in
+ try {
+ RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+ TopiaContext tx = regionStorage.getStorage().beginTransaction();
+ FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(tx);
+ sensitivityTabUI.setFisheryRegion(fisheryRegion);
+ sensitivityTabUI.setTreeModel();
+ } catch (Exception ex) {
+ throw new IsisFishRuntimeException("Can't init dialog tree", ex);
+ }
+
+ // display dialog
+ JDialog dialog = new JDialog();
+ dialog.setTitle("Sélection d'un facteur");
+ dialog.add(sensitivityTabUI);
+ dialog.setSize(800, 600);
+ dialog.setLocationRelativeTo(view);
+ dialog.addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ // get first factor
+ FactorGroup factorGroup = sensitivityTabUI.getContextValue(SimulAction.class).getFactorGroup();
+
+ if (factorGroup.size() > 0) {
+ Factor factor = factorGroup.get(factorGroup.size() - 1);
+ // useless, but clear for next call
+ sensitivityTabUI.getContextValue(SimulAction.class).removeFactor(factor.getPath());
+ setSelectedFactor(factor);
+ }
+ }
+ });
+ dialog.setVisible(true);
+ }
+ };
+ }
+ return factorEditorListener;
+ }
+
/**
* Optimization model for combo box.
*
@@ -186,7 +260,10 @@
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));
+
+ ScriptParametersTableCellEditor editor = new ScriptParametersTableCellEditor(optimization);
+ editor.setFactorActionListener(getFactorActionListener(view));
+ view.getSimulOptimizationMethodParam().getColumnModel().getColumn(1).setCellEditor(editor);
}
}
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-04 13:00:45 UTC (rev 3932)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-04 16:09:12 UTC (rev 3933)
@@ -79,8 +79,6 @@
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.mexico.MexicoHelper;
import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.simulator.Objective;
-import fr.ifremer.isisfish.simulator.Optimization;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.simulator.SimulationParameterImpl;
import fr.ifremer.isisfish.simulator.SimulationPlan;
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.java 2014-04-04 16:09:12 UTC (rev 3933)
@@ -0,0 +1,40 @@
+package fr.ifremer.isisfish.ui.widget.editor;
+
+import javax.swing.CellEditor;
+import javax.swing.JButton;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.ui.widget.editor.FactorEditorListener.FactorCallback;
+
+public class FactorEditor extends JButton implements FactorCallback {
+
+ /** Cell editor. */
+ protected CellEditor cellEditor;
+
+ /** Component factor value. */
+ protected Factor factor;
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 4070032587998279914L;
+
+ public FactorEditor(CellEditor cellEditor, Factor factor) {
+ this.cellEditor = cellEditor;
+ this.factor = factor;
+
+ if (factor != null) {
+ setText(factor.toString());
+ } else {
+ setText("Edition du facteur");
+ }
+ }
+
+ public Factor getFactor() {
+ return factor;
+ }
+
+ @Override
+ public void setSelectedFactor(Factor factor) {
+ this.factor = factor;
+ cellEditor.stopCellEditing();
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditor.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/widget/editor/FactorEditorListener.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.java 2014-04-04 16:09:12 UTC (rev 3933)
@@ -0,0 +1,27 @@
+package fr.ifremer.isisfish.ui.widget.editor;
+
+import java.awt.event.ActionListener;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+
+/**
+ * Action listener that call factor callback when action is complete.
+ *
+ * @author Eric Chatellier
+ */
+public abstract class FactorEditorListener implements ActionListener {
+
+ public interface FactorCallback {
+ public void setSelectedFactor(Factor factor);
+ }
+
+ public FactorCallback callback;
+
+ public void setFactorCallback(FactorCallback callback) {
+ this.callback = callback;
+ }
+
+ public void setSelectedFactor(Factor factor) {
+ callback.setSelectedFactor(factor);
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/FactorEditorListener.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/widget/editor/MonthComponent.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/MonthComponent.java 2014-04-04 13:00:45 UTC (rev 3932)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/MonthComponent.java 2014-04-04 16:09:12 UTC (rev 3933)
@@ -37,7 +37,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class MonthComponent extends JComboBox {
+public class MonthComponent extends JComboBox<MonthEnum> {
/** serialVersionUID. */
private static final long serialVersionUID = 2992441627176713132L;
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-04 13:00:45 UTC (rev 3932)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java 2014-04-04 16:09:12 UTC (rev 3933)
@@ -34,12 +34,12 @@
import java.util.List;
import javax.swing.AbstractCellEditor;
+import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
-
import org.apache.commons.beanutils.ConvertUtilsBean;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -48,8 +48,9 @@
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.types.TimeStep;
+import fr.ifremer.isisfish.ui.widget.editor.FactorEditorListener.FactorCallback;
import fr.ifremer.isisfish.util.ConverterUtil;
/**
@@ -78,6 +79,8 @@
protected Class<?> type = null;
+ protected FactorEditorListener factorActionListener;
+
private static enum TypeClassMapping {
/** for simple int. */
Int(int.class, Integer.class),
@@ -139,6 +142,10 @@
}
}
+ public void setFactorActionListener(FactorEditorListener factorActionListener) {
+ this.factorActionListener = factorActionListener;
+ }
+
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
@@ -194,8 +201,13 @@
editor = MonthComponent.createMounthCombo(((Month) value).getMonthNumber());
break;
case Factor:
- // FIXME poussin 20140402 creer un selecteur de factor
- // break;
+ editor = new FactorEditor(this, (Factor)value);
+ if (factorActionListener == null) {
+ throw new RuntimeException("Missing factorActionListener call setFactorActionListener()");
+ }
+ factorActionListener.setFactorCallback((FactorCallback)editor);
+ ((JButton)editor).addActionListener(factorActionListener);
+ break;
case File:
// break;
default:
@@ -203,7 +215,7 @@
}
if (editor != null) {
if (JComboBox.class.isInstance(editor)) {
- ((JComboBox) editor).addActionListener(getComboListener());
+ ((JComboBox) editor).addActionListener(getStopEditingListener());
} else if (JTextField.class.isInstance(editor)) {
((JTextField) editor).addFocusListener(new FocusAdapter() {
@Override
@@ -217,10 +229,10 @@
} else if (StepComponent.class.isInstance(editor)) {
StepComponent date = ((StepComponent) editor);
if (date.getMounthCombo() != null) {
- date.getMounthCombo().addActionListener(getComboListener());
+ date.getMounthCombo().addActionListener(getStopEditingListener());
}
if (date.getYearCombo() != null) {
- date.getYearCombo().addActionListener(getComboListener());
+ date.getYearCombo().addActionListener(getStopEditingListener());
}
}
}
@@ -247,7 +259,7 @@
return value.getClass();
}
- protected ActionListener getComboListener() {
+ protected ActionListener getStopEditingListener() {
return new ActionListener() {
@Override
@@ -267,11 +279,10 @@
TypeClassMapping mapping = TypeClassMapping.getMapping(type);
switch (mapping) {
case Topia:
- result = getComboBoxValue(editor);
+ result = ((JComboBox) editor).getSelectedItem();
break;
case Boolean:
- result = getComboBoxValue(editor);
- // TODO test
+ result = ((JComboBox) editor).getSelectedItem();
break;
case Mounth:
result = new Month(((MonthComponent)editor).getSelectedValue());
@@ -280,8 +291,8 @@
result = new TimeStep(((StepComponent) editor).getSelectedValue());
break;
case Factor:
- // FIXME poussin 20140402 get value from factor editor
- // break;
+ result = ((FactorEditor)editor).getFactor();
+ break;
case File:
//TODO
// result = getTextFieldValue(editor);break;
@@ -308,16 +319,4 @@
return result;
}
-
- protected Object getTextFieldValue(Component editor) {
- return ((JTextField) editor).getText();
- }
-
- protected Object getComboBoxValue(Component editor) {
- return ((JComboBox) editor).getSelectedItem();
- }
-
- protected int getComboBoxIndex(Component editor) {
- return (((JComboBox) editor)).getSelectedIndex();
- }
}
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/StepComponent.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/StepComponent.java 2014-04-04 13:00:45 UTC (rev 3932)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/StepComponent.java 2014-04-04 16:09:12 UTC (rev 3933)
@@ -24,12 +24,12 @@
package fr.ifremer.isisfish.ui.widget.editor;
import java.awt.GridLayout;
-import java.util.ArrayList;
-import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JPanel;
+import org.nuiton.util.MonthEnum;
+
/**
* Component used to edit TimeStep.
*
@@ -43,9 +43,9 @@
private static final long serialVersionUID = -6694461572642939712L;
- protected JComboBox mounth;
+ protected JComboBox<MonthEnum> mounth;
- protected JComboBox year;
+ protected JComboBox<Integer> year;
public StepComponent(int mounth, int year) {
super(new GridLayout(0, 2));
@@ -57,11 +57,11 @@
this.add(this.year);
}
- public JComboBox getYearCombo() {
+ public JComboBox<Integer> getYearCombo() {
return year;
}
- public JComboBox getMounthCombo() {
+ public JComboBox<MonthEnum> getMounthCombo() {
return mounth;
}
@@ -84,13 +84,11 @@
return selectedMounth + selectedYear * 12;
}
- public static JComboBox createYearCombo(int nb, int selectedYear) {
- List<Integer> listI = new ArrayList<Integer>();
+ public static JComboBox<Integer> createYearCombo(int nb, int selectedYear) {
+ JComboBox<Integer> year = new JComboBox<Integer>();
for (int i = 0; i < nb; i++) {
- listI.add(i);
+ year.addItem(i);
}
- JComboBox year = new JComboBox(listI.toArray());
- listI.clear();
year.setSelectedIndex(selectedYear);
return year;
}
1
0
r3932 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish: simulator ui/models/optimization ui/simulator ui/widget/editor
by echatellier@users.forge.codelutin.com 04 Apr '14
by echatellier@users.forge.codelutin.com 04 Apr '14
04 Apr '14
Author: echatellier
Date: 2014-04-04 15:00:45 +0200 (Fri, 04 Apr 2014)
New Revision: 3932
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3932
Log:
refs #4803: Saisie des exports et observations
Added:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.java
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/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/ui/models/optimization/ExportObservationTableModel.java
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/RuleChooserHandler.java
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/simulator/SimulationParameter.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-04-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -35,8 +35,10 @@
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis;
@@ -343,7 +345,9 @@
public void setSensitivityExport(List<SensitivityExport> sensitivityExport);
/**
- * Return used optimization script
+ * Return used optimization script.
+ *
+ * @return optimization method
*/
public Optimization getOptimization();
@@ -363,10 +367,26 @@
/**
* Set objective.
+ *
+ * @param objective objective
*/
public void setObjective(Objective objective);
/**
+ * Get exports and observations map.
+ *
+ * @return exports and observations map
+ */
+ public Map<Export, Observation> getOptimizationExportsObservations();
+
+ /**
+ * Set exports and observations map.
+ *
+ * @param exportsObservations exports and observations map
+ */
+ public void setOptimizationExportsObservations(Map<Export, Observation> exportsObservations);
+
+ /**
* Get use simulation plans property.
*
* @return use simulation plan.
@@ -440,7 +460,9 @@
/**
* Generated pre script is internal script generated by isis. This script
- * must be executed before user defined preScript
+ * must be executed before user defined preScript.
+ *
+ * @return generated pre script
*/
public String getGeneratedPreScript();
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-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -45,8 +45,10 @@
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis;
@@ -454,7 +456,6 @@
SimulationParameter param = getParam();
param.setSensitivityAnalysis(sensitivityAnalysis);
store(param);
-
}
/*
@@ -936,5 +937,16 @@
store(param);
}
-
+ @Override
+ public Map<Export, Observation> getOptimizationExportsObservations() {
+ SimulationParameter param = getParam();
+ return param.getOptimizationExportsObservations();
+ }
+
+ @Override
+ public void setOptimizationExportsObservations(Map<Export, Observation> exportsObservations) {
+ SimulationParameter param = getParam();
+ param.setOptimizationExportsObservations(exportsObservations);
+ 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-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -62,10 +62,12 @@
import fr.ifremer.isisfish.datastore.SensitivityExportStorage;
import fr.ifremer.isisfish.datastore.SimulationPlanStorage;
import fr.ifremer.isisfish.datastore.StorageHelper;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.PopulationDAO;
import fr.ifremer.isisfish.entities.Strategy;
import fr.ifremer.isisfish.entities.StrategyDAO;
+import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.export.ExportHelper;
import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
@@ -182,6 +184,9 @@
/** Fonction d'objectif. */
protected Objective objective;
+ /** Exports et observations (optimisation). */
+ protected Map<Export, Observation> optimizationExportsObservations;
+
/** La liste des resultats qui nous interesse. */
protected Collection<String> resultEnabled;
@@ -930,6 +935,23 @@
this.objective = objective;
}
+ @Override
+ public Map<Export, Observation> getOptimizationExportsObservations() {
+ if (optimizationExportsObservations == null) {
+ // must be sorted for ui (LinkedHashMap)
+ optimizationExportsObservations = new LinkedHashMap<>();
+
+ // FIXME echatellier 20140404 finish restore parameters
+ }
+
+ return optimizationExportsObservations;
+ }
+
+ @Override
+ public void setOptimizationExportsObservations(Map<Export, Observation> optimizationExportsObservations) {
+ this.optimizationExportsObservations = optimizationExportsObservations;
+ }
+
/*
* @see fr.ifremer.isisfish.simulator.SimulationParameter#getUseAnalysePlan()
*/
@@ -1832,6 +1854,8 @@
// sensitivity params
result.setProperty("sensitivityAnalysisOnlyKeepFirst", String.valueOf(isSensitivityAnalysisOnlyKeepFirst()));
+ // FIXME echatellier 20140404 store optimization params
+
result.setProperty("generatedPreScript", getGeneratedPreScript());
result.setProperty("usePreScript", String.valueOf(getUsePreScript()));
result.setProperty("preScript", getPreScript());
Modified: 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 2014-04-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -2,19 +2,57 @@
import static org.nuiton.i18n.I18n.t;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
import javax.swing.table.AbstractTableModel;
+import fr.ifremer.isisfish.entities.Observation;
+import fr.ifremer.isisfish.export.Export;
+
public class ExportObservationTableModel extends AbstractTableModel {
/** serialVersionUID. */
private static final long serialVersionUID = 7555677813473489539L;
+ /** Optimizations exports and observations. */
+ protected Map<Export, Observation> optimizationExportsObservations;
+
+ /** Indexed keys list. */
+ protected List<Export> keysCache;
+
/** Columns names. */
public final static String[] COLUMN_NAMES = {
t("isisfish.optimization.export"),
t("isisfish.optimization.observation")
};
+
+ public ExportObservationTableModel() {
+
+ }
+ public ExportObservationTableModel(Map<Export, Observation> optimizationExportsObservations) {
+ this();
+ setOptimizationExportsObservations(optimizationExportsObservations);
+ }
+
+ public void setOptimizationExportsObservations(Map<Export, Observation> optimizationExportsObservations) {
+ this.optimizationExportsObservations = optimizationExportsObservations;
+ keysCache = new ArrayList<Export>(optimizationExportsObservations.keySet());
+ fireTableDataChanged();
+ }
+
+ public Export getExportForRow(int line) {
+ return keysCache.get(line);
+ }
+
+ public void deleteExport(Export export) {
+ int index = keysCache.indexOf(export);
+ keysCache.remove(index);
+ fireTableRowsDeleted(index, index);
+ }
+
/*
* @see javax.swing.table.TableModel#getColumnCount()
*/
@@ -29,7 +67,10 @@
*/
@Override
public int getRowCount() {
- int result = 4;
+ int result = 0;
+ if (keysCache != null) {
+ result = keysCache.size();
+ }
return result;
}
@@ -43,10 +84,25 @@
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
- if (columnIndex == 0) {
- return "Export " + rowIndex;
- } else {
- return "Observation " + rowIndex;
+ Export export = keysCache.get(rowIndex);
+ Object result = export;
+ if (columnIndex == 1) {
+ result = optimizationExportsObservations.get(export);
}
+ return result;
}
+
+ /*
+ * @see javax.swing.table.TableModel#isCellEditable(int, int)
+ */
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return columnIndex > 0;
+ }
+
+ @Override
+ public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+ Export export = getExportForRow(rowIndex);
+ this.optimizationExportsObservations.put(export, (Observation)aValue);
+ }
}
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -0,0 +1,105 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, 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.models.optimization;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.List;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.JComboBox;
+import javax.swing.JTable;
+import javax.swing.table.TableCellEditor;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaContext;
+
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.entities.Observation;
+
+/**
+ * Observation editor.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class ExportTableCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(ExportTableCellEditor.class);
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -1655744662816030649L;
+
+ protected RegionStorage regionStorage = null;
+
+ protected JComboBox<Observation> editorComponent;
+
+ public void setRegionStorage(RegionStorage regionStorage) {
+ this.regionStorage = regionStorage;
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+ return editorComponent.getSelectedItem();
+ }
+
+ @Override
+ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
+
+ try {
+ if (regionStorage == null) {
+ return null;
+ }
+ TopiaContext context = regionStorage.getStorage().beginTransaction();
+ if (context != null) {
+ List<Observation> list = context.findAll("from " + Observation.class.getName());
+ editorComponent = new JComboBox<Observation>(list.toArray(new Observation[list.size()]));
+ editorComponent.setSelectedItem(value);
+ editorComponent.setRenderer(new ObservationComboRenderer());
+ editorComponent.addActionListener(this);
+ context.closeContext();
+ }
+
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't get entity object for combobox", eee);
+ }
+ }
+
+ return editorComponent;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ stopCellEditing();
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.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/ExportTableCellRenderer.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -0,0 +1,80 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, 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.models.optimization;
+
+import java.awt.Component;
+
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+
+import fr.ifremer.isisfish.entities.Observation;
+import fr.ifremer.isisfish.export.Export;
+
+/**
+ * Export renderer for table.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class ExportTableCellRenderer extends DefaultTableCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -1655744662816030649L;
+
+ /*
+ * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
+ */
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
+
+ String stringValue = null;
+ String tooltip = null;
+
+ switch (column) {
+ case 0:
+ Export export = (Export)value;
+ stringValue = value.getClass().getSimpleName();
+ tooltip = export.getDescription();
+ break;
+ default:
+ Observation observation = (Observation)value;
+ if (observation != null) {
+ stringValue = observation.getName();
+ tooltip = observation.getComment();
+ }
+ break;
+ }
+
+ JLabel c = (JLabel) super.getTableCellRendererComponent(table, stringValue, isSelected, hasFocus, row, column);
+ c.setToolTipText(tooltip);
+ return c;
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.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/ObservationComboRenderer.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -0,0 +1,70 @@
+/*
+ * #%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 javax.swing.DefaultListCellRenderer;
+import javax.swing.JLabel;
+import javax.swing.JList;
+
+import fr.ifremer.isisfish.entities.Observation;
+
+/**
+ * Renderer pour la combo des observations.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class ObservationComboRenderer extends DefaultListCellRenderer {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = -4070846632975105788L;
+
+ /*
+ * @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);
+
+ if (value != null) {
+ Observation observation = (Observation) value;
+ c.setText(observation.getName());
+ c.setToolTipText(observation.getComment());
+ }
+
+ return c;
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.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/simulator/OptimizationHandler.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -24,34 +24,60 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import javax.swing.JTable;
+import javax.swing.ListModel;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import fr.ifremer.isisfish.IsisFishException;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.ExportStorage;
import fr.ifremer.isisfish.datastore.ObjectiveStorage;
import fr.ifremer.isisfish.datastore.OptimizationStorage;
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.entities.Observation;
+import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.simulator.Objective;
import fr.ifremer.isisfish.simulator.Optimization;
+import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.ui.input.InputHandler;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
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 fr.ifremer.isisfish.ui.models.optimization.ExportObservationTableModel;
+import fr.ifremer.isisfish.ui.models.optimization.ExportTableCellEditor;
+import fr.ifremer.isisfish.ui.models.optimization.ExportTableCellRenderer;
-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) {
+ RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+ view.getExportObservationTable().getColumnModel().getColumn(0).setCellRenderer(new ExportTableCellRenderer());
+ ExportTableCellEditor editor = new ExportTableCellEditor();
+ editor.setRegionStorage(regionStorage);
+ view.getExportObservationTable().getColumnModel().getColumn(1).setCellEditor(editor);
+ view.getExportObservationTable().getColumnModel().getColumn(1).setCellRenderer(new ExportTableCellRenderer());
}
/**
+ * Get simulation parameter from ui context.
+ *
+ * @param view view (ui context)
+ * @return simulation parameters
+ */
+ protected SimulationParameter getSimulationParameter(OptimizationUI view) {
+ SimulAction simulAction = view.getContextValue(SimulAction.class);
+ SimulationParameter param = simulAction.getSimulationParameter();
+ return param;
+ }
+
+ /**
* Optimization model for combo box.
*
* @return model
@@ -61,7 +87,7 @@
for (String r : ObjectiveStorage.getObjectiveNames()) {
// there is some non java files in sensitivity directory
if (r.endsWith(".java")) {
- // Remove .java extention
+ // Remove .java extension
// for example SensitivityStorage.getRuleName(String)
result.add(r.substring(0, r.length() - 5));
}
@@ -78,12 +104,12 @@
*/
public void objectiveChanged(OptimizationUI view) {
String objectiveName = (String)view.getFieldObjectiveMethodSelect().getSelectedItem();
- SimulAction simulAction = view.getContextValue(SimulAction.class);
+ SimulationParameter param = getSimulationParameter(view);
// creation new instance only when name change to not lose parameters value
- Objective objective = simulAction.getObjective();
+ Objective objective = param.getObjective();
if (objective != null && objective.getClass().getSimpleName().equals(objectiveName)) {
- objective = simulAction.getObjective();
+ objective = param.getObjective();
} else {
try {
ObjectiveStorage objectiveStorage = ObjectiveStorage.getObjective(objectiveName);
@@ -97,14 +123,7 @@
// 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");
- }*/
+ param.setObjective(objective);
// update model
ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(objective);
@@ -125,7 +144,7 @@
for (String r : OptimizationStorage.getOptimizationNames()) {
// there is some non java files in sensitivity directory
if (r.endsWith(".java")) {
- // Remove .java extention
+ // Remove .java extension
// for example SensitivityStorage.getRuleName(String)
result.add(r.substring(0, r.length() - 5));
}
@@ -142,12 +161,12 @@
*/
public void optimizationChanged(OptimizationUI view) {
String optimizationName = (String)view.getFieldOptimizationMethodSelect().getSelectedItem();
- SimulAction simulAction = view.getContextValue(SimulAction.class);
+ SimulationParameter param = getSimulationParameter(view);
// creation new instance only when name change to not lose parameters value
- Optimization optimization = simulAction.getOptimization();
+ Optimization optimization = param.getOptimization();
if (optimization != null && optimization.getClass().getSimpleName().equals(optimizationName)) {
- optimization = simulAction.getOptimization();
+ optimization = param.getOptimization();
} else {
try {
OptimizationStorage optimizationStorage = OptimizationStorage.getOptimization(optimizationName);
@@ -161,15 +180,8 @@
// can be null for example if analysis can't be compiled
if (optimization != null) {
- simulAction.setOptimization(optimization);
+ param.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);
@@ -178,7 +190,6 @@
}
}
-
/**
* Export model for combo box.
*
@@ -201,11 +212,86 @@
/**
* Export model for combo box.
- *
+ *
+ * @param view view
* @return model
*/
- public TableModel getExportObservationTableModel() {
- ExportObservationTableModel model = new ExportObservationTableModel();
+ public ExportObservationTableModel getExportObservationTableModel(OptimizationUI view) {
+ SimulationParameter param = getSimulationParameter(view);
+ Map<Export, Observation> optimizationExportsObservations = param.getOptimizationExportsObservations();
+ ExportObservationTableModel model = new ExportObservationTableModel(optimizationExportsObservations);
return model;
}
+
+ /**
+ * Add selected export.
+ *
+ * @param view view
+ */
+ public void addExports(OptimizationUI view) {
+ // get elements
+ SimulationParameter param = getSimulationParameter(view);
+ ExportObservationTableModel tableModel = view.getExportObservationTableModel();
+
+ // add all selected exports
+ List<String> selectedExports = view.getFieldExportList().getSelectedValuesList();
+ for (String selectedExport : selectedExports) {
+ try {
+ // create export instance
+ ExportStorage exportStorage = ExportStorage.getExport(selectedExport);
+ Export export = exportStorage.getNewInstance();
+
+ // add export instance into parameters
+ Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations();
+ optimizationExports.put(export, null); // new entry
+ tableModel.setOptimizationExportsObservations(optimizationExports); // FIXME add fire
+ param.setOptimizationExportsObservations(optimizationExports);
+ } catch (IsisFishException ex) {
+ throw new IsisFishRuntimeException("Can't create new export", ex);
+ }
+ }
+ }
+
+ /**
+ * Remove selected exports in table.
+ *
+ * @param view view
+ */
+ public void removeExports(OptimizationUI view) {
+ // get element
+ SimulationParameter param = getSimulationParameter(view);
+ Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations();
+ ExportObservationTableModel tableModel = view.getExportObservationTableModel();
+
+ JTable table = view.getExportObservationTable();
+ int[] rows = table.getSelectedRows();
+ // reverse order
+ for (int i = rows.length - 1; i >= 0; i--) {
+ Export export = tableModel.getExportForRow(rows[i]);
+ optimizationExports.remove(export);
+ tableModel.deleteExport(export);
+ }
+
+ // force save
+ param.setOptimizationExportsObservations(optimizationExports);
+ }
+
+ /**
+ * Clear all export in table.
+ *
+ * @param view view
+ */
+ public void clearExports(OptimizationUI view) {
+ // get elements
+ SimulationParameter param = getSimulationParameter(view);
+ Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations();
+ ExportObservationTableModel tableModel = view.getExportObservationTableModel();
+
+ // clear
+ optimizationExports.clear();
+ tableModel.setOptimizationExportsObservations(optimizationExports);
+
+ // force save
+ param.setOptimizationExportsObservations(optimizationExports);
+ }
}
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-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-04 13:00:45 UTC (rev 3932)
@@ -31,19 +31,22 @@
</import>
<script><![CDATA[
-// protected void $afterCompleteSetup() {
-// handler.init(this);
-// }
+ /*protected void $afterCompleteSetup() {
+ handler.init(this);
+ }*/
+ protected void regionStorageChanged() {
+ handler.init(this);
+ }
+
public void refresh() {
// Objective names list
fieldObjectiveMethodSelect.setModel(handler.getObjectiveComboModel());
// Optimization names list
fieldOptimizationMethodSelect.setModel(handler.getOptimizationComboModel());
- }
+ }
+ ]]></script>
-
- ]]></script>
<OptimizationHandler id="handler" javaBean='new OptimizationHandler()'/>
<!-- Objective choice and param -->
@@ -94,31 +97,38 @@
<JScrollPane>
<JList id="fieldExportList" genericType="String"
model='{handler.getExportListModel()}'
- cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}' />
+ cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}'
+ onValueChanged='addExportsButton.setEnabled(fieldExportList.getSelectedIndex() != -1)' />
</JScrollPane>
</cell>
<cell fill="horizontal" weighty="1.0">
<Table>
<row>
<cell fill="horizontal">
- <JButton text="isisfish.common.add" />
+ <JButton id="addExportsButton" text="isisfish.common.add" enabled="false"
+ onActionPerformed="handler.addExports(this)" />
</cell>
</row>
<row>
<cell fill="horizontal">
- <JButton text="isisfish.common.remove" />
+ <JButton id="removeExportsButton" text="isisfish.common.remove" enabled="false"
+ onActionPerformed="handler.removeExports(this)" />
</cell>
</row>
<row>
<cell fill="horizontal">
- <JButton text="isisfish.common.clear" />
+ <JButton id="clearExportsButton" text="isisfish.common.clear" enabled="false"
+ onActionPerformed="handler.clearExports(this)" />
</cell>
</row>
</Table>
</cell>
<cell fill="both" weightx="1.0" weighty="1.0">
<JScrollPane>
- <JTable id="exportObservationTable" model="{handler.getExportObservationTableModel()}" rowHeight='24' />
+ <ExportObservationTableModel id="exportObservationTableModel" javaBean="handler.getExportObservationTableModel(this)" />
+ <JTable id="exportObservationTable" model="{getExportObservationTableModel()}" rowHeight='24' />
+ <ListSelectionModel id="exportObservationSelectionModel" initializer="exportObservationTable.getSelectionModel()"
+ onValueChanged='removeExportsButton.setEnabled(!exportObservationSelectionModel.isSelectionEmpty());clearExportsButton.setEnabled(exportObservationTableModel.getRowCount() > 0);' />
</JScrollPane>
</cell>
</row>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2014-04-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -118,7 +118,7 @@
}
/**
- * Display paramters table form single selected list.
+ * Display parameters table form single selected list.
*
* @param ruleChooser rule chooser ui
*/
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-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -1329,20 +1329,4 @@
throw new IsisFishRuntimeException("Can't add factor on rule", ex);
}*/
}
-
- public Objective getObjective() {
- return param.getObjective();
- }
-
- public void setObjective(Objective objective) {
- param.setObjective(objective);
- }
-
- public Optimization getOptimization() {
- return param.getOptimization();
- }
-
- public void setOptimization(Optimization optimization) {
- param.setOptimization(optimization);
- }
}
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-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2014-04-04 13:00:45 UTC (rev 3932)
@@ -34,6 +34,7 @@
exportUI.refresh();
resultChoiceUI.refresh();
advancedParamsUI.refresh();
+ optimizationUI.refresh();
}
/**
@@ -41,7 +42,7 @@
*/
@Override
protected void regionStorageChanged() {
-
+ optimizationUI.regionStorageChanged();
}
@Override
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-04 08:18:00 UTC (rev 3931)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java 2014-04-04 13:00:45 UTC (rev 3932)
@@ -51,7 +51,6 @@
import fr.ifremer.isisfish.types.TimeStep;
import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.util.ConverterUtil;
-import org.apache.commons.lang3.StringUtils;
/**
* Un editeur generic de champs qui se base sur le model de données
1
0
r3931 - in branches/4.0.1/src/main: java/fr/ifremer/isisfish/datastore/migration java/fr/ifremer/isisfish/entities java/fr/ifremer/isisfish/ui/input java/fr/ifremer/isisfish/ui/input/tree java/fr/ifremer/isisfish/ui/input/tree/loadors resources/fr/ifremer/isisfish/entities resources/i18n xmi
by echatellier@users.forge.codelutin.com 04 Apr '14
by echatellier@users.forge.codelutin.com 04 Apr '14
04 Apr '14
Author: echatellier
Date: 2014-04-04 10:18:00 +0200 (Fri, 04 Apr 2014)
New Revision: 3931
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3931
Log:
refs #4803: Add observation in region
Added:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java
branches/4.0.1/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/DatabaseMigrationClass.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeHelper.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeRenderer.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/PopulationsNodeLoador.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
branches/4.0.1/src/main/xmi/isis-fish.properties
branches/4.0.1/src/main/xmi/isis-fish.zargo
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/DatabaseMigrationClass.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/DatabaseMigrationClass.java 2014-04-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/DatabaseMigrationClass.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -50,6 +50,7 @@
protected static final Version VERSION_40 = new Version("4.0");
protected static final Version VERSION_41 = new Version("4.1");
protected static final Version VERSION_421 = new Version("4.2.1");
+ protected static final Version VERSION_43 = new Version("4.3");
public DatabaseMigrationClass() {
super(new MigrationResolver());
@@ -73,6 +74,8 @@
result = MigrationV40V41.class;
} else if (version.equals(VERSION_421)) {
result = MigrationV41V421.class;
+ } else if (version.equals(VERSION_43)) {
+ result = MigrationV421V43.class;
}
return result;
}
@@ -84,7 +87,7 @@
*/
@Override
public Version[] getAvailableVersions() {
- Version[] result = new Version[] { VERSION_32, VERSION_33, VERSION_40, VERSION_41, VERSION_421};
+ Version[] result = new Version[] { VERSION_32, VERSION_33, VERSION_40, VERSION_41, VERSION_421, VERSION_43};
return result;
}
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -0,0 +1,76 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * 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
+ * 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.datastore.migration;
+
+import java.util.List;
+
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaContextImplementor;
+import org.nuiton.topia.migration.TopiaMigrationCallbackByClass;
+import org.nuiton.topia.migration.TopiaMigrationCallbackByClass.MigrationCallBackForVersion;
+import org.nuiton.util.Version;
+
+/**
+ * Migration between version 4.1 and 4.2.1.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class MigrationV421V43 extends MigrationCallBackForVersion {
+
+ /**
+ * Constructor.
+ *
+ * @param version version
+ * @param callback callback
+ */
+ public MigrationV421V43(Version version, TopiaMigrationCallbackByClass callback) {
+ super(version, callback);
+ }
+
+ /*
+ * @see org.nuiton.topia.migration.TopiaMigrationCallbackByClass.MigrationCallBackForVersion#prepareMigrationScript(org.nuiton.topia.framework.TopiaContextImplementor, java.util.List, boolean, boolean)
+ */
+ @Override
+ protected void prepareMigrationScript(TopiaContextImplementor tx,
+ List<String> queries, boolean showSql, boolean showProgression)
+ throws TopiaException {
+
+ // ajout de la table 'observation'
+ queries.add("CREATE TABLE observation( " +
+ "TOPIAID VARCHAR(255) NOT NULL, " +
+ "TOPIAVERSION BIGINT NOT NULL, " +
+ "TOPIACREATEDATE DATE, " +
+ "NAME LONGVARCHAR, " +
+ "COMMENT LONGVARCHAR, " +
+ "VALUE_NAME VARCHAR(255), " +
+ "VALUE_DIM VARCHAR(255), " +
+ "VALUE_DIMNAMES LONGVARCHAR, " +
+ "VALUE_SEMANTICS LONGVARCHAR, " +
+ "VALUE_DATA LONGVARCHAR) ");
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/migration/MigrationV421V43.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/entities/FisheryRegionImpl.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java 2014-04-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/entities/FisheryRegionImpl.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -231,6 +231,17 @@
}
}
+ @Override
+ public List<Observation> getObservations() {
+ try {
+ ObservationDAO dao = IsisFishDAOHelper.getObservationDAO(getTopiaContext());
+ List<Observation> result = dao.findAll();
+ return result;
+ } catch (TopiaException eee) {
+ throw new IsisFishRuntimeException("Can't get observations", eee);
+ }
+ }
+
/*
* @see fr.ifremer.isisfish.entities.FisheryRegionAbstract#toString()
*/
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2014-04-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -36,6 +36,7 @@
import javax.swing.JOptionPane;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixFactory;
@@ -60,6 +61,7 @@
import fr.ifremer.isisfish.entities.Metier;
import fr.ifremer.isisfish.entities.MetierSeasonInfo;
import fr.ifremer.isisfish.entities.MetierSeasonInfoDAO;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.PopulationDAO;
import fr.ifremer.isisfish.entities.PopulationGroup;
@@ -639,7 +641,7 @@
}
}
- public Object createRecruitmentDistribution(Population pop) {
+ public void createRecruitmentDistribution(Population pop) {
if (log.isTraceEnabled()) {
log.trace("createRecruitmentDistributionon called: " + pop);
}
@@ -679,9 +681,44 @@
ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
"RecruitmentDistribution"), eee);
}
- return null;
}
+ public void createObservationValueMatrix(Observation observation) {
+ try {
+ String val = JOptionPane.showInputDialog(t("isisfish.message.observation.value.dimensions"));
+
+ if (StringUtils.isNotBlank(val)) {
+ String[] values = val.trim().split("(,|;|\\*|x|\\s)");
+
+ List<Integer> dims = new ArrayList<Integer>();
+ for (String value : values) {
+ if (!value.isEmpty() && StringUtils.isNumeric(value)) {
+ dims.add(Integer.valueOf(value));
+ }
+ }
+
+ int[] dim = new int[dims.size()];
+ for (int i = 0; i < dims.size(); i++) {
+ dim[i] = dims.get(i).intValue();
+ }
+ MatrixND newMat = MatrixFactory.getInstance().create(dim);
+
+ MatrixND mat = observation.getValue();
+ if (mat != null) {
+ newMat.paste(mat);
+ }
+ observation.setValue(newMat);
+ observation.update();
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't remove RecruitmentDistribution", eee);
+ }
+ ErrorHelper.showErrorDialog(t("isisfish.error.input.removeentity",
+ "RecruitmentDistribution"), eee);
+ }
+ }
+
// Migration
public Object addMigration(PopulationSeasonInfo info,
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2014-04-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -23,8 +23,8 @@
package fr.ifremer.isisfish.ui.input;
-import static org.nuiton.i18n.I18n.t;
import static org.nuiton.i18n.I18n.n;
+import static org.nuiton.i18n.I18n.t;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
@@ -66,6 +66,7 @@
import fr.ifremer.isisfish.entities.FisheryRegion;
import fr.ifremer.isisfish.entities.Gear;
import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.Port;
import fr.ifremer.isisfish.entities.SetOfVessels;
@@ -580,39 +581,30 @@
Class<? extends InputContentUI<?>> uiClass = null;
if (FisheryRegion.class.isAssignableFrom(internalClass)) {
uiClass = FisheryRegionUI.class;
- }
- else if (Cell.class.isAssignableFrom(internalClass)) {
+ } else if (Cell.class.isAssignableFrom(internalClass)) {
uiClass = CellUI.class;
- }
- else if (Gear.class.isAssignableFrom(internalClass)) {
+ } else if (Gear.class.isAssignableFrom(internalClass)) {
uiClass = GearUI.class;
- }
- else if (Metier.class.isAssignableFrom(internalClass)) {
+ } else if (Metier.class.isAssignableFrom(internalClass)) {
uiClass = MetierUI.class;
- }
- else if (Population.class.isAssignableFrom(internalClass)) {
+ } else if (Population.class.isAssignableFrom(internalClass)) {
uiClass = PopulationUI.class;
- }
- else if (Port.class.isAssignableFrom(internalClass)) {
+ } else if (Port.class.isAssignableFrom(internalClass)) {
uiClass = PortUI.class;
- }
- else if (SetOfVessels.class.isAssignableFrom(internalClass)) {
+ } else if (SetOfVessels.class.isAssignableFrom(internalClass)) {
uiClass = SetOfVesselsUI.class;
- }
- else if (Species.class.isAssignableFrom(internalClass)) {
+ } else if (Species.class.isAssignableFrom(internalClass)) {
uiClass = SpeciesUI.class;
- }
- else if (Strategy.class.isAssignableFrom(internalClass)) {
+ } else if (Strategy.class.isAssignableFrom(internalClass)) {
uiClass = StrategyUI.class;
- }
- else if (TripType.class.isAssignableFrom(internalClass)) {
+ } else if (TripType.class.isAssignableFrom(internalClass)) {
uiClass = TripTypeUI.class;
- }
- else if (VesselType.class.isAssignableFrom(internalClass)) {
+ } else if (VesselType.class.isAssignableFrom(internalClass)) {
uiClass = VesselTypeUI.class;
- }
- else if (Zone.class.isAssignableFrom(internalClass)) {
+ } else if (Zone.class.isAssignableFrom(internalClass)) {
uiClass = ZoneUI.class;
+ } else if (Observation.class.isAssignableFrom(internalClass)) {
+ uiClass = ObservationUI.class;
}
// use map to implement UI cache
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/ObservationUI.jaxx 2014-04-04 08:18:00 UTC (rev 3931)
@@ -0,0 +1,178 @@
+<!--
+ #%L
+ IsisFish
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2014 Ifremer, Code Lutin, 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%
+ -->
+<fr.ifremer.isisfish.ui.input.InputContentUI
+ superGenericType='fr.ifremer.isisfish.entities.Observation'>
+
+ <!-- bean property -->
+ <fr.ifremer.isisfish.entities.Observation
+ id='bean' javaBean='null' />
+
+ <import>
+ static org.nuiton.i18n.I18n.t
+ static org.nuiton.i18n.I18n.n
+ org.nuiton.math.matrix.gui.MatrixPanelEvent
+ org.nuiton.math.matrix.MatrixND
+ java.beans.PropertyChangeEvent
+ java.beans.PropertyChangeListener
+ </import>
+
+ <BeanValidator id='validator'
+ bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Observation'
+ uiClass="jaxx.runtime.validator.swing.ui.ImageValidationUI">
+ <field name="name" component="fieldObservationName" />
+ </BeanValidator>
+
+ <script><![CDATA[
+
+protected void $afterCompleteSetup() {
+ addPropertyChangeListener(PROPERTY_BEAN, new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getNewValue() == null) {
+ fieldObservationValue.setMatrix(null);
+ }
+ if (evt.getNewValue() != null) {
+ setObservationValueMatrix();
+ }
+ }
+ });
+}
+
+protected void setObservationValueMatrix() {
+ MatrixND prop = getBean().getValue();
+ if (prop != null) {
+ fieldObservationValue.setMatrix(prop.copy());
+ } else {
+ fieldObservationValue.setMatrix(null);
+ }
+}
+
+protected void createObservationValueMatrix() {
+ getAction().createObservationValueMatrix(getBean());
+ setObservationValueMatrix();
+}
+
+protected void observationValueMatrixChanged(MatrixPanelEvent event) {
+ MatrixND mat = fieldObservationValue.getMatrix();
+ if (getBean() != null && mat != null) {
+ getBean().setValue(mat.copy());
+ }
+}
+
+ ]]></script>
+ <JPanel id="body">
+ <Table>
+ <row>
+ <cell fill='both' weightx='1.0' weighty='1.0'>
+ <Table>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JLabel text="isisfish.observation.name" enabled='{isActive()}' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JTextField id="fieldObservationName"
+ text='{SwingUtil.getStringValue(getBean().getName())}'
+ onKeyReleased='getBean().setName(fieldObservationName.getText())'
+ enabled='{isActive()}' decorator='boxed' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JLabel text="isisfish.observation.comment"
+ enabled='{isActive()}' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='both' weighty='0.2' weightx='1.0'>
+ <JScrollPane>
+ <JTextArea id="fieldObservationComment"
+ text='{SwingUtil.getStringValue(getBean().getComment())}'
+ onKeyReleased='getBean().setComment(fieldObservationComment.getText())'
+ enabled='{isActive()}' decorator='boxed' />
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='horizontal' weightx='1.0'>
+ <JLabel text="isisfish.observation.value"
+ enabled='{isActive()}' />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2' fill='both' weighty='1' weightx='1.0'>
+ <org.nuiton.math.matrix.gui.MatrixPanelEditor
+ id="fieldObservationValue" onMatrixChanged="observationValueMatrixChanged(event)"
+ enabled='{isActive()}' decorator='boxed'
+ _sensitivityBean='{fr.ifremer.isisfish.entities.Observation.class}'
+ _sensitivityMethod='"Value"' />
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JPanel/>
+ </cell>
+ <cell fill='horizontal' weightx='1.0'>
+ <JButton text="isisfish.common.newMatrix" onActionPerformed='createObservationValueMatrix()' enabled='{isActive()}' decorator='boxed'/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='1.0'>
+ <Table>
+ <row>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='save' decorator='boxed'
+ text="isisfish.common.save"
+ enabled="{validator.isValid() && validator.isChanged()}"
+ onActionPerformed="getSaveVerifier().save();validator.setChanged(false);" />
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='cancel' decorator='boxed'
+ text="isisfish.common.cancel" enabled="{validator.isChanged()}"
+ onActionPerformed="getSaveVerifier().cancel()" />
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='create' decorator='boxed'
+ text="isisfish.common.new" enabled="{!validator.isChanged()}"
+ onActionPerformed="getSaveVerifier().create(Observation.class)" />
+ </cell>
+ <cell fill='horizontal' weightx='0.5'>
+ <JButton id='delete' decorator='boxed'
+ text="isisfish.common.remove"
+ enabled="{!validator.isChanged() && getBean() != null}"
+ onActionPerformed="getSaveVerifier().delete()" />
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
+</fr.ifremer.isisfish.ui.input.InputContentUI>
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeHelper.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeHelper.java 2014-04-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeHelper.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -37,6 +37,7 @@
import fr.ifremer.isisfish.entities.FisheryRegion;
import fr.ifremer.isisfish.entities.Gear;
import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Port;
import fr.ifremer.isisfish.entities.SetOfVessels;
import fr.ifremer.isisfish.entities.Species;
@@ -48,6 +49,7 @@
import fr.ifremer.isisfish.ui.input.tree.loadors.FisheryTreeNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.GearsNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.MetiersNodeLoador;
+import fr.ifremer.isisfish.ui.input.tree.loadors.ObservationsNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.PortsNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.SetOfVesselsNodeLoador;
import fr.ifremer.isisfish.ui.input.tree.loadors.SpeciesNodeLoador;
@@ -90,7 +92,8 @@
loadorCache.put(VesselType.class, new VesselTypesNodeLoador());
loadorCache.put(SetOfVessels.class, new SetOfVesselsNodeLoador());
loadorCache.put(Strategy.class, new StrategiesNodeLoador());
-
+ loadorCache.put(Observation.class, new ObservationsNodeLoador());
+
// first level nodes
CellsNodeLoador cellsNodeLoador = new CellsNodeLoador();
FisheryTreeNode cellsChild = new FisheryTreeNode(Cell.class,
@@ -142,6 +145,11 @@
n("isisfish.input.tree.strategies"), null, strategiesNodeLoador);
loadorCache.put(Strategy.class, strategiesNodeLoador);
+ ObservationsNodeLoador observationsNodeLoador = new ObservationsNodeLoador();
+ FisheryTreeNode observationsChild = new FisheryTreeNode(Observation.class,
+ n("isisfish.input.tree.observations"), null, observationsNodeLoador);
+ loadorCache.put(Observation.class, observationsNodeLoador);
+
root.add(cellsChild);
root.add(zonesChild);
root.add(portsChild);
@@ -152,6 +160,7 @@
root.add(vesselTypesChild);
root.add(setOfVesselsChild);
root.add(strategiesChild);
+ root.add(observationsChild);
// Create model
TreeModel model = createModel(root);
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeRenderer.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeRenderer.java 2014-04-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/FisheryTreeRenderer.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -40,6 +40,7 @@
import fr.ifremer.isisfish.entities.FisheryRegionImpl;
import fr.ifremer.isisfish.entities.Gear;
import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
import fr.ifremer.isisfish.entities.Port;
import fr.ifremer.isisfish.entities.SetOfVessels;
@@ -94,39 +95,30 @@
if (entity != null) {
if (FisheryRegion.class.isAssignableFrom(entity.getClass())) {
stringValue = ((FisheryRegion)entity).getName();
- }
- else if (Cell.class.isAssignableFrom(entity.getClass())) {
+ } else if (Cell.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Cell)entity).getName();
- }
- else if (Gear.class.isAssignableFrom(entity.getClass())) {
+ } else if (Gear.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Gear)entity).getName();
- }
- else if (Metier.class.isAssignableFrom(entity.getClass())) {
+ } else if (Metier.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Metier)entity).getName();
- }
- else if (Population.class.isAssignableFrom(entity.getClass())) {
+ } else if (Population.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Population)entity).getName();
- }
- else if (Port.class.isAssignableFrom(entity.getClass())) {
+ } else if (Port.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Port)entity).getName();
- }
- else if (SetOfVessels.class.isAssignableFrom(entity.getClass())) {
+ } else if (SetOfVessels.class.isAssignableFrom(entity.getClass())) {
stringValue = ((SetOfVessels)entity).getName();
- }
- else if (Species.class.isAssignableFrom(entity.getClass())) {
+ } else if (Species.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Species)entity).getName();
- }
- else if (Strategy.class.isAssignableFrom(entity.getClass())) {
+ } else if (Strategy.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Strategy)entity).getName();
- }
- else if (TripType.class.isAssignableFrom(entity.getClass())) {
+ } else if (TripType.class.isAssignableFrom(entity.getClass())) {
stringValue = ((TripType)entity).getName();
- }
- else if (VesselType.class.isAssignableFrom(entity.getClass())) {
+ } else if (VesselType.class.isAssignableFrom(entity.getClass())) {
stringValue = ((VesselType)entity).getName();
- }
- else if (Zone.class.isAssignableFrom(entity.getClass())) {
+ } else if (Zone.class.isAssignableFrom(entity.getClass())) {
stringValue = ((Zone)entity).getName();
+ } else if (Observation.class.isAssignableFrom(entity.getClass())) {
+ stringValue = ((Observation)entity).getName();
}
}
} catch (TopiaException eee) {
Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java (rev 0)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -0,0 +1,67 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 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.input.tree.loadors;
+
+import java.util.List;
+
+import jaxx.runtime.swing.nav.NavDataProvider;
+import fr.ifremer.isisfish.entities.FisheryRegion;
+import fr.ifremer.isisfish.entities.Gear;
+import fr.ifremer.isisfish.entities.Observation;
+import fr.ifremer.isisfish.ui.input.tree.FisheryDataProvider;
+import fr.ifremer.isisfish.ui.input.tree.FisheryTreeNode;
+
+/**
+ * Observation tree path node loader.
+ *
+ * @author chatellier
+ * @since 3.4.0.0
+ */
+public class ObservationsNodeLoador extends FisheryTreeNodeLoador<Observation> {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 6540304326033236054L;
+
+ public ObservationsNodeLoador() {
+ super(Observation.class);
+ }
+
+ @Override
+ public List<Observation> getData(Class<?> parentClass, String parentId, NavDataProvider dataProvider) throws Exception {
+ FisheryDataProvider ficheryRegionDataProvider = (FisheryDataProvider)dataProvider;
+ FisheryRegion fisheryRegion = ficheryRegionDataProvider.getFisheryRegion();
+ List<Observation> observations = fisheryRegion.getObservations();
+ return observations;
+ }
+
+ @Override
+ public FisheryTreeNode createNode(Observation observation, NavDataProvider dataProvider) {
+
+ // Create clients static nodes
+ FisheryTreeNode observationNode = new FisheryTreeNode(
+ Observation.class, observation.getTopiaId(),
+ null, null);
+
+ return observationNode;
+ }
+}
Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/ObservationsNodeLoador.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/input/tree/loadors/PopulationsNodeLoador.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/PopulationsNodeLoador.java 2014-04-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/input/tree/loadors/PopulationsNodeLoador.java 2014-04-04 08:18:00 UTC (rev 3931)
@@ -56,7 +56,7 @@
populations = new ArrayList<Population>(species.getPopulation());
}
else {
- populations = Collections.EMPTY_LIST;
+ populations = Collections.emptyList();
}
return populations;
}
Added: branches/4.0.1/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml
===================================================================
--- branches/4.0.1/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml (rev 0)
+++ branches/4.0.1/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml 2014-04-04 08:18:00 UTC (rev 3931)
@@ -0,0 +1,33 @@
+<!--
+ #%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%
+ -->
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+ <field name="name">
+ <field-validator type="requiredstring">
+ <param name="trim">true</param>
+ <message>Missing name</message>
+ </field-validator>
+ </field>
+</validators>
Property changes on: branches/4.0.1/src/main/resources/fr/ifremer/isisfish/entities/Observation-error-validation.xml
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/resources/i18n/isis-fish_en_GB.properties 2014-04-04 08:18:00 UTC (rev 3931)
@@ -510,6 +510,7 @@
isisfish.input.tree.cells=Cells
isisfish.input.tree.gears=Gears
isisfish.input.tree.metiers=Metiers
+isisfish.input.tree.observations=Observations
isisfish.input.tree.populations=Populations
isisfish.input.tree.ports=Ports
isisfish.input.tree.setofvessels=Set of vessels
@@ -603,6 +604,7 @@
isisfish.message.new.formule.category=Select the equation model's category
isisfish.message.new.formule.title=New equation model
isisfish.message.new.region.name=Enter new region name
+isisfish.message.observation.value.dimensions=Enter matrix dimensions \:
isisfish.message.old.simulation.loaded=Old simulation loaded
isisfish.message.page.modified=This page has been modified, do you want to save it ?
isisfish.message.presimulation.script.execution=Presimulation Script execution
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-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/resources/i18n/isis-fish_fr_FR.properties 2014-04-04 08:18:00 UTC (rev 3931)
@@ -510,6 +510,7 @@
isisfish.input.tree.cells=Mailles
isisfish.input.tree.gears=Engins
isisfish.input.tree.metiers=Métiers
+isisfish.input.tree.observations=Observations
isisfish.input.tree.populations=Populations
isisfish.input.tree.ports=Ports
isisfish.input.tree.setofvessels=Flottilles
@@ -603,6 +604,7 @@
isisfish.message.new.formule.category=Choisissez le catégorie de la formule
isisfish.message.new.formule.title=Nouvelle formule
isisfish.message.new.region.name=Entrer le nom de la nouvelle région
+isisfish.message.observation.value.dimensions=Entrez les dimensions de la matrice \:
isisfish.message.old.simulation.loaded=Ancienne simulation chargée
isisfish.message.page.modified=Cette page a été modifié, voulez-vous la sauvegarder ?
isisfish.message.presimulation.script.execution=Exécution des scripts de Presimulation
@@ -653,6 +655,9 @@
isisfish.month.november=novembre
isisfish.month.october=octobre
isisfish.month.september=septembre
+isisfish.observation.comment=Description
+isisfish.observation.name=Nom
+isisfish.observation.value=Valeur
isisfish.optimization.export=Export
isisfish.optimization.exports=Exports et observations
isisfish.optimization.method=Méthode d'optimisation
Modified: branches/4.0.1/src/main/xmi/isis-fish.properties
===================================================================
--- branches/4.0.1/src/main/xmi/isis-fish.properties 2014-04-03 18:23:18 UTC (rev 3930)
+++ branches/4.0.1/src/main/xmi/isis-fish.properties 2014-04-04 08:18:00 UTC (rev 3931)
@@ -57,6 +57,7 @@
fr.ifremer.isisfish.entities.Variable.attribute.entityId.tagvalue.notNull=true
fr.ifremer.isisfish.entities.VesselType.class.tagvalue.contextable=true
fr.ifremer.isisfish.entities.Zone.class.tagvalue.contextable=true
+fr.ifremer.isisfish.entities.Observation.class.tagvalue.contextable=true
-#�fix lazy exception on sensitivity export
+# fix lazy exception on sensitivity export
fr.ifremer.isisfish.entities.Population.attribute.maturityOgiveEquation.tagvalue.lazy=false
Modified: branches/4.0.1/src/main/xmi/isis-fish.zargo
===================================================================
(Binary files differ)
1
0
r3930 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish: datastore simulator/launcher
by bpoussin@users.forge.codelutin.com 03 Apr '14
by bpoussin@users.forge.codelutin.com 03 Apr '14
03 Apr '14
Author: bpoussin
Date: 2014-04-03 20:23:18 +0200 (Thu, 03 Apr 2014)
New Revision: 3930
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3930
Log:
save objective value in SimulationStorage
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-03 18:03:32 UTC (rev 3929)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-03 18:23:18 UTC (rev 3930)
@@ -73,6 +73,7 @@
public static final String SIMULATION_PATH = "simulations";
public static final String INFORMATION_FILENAME = "information";
+ public static final String OBJECTIVE_FILENAME = "objective";
public static final String CONTROL_FILENAME = "control";
public static final String PARAMETERS_FILENAME = "parameters.properties";
public static final String RESULT_XML_FILENAME = "isis-mexico-output.xml";
@@ -98,6 +99,8 @@
protected boolean useLog;
protected transient File simulationControlFile = null;
+ /** objective value used as cache to prevent disk access */
+ protected transient Double objective = null;
/**
* Pour la lecture d'une simulation existante.
@@ -206,6 +209,33 @@
}
/**
+ * Retourne le fichier de stockage des inforations de la simulation.
+ *
+ * @param root le repertoire de stockage de la simulation
+ * @return information file
+ */
+ public static File getSimulationObjectiveFile(File root) {
+ File result = new File(root, OBJECTIVE_FILENAME);
+ return result;
+ }
+
+ public Double getObjective() throws IOException {
+ if (objective == null) {
+ File ObjFile = getObjectiveFile();
+ if (file.exists()) {
+ String s = FileUtils.readFileToString(ObjFile);
+ objective = Double.parseDouble(s);
+ }
+ }
+ return objective;
+ }
+
+ public void setObjective(double d) throws IOException {
+ objective = d;
+ FileUtils.writeStringToFile(getObjectiveFile(), String.valueOf(d));
+ }
+
+ /**
* Retourne le fichier de stockage des resultats sous format XML mexico
* de la simulation.
*
@@ -444,6 +474,16 @@
}
/**
+ * Retourne le nom du fichier contenant les informations de simulation.
+ *
+ * @return information file
+ */
+ protected File getObjectiveFile() {
+ File result = new File(getDirectory(), OBJECTIVE_FILENAME);
+ return result;
+ }
+
+ /**
* Get simulation informations.
*
* @return simulation information
Modified: 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 2014-04-03 18:03:32 UTC (rev 3929)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java 2014-04-03 18:23:18 UTC (rev 3930)
@@ -12,7 +12,10 @@
import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
import fr.ifremer.isisfish.simulator.launcher.SimulationService;
import java.io.File;
+import java.io.IOException;
import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
@@ -128,7 +131,14 @@
@Override
public void finished(SimulationJob job, SimulationStorage sim) {
- objective.eval(optimizationContext, null, null); // FIXME mettre les bons arguments
+ if (objective != null) {
+ try {
+ double obj = objective.eval(optimizationContext, null, null); // FIXME mettre les bons arguments
+ sim.setObjective(obj);
+ } catch (IOException eee) {
+ throw new IsisFishRuntimeException("Can't evaluate objective", eee);
+ }
+ }
done++;
}
1
0
r3929 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish: simulator util
by bpoussin@users.forge.codelutin.com 03 Apr '14
by bpoussin@users.forge.codelutin.com 03 Apr '14
03 Apr '14
Author: bpoussin
Date: 2014-04-03 20:03:32 +0200 (Thu, 03 Apr 2014)
New Revision: 3929
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3929
Log:
- fixes bug if script contains "import" section
- add db parameter for pre script
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/EvaluatorHelper.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java 2014-04-03 18:02:35 UTC (rev 3928)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScript.java 2014-04-03 18:03:32 UTC (rev 3929)
@@ -25,6 +25,7 @@
package fr.ifremer.isisfish.simulator;
import fr.ifremer.isisfish.util.Args;
+import org.nuiton.topia.TopiaContext;
/**
* Interface d'utilisation d'un prescript.
@@ -37,9 +38,10 @@
* Compute prescript
*
* @param context simulation context
+ * @param db database use during simulation
* @throws Exception
*/
- @Args({"context"})
- public void compute(SimulationContext context) throws Exception;
+ @Args({"context", "db"})
+ public void compute(SimulationContext context, TopiaContext db) throws Exception;
}
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-03 18:02:35 UTC (rev 3928)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationPreScriptListener.java 2014-04-03 18:03:32 UTC (rev 3929)
@@ -78,6 +78,7 @@
Map<String, Object> args = new HashMap<>();
args.put("context", context);
+ args.put("db", tx);
if (StringUtils.isNotBlank(generatedPreScript)) {
EvaluatorHelper.evaluate(SimulationPreScript.class.getPackage().getName(),
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/EvaluatorHelper.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/EvaluatorHelper.java 2014-04-03 18:02:35 UTC (rev 3928)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/util/EvaluatorHelper.java 2014-04-03 18:03:32 UTC (rev 3929)
@@ -42,6 +42,9 @@
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.nuiton.util.FileUtil;
/**
* Permet d'evaluer les equations ecritent en Java
@@ -59,8 +62,16 @@
/** Logger for this class. */
private static Log log = LogFactory.getLog(EvaluatorHelper.class);
+ /**
+ * Regex to match import:
+ * - "^(import ...;)" for import at line beginning
+ * - ";(import ...;)" for multiple import on same line
+ */
+ static protected Pattern grepImportPattern = Pattern.compile("(?:^\\s*|(?<=;)\\s*)(import[^;]+;)", Pattern.DOTALL + Pattern.MULTILINE);
+
+
protected static String normalizeClassName(String name) {
- StringBuffer result = new StringBuffer(name);
+ StringBuilder result = new StringBuilder(name);
for (int i=0; i<result.length(); i++) {
char c = result.charAt(i);
if (!Character.isJavaIdentifierPart(c)) {
@@ -189,7 +200,7 @@
// try to load class
try {
ClassLoader cl = IsisFish.config.getScriptClassLoader();
- clazz = cl.loadClass(classname);
+ clazz = cl.loadClass(classname);
} catch (Exception zzz) {
throw new IsisFishRuntimeException(t("isisfish.error.load.class", classname), zzz);
}
@@ -211,6 +222,12 @@
* @return script return (or null)
*/
protected static String generateContent(String packageName, String className, Method interfaceMethod, String script) {
+
+ StringBuilder imports = new StringBuilder();
+ StringBuilder code = new StringBuilder();
+
+ grepImport(script, imports, code);
+
String content = "";
if (packageName != null && !"".equals(packageName)) {
content += "package " + packageName + ";";
@@ -223,6 +240,7 @@
content += "import fr.ifremer.isisfish.types.*;";
content += "import org.nuiton.math.matrix.*;";
content += "import org.apache.commons.logging.*;";
+ content += imports.toString();
// generate content (do not add \n here, this help debug)
content += "public class " + className + " implements " + interfaceMethod.getDeclaringClass().getName() + " {";
@@ -251,12 +269,36 @@
}
}
content += ") throws Exception {";
- content += script;
+ content += code.toString();
content += "\n}\n}\n";
return content;
}
+ /**
+ * looking for import in code. return all import as found in code in imports args
+ * all other code are put in others
+ *
+ * @param code
+ * @param imports
+ * @param others
+ */
+ protected static void grepImport(String code, StringBuilder imports, StringBuilder others) {
+ Matcher matches = grepImportPattern.matcher(code);
+ int pos = 0;
+ while (matches.find()) {
+ int begin = matches.start(1);
+ int end = matches.end(1);
+
+ others.append(code.substring(pos, begin));
+ imports.append(code.substring(begin, end));
+ pos = end;
+
+ }
+
+ others.append(code.substring(pos));
+ }
+
protected static Object invoke(Class clazz, Method interfaceMethod, Map<String, Object> args) {
try {
Method method = clazz.getDeclaredMethod(interfaceMethod.getName(),
1
0
r3928 - branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher
by bpoussin@users.forge.codelutin.com 03 Apr '14
by bpoussin@users.forge.codelutin.com 03 Apr '14
03 Apr '14
Author: bpoussin
Date: 2014-04-03 20:02:35 +0200 (Thu, 03 Apr 2014)
New Revision: 3928
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3928
Log:
force minimum executor thread to 2 (needed for Optimization simulation)
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2014-04-03 16:26:54 UTC (rev 3927)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationExecutor.java 2014-04-03 18:02:35 UTC (rev 3928)
@@ -72,7 +72,8 @@
public SimulationExecutor(SimulationService simulationService,
SimulatorLauncher launcher, SimulationQueue workQueue) {
- super(launcher.maxSimulationThread(), launcher.maxSimulationThread(),
+ // need 2 threads for Optimization simulation, ensure that executor has 2 threads (Math.max)
+ super(Math.max(2, launcher.maxSimulationThread()), Math.max(2, launcher.maxSimulationThread()),
0L, TimeUnit.MILLISECONDS, (BlockingQueue) workQueue);
this.simulationService = simulationService;
this.launcher = launcher;
1
0
r3927 - branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore
by bpoussin@users.forge.codelutin.com 03 Apr '14
by bpoussin@users.forge.codelutin.com 03 Apr '14
03 Apr '14
Author: bpoussin
Date: 2014-04-03 18:26:54 +0200 (Thu, 03 Apr 2014)
New Revision: 3927
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3927
Log:
add hack to work with topia 2.8.1
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2014-04-03 16:26:03 UTC (rev 3926)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/DataStorage.java 2014-04-03 16:26:54 UTC (rev 3927)
@@ -43,6 +43,16 @@
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.IsisFishRuntimeException;
+import org.hibernate.SessionFactory;
+import org.hibernate.internal.SessionFactoryImpl;
+import org.hibernate.service.jdbc.connections.spi.ConnectionProvider;
+import org.hibernate.service.spi.Stoppable;
+import org.nuiton.topia.framework.TopiaContextImpl;
+//import org.hibernate.SessionFactory;
+//import org.hibernate.internal.SessionFactoryImpl;
+//import org.hibernate.service.jdbc.connections.spi.ConnectionProvider;
+//import org.hibernate.service.spi.Stoppable;
+//import org.nuiton.topia.framework.TopiaContextImpl;
/**
* Class abstraite dont herite tous les storages qui on besoin d'un TopiaContext
@@ -225,11 +235,32 @@
public void closeStorage() throws TopiaException {
if (storage != null) {
+// closeDatabase();
+ Stoppable pool = getHibernatePool();
+
storage.closeContext();
+ if (pool != null) {
+ pool.stop();
+ }
storage = null;
}
}
+ protected Stoppable getHibernatePool() throws TopiaException {
+ Stoppable result = null;
+ if (storage instanceof TopiaContextImpl) {
+ SessionFactory factory = ((TopiaContextImpl)storage).getHibernateFactory();
+ if(factory instanceof SessionFactoryImpl) {
+ SessionFactoryImpl sf = (SessionFactoryImpl)factory;
+ ConnectionProvider conn = sf.getConnectionProvider();
+ if(conn instanceof Stoppable) {
+ result = (Stoppable)conn;
+ }
+ }
+ }
+ return result;
+ }
+
/*
* @see fr.ifremer.isisfish.datastore.VersionStorage#delete(boolean)
*/
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-03 16:26:03 UTC (rev 3926)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-03 16:26:54 UTC (rev 3927)
@@ -749,11 +749,10 @@
File data = result.getDataBackupFile();
if (data.exists()) {
- TopiaContext root = result.getStorage();
- TopiaContext tx = root.beginTransaction();
+ TopiaContext tx = result.getStorage().beginTransaction();
tx.restore(data);
tx.commitTransaction();
- root.closeContext();
+ result.closeStorage();
}
return result;
1
0
r3926 - branches/4.0.1/src/main/resources/templates/script
by bpoussin@users.forge.codelutin.com 03 Apr '14
by bpoussin@users.forge.codelutin.com 03 Apr '14
03 Apr '14
Author: bpoussin
Date: 2014-04-03 18:26:03 +0200 (Thu, 03 Apr 2014)
New Revision: 3926
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3926
Log:
replace tab with space
Modified:
branches/4.0.1/src/main/resources/templates/script/simulationplan.ftl
Modified: branches/4.0.1/src/main/resources/templates/script/simulationplan.ftl
===================================================================
--- branches/4.0.1/src/main/resources/templates/script/simulationplan.ftl 2014-04-03 16:24:55 UTC (rev 3925)
+++ branches/4.0.1/src/main/resources/templates/script/simulationplan.ftl 2014-04-03 16:26:03 UTC (rev 3926)
@@ -81,10 +81,10 @@
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,
+ // put here all necessary result for this rule
+ // example:
+ // ResultName.MATRIX_BIOMASS,
+ // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
};
@Override
1
0
r3925 - branches/4.0.1/src/main/java/fr/ifremer/isisfish
by bpoussin@users.forge.codelutin.com 03 Apr '14
by bpoussin@users.forge.codelutin.com 03 Apr '14
03 Apr '14
Author: bpoussin
Date: 2014-04-03 18:24:55 +0200 (Thu, 03 Apr 2014)
New Revision: 3925
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3925
Log:
add new lock system in javadoc
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisConfig.java
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-04-03 13:43:32 UTC (rev 3924)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2014-04-03 16:24:55 UTC (rev 3925)
@@ -247,6 +247,7 @@
*
* Les valeurs acceptées sont :
* - file
+ * - FS
* - socket
* - no
*
1
0
r3924 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish: datastore ui/models/optimization ui/simulator
by echatellier@users.forge.codelutin.com 03 Apr '14
by echatellier@users.forge.codelutin.com 03 Apr '14
03 Apr '14
Author: echatellier
Date: 2014-04-03 15:43:32 +0200 (Thu, 03 Apr 2014)
New Revision: 3924
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3924
Log:
Add renderer to display description
Modified:
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.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
branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2014-04-02 15:19:15 UTC (rev 3923)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/ScriptStorage.java 2014-04-03 13:43:32 UTC (rev 3924)
@@ -32,7 +32,6 @@
import org.apache.commons.collections4.map.ReferenceMap;
import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.vcs.VCSException;
/**
Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java
===================================================================
--- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2014-04-02 15:19:15 UTC (rev 3923)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulatorStorage.java 2014-04-03 13:43:32 UTC (rev 3924)
@@ -32,7 +32,6 @@
import org.apache.commons.collections4.map.ReferenceMap;
import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.simulator.Simulator;
import fr.ifremer.isisfish.vcs.VCSException;
Modified: 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 2014-04-02 15:19:15 UTC (rev 3923)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObjectiveComboRenderer.java 2014-04-03 13:43:32 UTC (rev 3924)
@@ -25,6 +25,8 @@
package fr.ifremer.isisfish.ui.models.optimization;
+import static org.nuiton.i18n.I18n.t;
+
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;
@@ -33,7 +35,9 @@
import javax.swing.JLabel;
import javax.swing.JList;
+import fr.ifremer.isisfish.datastore.ObjectiveStorage;
import fr.ifremer.isisfish.simulator.Objective;
+import fr.ifremer.isisfish.ui.util.TooltipHelper;
/**
* Renderer pour la combo des script d'optimisation.
@@ -76,20 +80,20 @@
// 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);
+ try {
+ Objective objective = objectiveCache.get(objectiveName);
+ if (objective == null) {
+ ObjectiveStorage storage = ObjectiveStorage
+ .getObjective(objectiveName);
+ objective = storage.getNewInstance();
+ objectiveCache.put(objectiveName, objective);
}
- c.setToolTipText(optim.getDescription());
+ c.setToolTipText(objective.getDescription());
} catch (Exception e) {
- String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", sensitivityName));
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", objectiveName));
c.setToolTipText(errorTooltip);
- }*/
+ }
return c;
}
Modified: 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 2014-04-02 15:19:15 UTC (rev 3923)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/OptimizationComboRenderer.java 2014-04-03 13:43:32 UTC (rev 3924)
@@ -25,6 +25,8 @@
package fr.ifremer.isisfish.ui.models.optimization;
+import static org.nuiton.i18n.I18n.t;
+
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;
@@ -33,7 +35,9 @@
import javax.swing.JLabel;
import javax.swing.JList;
+import fr.ifremer.isisfish.datastore.OptimizationStorage;
import fr.ifremer.isisfish.simulator.Optimization;
+import fr.ifremer.isisfish.ui.util.TooltipHelper;
/**
* Renderer pour la combo des script d'optimisation.
@@ -76,20 +80,20 @@
// c'est tres couteux d'avoir une instance
// on les met en cache
- /*try {
+ try {
Optimization optim = optimizationCache.get(optimizationName);
if (optim == null) {
- SensitivityAnalysisStorage storage = SensitivityAnalysisStorage
- .getSensitivityAnalysis(optimizationName);
+ OptimizationStorage storage = OptimizationStorage
+ .getOptimization(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));
+ String errorTooltip = TooltipHelper.getErrorTooltip(t("isisfish.error.compile.fileerror", optimizationName));
c.setToolTipText(errorTooltip);
- }*/
+ }
return c;
}
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 15:19:15 UTC (rev 3923)
+++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-03 13:43:32 UTC (rev 3924)
@@ -53,7 +53,8 @@
</cell>
<cell fill="horizontal" weightx="1.0" columns="2">
<JComboBox id="fieldObjectiveMethodSelect" model='{handler.getObjectiveComboModel()}'
- onActionPerformed='handler.objectiveChanged(this)'/>
+ onActionPerformed='handler.objectiveChanged(this)'
+ renderer="{new fr.ifremer.isisfish.ui.models.optimization.ObjectiveComboRenderer()}"/>
</cell>
</row>
<row>
@@ -71,7 +72,8 @@
</cell>
<cell fill="horizontal" weightx="1.0" columns="2">
<JComboBox id="fieldOptimizationMethodSelect" model='{handler.getOptimizationComboModel()}'
- onActionPerformed='handler.optimizationChanged(this)'/>
+ onActionPerformed='handler.optimizationChanged(this)'
+ renderer="{new fr.ifremer.isisfish.ui.models.optimization.OptimizationComboRenderer()}"/>
</cell>
</row>
<row>
1
0