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
- 3175 discussions
Author: chatellier
Date: 2009-11-23 09:43:11 +0000 (Mon, 23 Nov 2009)
New Revision: 2769
Modified:
isis-fish/trunk/pom.xml
Log:
H2 (version bump)
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-11-20 16:47:27 UTC (rev 2768)
+++ isis-fish/trunk/pom.xml 2009-11-23 09:43:11 UTC (rev 2769)
@@ -224,7 +224,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.2.123</version>
+ <version>1.2.124</version>
<scope>compile</scope>
</dependency>
1
0
r2768 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish/simulator/sensitivity src/main/java/fr/ifremer/isisfish/ui/sensitivity src/main/java/fr/ifremer/isisfish/ui/simulator src/test/java/fr/ifremer/isisfish/ui/sensitivity
by chatellierï¼ users.labs.libre-entreprise.org 20 Nov '09
by chatellierï¼ users.labs.libre-entreprise.org 20 Nov '09
20 Nov '09
Author: chatellier
Date: 2009-11-20 16:47:27 +0000 (Fri, 20 Nov 2009)
New Revision: 2768
Added:
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java
Modified:
isis-fish/trunk/changelog.txt
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java
Log:
Debut de possibilit?\195?\169 de rechargement des facteurs
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/changelog.txt 2009-11-20 16:47:27 UTC (rev 2768)
@@ -1,5 +1,6 @@
isis-fish (3.3.0.0) stable; urgency=low
+ * Editing sensitivity factors after simulation reload now works
* Add confirmation message before launching groups creation wizard
* Fix metierSeasonInfo deletion (#1914)
* Remove some deprecated unused UI classes
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2009-11-20 16:47:27 UTC (rev 2768)
@@ -199,8 +199,9 @@
/**
* Set path.
*
- * @param path
- * the path to set
+ * Warning, path need to be always a valid entity property reference.
+ *
+ * @param path the path to set
*/
public void setPath(String path) {
this.path = path;
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-11-20 16:47:27 UTC (rev 2768)
@@ -35,13 +35,17 @@
import jaxx.runtime.JAXXInitialContext;
import jaxx.runtime.swing.editor.NumberEditor;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixND;
import org.nuiton.math.matrix.gui.MatrixEditor;
import org.nuiton.math.matrix.gui.MatrixPanelEditor;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
import org.nuiton.topia.persistence.TopiaEntity;
+import fr.ifremer.isisfish.entities.Equation;
import fr.ifremer.isisfish.entities.Formule;
import fr.ifremer.isisfish.entities.Selectivity;
import fr.ifremer.isisfish.entities.TargetSpecies;
@@ -627,7 +631,7 @@
* @param entity entity
* @return continuous enabled
*/
- public static boolean canBeContinuous(JComponent component,
+ public static boolean canBeContinue(JComponent component,
TopiaEntity entity) {
String fieldName = (String) component.getClientProperty("method");
if (component instanceof JTextComponent) {
@@ -656,17 +660,27 @@
* @return continuous enabled
*/
public static boolean canBeContinue(JComponent component, Object value) {
+ boolean result = false;
+
if (component instanceof JTextComponent) {
if (value instanceof Double) {
- return true;
+ result = true;
} else if (value instanceof Long) {
- return true;
+ result = true;
}
}
else if (component instanceof InputOneEquationUI) {
- return true;
+ result = true;
}
- return false;
+ else if (component instanceof MatrixPanelEditor) {
+ result = true;
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Component " + component.getClass().getSimpleName() +
+ " with value " + value + "(" + value.getClass().getSimpleName() + ") can be continuous : " + result);
+ }
+ return result;
}
/**
@@ -743,4 +757,88 @@
}
return result;
}
+
+ /**
+ * Return the component to edit factor depending on factor path.
+ * (inspect the return type of entity denoted by path)
+ *
+ * Used to edit reloader factor from old simulation.
+ *
+ * @param factor factor
+ * @param context context
+ * @return component
+ */
+ public static JComponent getEditorForFactor(Factor<?, ?> factor, TopiaContext context) {
+ JComponent result = null;
+
+ // we can't do it only with path maybe ?
+ // need to check property type with introspection
+ String path = factor.getPath();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Try to find component for path " + path);
+ }
+
+ String topiaId = path.substring(0, path.lastIndexOf('#'));
+ String property = StringUtils.capitalize(path.substring(path.lastIndexOf('#') + 1));
+
+ Class<?> typeClazz = null;
+ try {
+ TopiaEntity entity = context.findByTopiaId(topiaId);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Factor " + factor.getName() + " denoted entity " + entity);
+ }
+
+ Method method = entity.getClass().getMethod("get" + property);
+ typeClazz = method.getReturnType();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Property " + property + " denoted type " + typeClazz.getSimpleName());
+ }
+
+ result = getEditorForType(typeClazz);
+
+ } catch (TopiaException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't find entity for " + topiaId, ex);
+ }
+ } catch (SecurityException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get type info for " + topiaId, ex);
+ }
+ } catch (NoSuchMethodException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get type info for " + topiaId, ex);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Get editor for type.
+ *
+ * @param typeClazz type to get editor
+ * @return component
+ */
+ protected static JComponent getEditorForType(Class<?> typeClazz) {
+
+ JComponent result = null;
+
+ if (Double.class.isAssignableFrom(typeClazz)) {
+ result = new JTextField();
+ }
+ else if (double.class.isAssignableFrom(typeClazz)) {
+ result = new JTextField();
+ }
+ else if (MatrixND.class.isAssignableFrom(typeClazz)) {
+ result = new MatrixPanelEditor();
+ }
+ else if (Equation.class.isAssignableFrom(typeClazz)) {
+ result = new InputOneEquationUI();
+ }
+
+ return result;
+ }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2009-11-20 16:47:27 UTC (rev 2768)
@@ -34,6 +34,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.Domain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
protected JComponent cOrigine = null;
@@ -106,12 +107,24 @@
setExistingValue(true);
this.cOrigine = cOrigine;
this.path = f.getPath();
- factorName.setText(f.getName());
comment.setText(f.getComment());
Domain domain = f.getDomain();
this.factor = f;
if (domain instanceof ContinuousDomain) {
+ if (domain instanceof EquationContinuousDomain) {
+ EquationContinuousDomain equationDomain = (EquationContinuousDomain)domain;
+ String factorName2 = f.getName();
+ String suffix = "." + equationDomain.getVariableName();
+ if (factorName2.endsWith(suffix)) {
+ factorName2 = factorName2.substring(0, factorName2.length()-suffix.length());
+ }
+ factorName.setText(factorName2);
+ }
+ else {
+ // for other ContinuousDomain name is the same
+ factorName.setText(f.getName());
+ }
ContinuousDomain cDomain = (ContinuousDomain) domain;
continuousPanel = EditorHelper.getContinuousPanelWithValue(cOrigine, cDomain, f);
@@ -121,6 +134,10 @@
setContinueSelected(true);
setContinuePossible(true);
} else {
+
+ // discret fator, name is the same
+ factorName.setText(f.getName());
+
DiscreteDomain dDomain = (DiscreteDomain)domain;
int nb = dDomain.getValues().size();
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-11-20 16:47:27 UTC (rev 2768)
@@ -102,13 +102,23 @@
wizard.setVisible(true);
}
else {
-
- // factor path are :
- // fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels
- if (log.isInfoEnabled()) {
- log.info("UI not found for factor " + selectedFactor.getName());
- log.info(" with path " + selectedFactor.getPath());
+
+ // method 2
+ JComponent component2 = EditorHelper.getEditorForFactor(selectedFactor, getRegion().getTopiaContext());
+ if (component2 != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Component found is " + component2);
+ }
+
+ wizard.initExisting(component2, selectedFactor);
+ wizard.pack();
+ wizard.setVisible(true);
}
+ else {
+ if (log.isDebugEnabled()) {
+ log.debug("No component found, skip edition of factor " + selectedFactor.getName());
+ }
+ }
}
}
}
@@ -170,7 +180,6 @@
FactorTreeModel model = new FactorTreeModel(factors);
factorsTree.setModel(model);
factorsTree.setRootVisible(true);
- factorsTree.setCellRenderer(new FactorTreeCellRenderer());
getParentContainer(SensitivityUI.class).getSensitivityChooserUI().setFactorCardinalityTableModel();
}
@@ -208,7 +217,7 @@
<JPanel id="factorPanel" name="factorPanel" layout='{new BorderLayout()}'>
<JScrollPane constraints='BorderLayout.CENTER'>
<JTree id="factorsTree" rootVisible="true" selectionRow='0'
- model='{new DefaultTreeModel(null)}' />
+ model='{new DefaultTreeModel(null)}' cellRenderer='{new FactorTreeCellRenderer()}'/>
</JScrollPane>
</JPanel>
</JSplitPane>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2009-11-20 16:47:27 UTC (rev 2768)
@@ -73,7 +73,7 @@
<ParamsUI id='paramsUI' sensitivity='{true}' constructorParams='this'/>
</tab>
<tab title='isisfish.sensitivity.title'>
- <SensitivityTabUI id="sensitivityTabUI" constructorParams='new JAXXInitialContext().add(new InputAction()).add(new InputSaveVerifier()).add(this)'/>
+ <SensitivityTabUI id="sensitivityTabUI" constructorParams='new JAXXInitialContext().add(new InputAction()).add(new SensitivityAction()).add(new InputSaveVerifier()).add(this)'/>
</tab>
<tab title='isisfish.sensitivityChooser.title'>
<SensitivityChooserUI id="sensitivityChooserUI" constructorParams='this'/>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2009-11-20 16:47:27 UTC (rev 2768)
@@ -19,11 +19,9 @@
package fr.ifremer.isisfish.ui.sensitivity;
-import java.io.InputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.util.Properties;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -94,29 +92,4 @@
}
return sensitivityProperties;
}
-
- /**
- * Return factor name for topiaId composed path.
- *
- * For example :
- * fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels
- * will return :
- * Strategy.proportionSetOfVessels
- *
- * @param path factor path
- * @return factor name
- */
- public static String getFactorNameForPath(String path) {
-
- Pattern pattern = Pattern.compile("^([^#]*\\.)?(\\w+).*#(\\w+)$");
- Matcher matcher = pattern.matcher(path);
-
- String result = null;
-
- if (matcher.find()) {
- result = matcher.group(2) + "." + matcher.group(3);
- }
-
- return result;
- }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-11-20 16:47:27 UTC (rev 2768)
@@ -827,19 +827,18 @@
}
public void addFactor(Factor<?, ?> f, JComponent c) {
+ if (log.isDebugEnabled()) {
+ log.debug("Add factor (" + f.getName() + ") : " +f.getPath());
+ }
factors.put(f.getPath() + f.getName(), f);
factorComponent.put(f.getPath() + f.getName(), c);
designPlan.setFactors(getFactors());
}
- public Factor getFactor(String name) {
- return factors.get(name);
- }
-
public void addContinuousFactor(String name, String comment, String path, Double min,
Double max, JComponent c, boolean exist) {
- Factor f = new Factor(name);
- ContinuousDomain domain = new ContinuousDomain();
+ Factor<Double, Double> f = new Factor<Double, Double>(name);
+ ContinuousDomain<Double, Double> domain = new ContinuousDomain<Double, Double>();
domain.setMinBound(min);
domain.setMaxBound(max);
f.setDomain(domain);
@@ -853,8 +852,8 @@
public void addDiscreteFactor(String name, String comment, String path,
List<Serializable> values, JComponent c, boolean exist) {
- Factor f = new Factor(name);
- DiscreteDomain domain = new DiscreteDomain();
+ Factor<Serializable, Serializable> f = new Factor<Serializable, Serializable>(name);
+ DiscreteDomain<Serializable, Serializable> domain = new DiscreteDomain<Serializable, Serializable>();
int i = 0;
for (Serializable value : values) {
// FIXME test when integer
@@ -875,10 +874,13 @@
public void addContinuousEquationFactor(String name, String comment, String path,
EquationContinuousDomain domain, JComponent c,
boolean exist) {
- Factor f = new Factor(name);
+ // factor name need to be composed
+ Factor<Double, Double> f = new Factor<Double, Double>(name + "." + domain.getVariableName());
f.setDomain(domain);
f.setComment(comment);
- f.setPath(path + domain.getVariableName());
+ // don't modify path, need to be valid identifier
+ //f.setPath(path + domain.getVariableName());
+ f.setPath(path);
if (exist) {
removeFactor(f);
}
@@ -888,7 +890,7 @@
public void addContinuousMatrixFactor(String name, String comment, String path,
Double coef, MatrixND matrix,
String operateur, JComponent c, boolean exist) {
- Factor f = new Factor(name);
+ Factor<MatrixND, Double> f = new Factor<MatrixND, Double>(name);
MatrixContinuousDomain domain = new MatrixContinuousDomain();
domain.setMatrix(matrix);
domain.setOperator(operateur);
@@ -902,11 +904,11 @@
addFactor(f, c);
}
- public JComponent getFactorComponent(Factor f) {
- return factorComponent.get(f.getPath() + f);
+ public JComponent getFactorComponent(Factor<?, ?> f) {
+ return factorComponent.get(f.getPath() + f.getName());
}
- public void removeFactor(Factor f) {
+ public void removeFactor(Factor<?, ?> f) {
factors.remove(f.getPath() + f.getName());
factorComponent.remove(f.getPath() + f.getName());
designPlan.setFactors(getFactors());
Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java (rev 0)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java 2009-11-20 16:47:27 UTC (rev 2768)
@@ -0,0 +1,69 @@
+/* *##%
+ * Copyright (C) 2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.ui.sensitivity;
+
+import javax.swing.JComponent;
+import javax.swing.JTextField;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.math.matrix.MatrixND;
+import org.nuiton.math.matrix.MatrixNDImpl;
+import org.nuiton.math.matrix.gui.MatrixPanelEditor;
+
+import fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.entities.Equation;
+import fr.ifremer.isisfish.ui.input.InputOneEquationUI;
+
+/**
+ * Test for {@link EditorHelper} class.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class EditorHelperTest extends AbstractIsisFishTest {
+
+ /**
+ * Test that editor for given type are those excepted.
+ */
+ @Test
+ public void testGetEditorForType() {
+
+ JComponent result = EditorHelper.getEditorForType(double.class);
+ Assert.assertTrue(result instanceof JTextField);
+
+ result = EditorHelper.getEditorForType(Double.class);
+ Assert.assertTrue(result instanceof JTextField);
+
+ result = EditorHelper.getEditorForType(MatrixND.class);
+ Assert.assertTrue(result instanceof MatrixPanelEditor);
+
+ result = EditorHelper.getEditorForType(MatrixNDImpl.class);
+ Assert.assertTrue(result instanceof MatrixPanelEditor);
+
+ result = EditorHelper.getEditorForType(Equation.class);
+ Assert.assertTrue(result instanceof InputOneEquationUI);
+
+ //result = EditorHelper.getEditorForType(PopulationReproductionEquation.class);
+ //Assert.assertTrue(result instanceof InputOneEquationUI);
+ }
+}
Property changes on: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelperTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2009-11-20 15:20:15 UTC (rev 2767)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2009-11-20 16:47:27 UTC (rev 2768)
@@ -25,18 +25,10 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.junit.Assert;
import org.junit.Test;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaContextFactory;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.TopiaNotFoundException;
-import org.nuiton.topia.persistence.TopiaDAO;
import org.nuiton.topia.persistence.TopiaEntity;
import fr.ifremer.isisfish.AbstractIsisFishTest;
-import fr.ifremer.isisfish.IsisFishDAOHelper;
-import fr.ifremer.isisfish.datastore.IsisH2Config;
/**
* Test for {@link SensitivityUtils} class.
@@ -54,76 +46,28 @@
.getLog(SensitivityUtilsTest.class);
/**
- * Return a basic valid topia context.
- *
- * @throws TopiaNotFoundException
- */
- protected TopiaContext getTopiaContext() throws TopiaNotFoundException {
- Properties config = new Properties();
- IsisH2Config.addMemDatabaseConfig(config, "test");
- IsisH2Config.addHibernateMapping(config);
- TopiaContext context = TopiaContextFactory.getContext(config);
- return context;
- }
-
- /**
- * Test return of getFactorNameForPath().
- */
- @Test
- public void testGetFactorNameForPath() {
-
- String result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels");
- Assert.assertEquals("Strategy.proportionSetOfVessels", result);
-
- result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear#1234#5678#name");
- Assert.assertEquals("Gear.name", result);
-
- result = SensitivityUtils.getFactorNameForPath("Gear#1234#5678#name");
- Assert.assertEquals("Gear.name", result);
-
- result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear#name");
- Assert.assertEquals("Gear.name", result);
-
- result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear");
- Assert.assertNull(result);
-
- result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear.name");
- Assert.assertNull(result);
- }
-
- /**
* Test (par introspection) que tous les facteurs existent.
*
+ * @throws ClassNotFoundException
+ * @throws IllegalAccessException
+ * @throws InstantiationException
* @throws NoSuchMethodException
* @throws SecurityException
- * @throws TopiaException
* @throws InvocationTargetException
- * @throws IllegalAccessException
* @throws IllegalArgumentException
*/
@Test
- public void testFactorExistence() throws SecurityException,
- NoSuchMethodException, TopiaException, IllegalArgumentException,
- IllegalAccessException, InvocationTargetException {
+ public void testFactorExistence() throws InstantiationException, IllegalAccessException,
+ ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException,
+ InvocationTargetException {
Properties factors = SensitivityUtils.getProperties();
- TopiaContext testTC = getTopiaContext();
- TopiaContext context = testTC.beginTransaction();
for (String factorName : factors.stringPropertyNames()) {
String className = factorName.substring(0, factorName.indexOf("."));
String propertyName = StringUtils.capitalize(factorName.substring(factorName.indexOf(".") + 1));
+
+ TopiaEntity entity = (TopiaEntity)Class.forName("fr.ifremer.isisfish.entities." + className + "Impl").newInstance();
- // get proper DAO
- if (log.isDebugEnabled()) {
- log.debug("Call get" + className + "DAO() on " + IsisFishDAOHelper.class.getSimpleName());
- }
- Method mStatic = IsisFishDAOHelper.class.getMethod("get" + className + "DAO", TopiaContext.class);
- TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) mStatic.invoke(null, new Object[] { context });
- Assert.assertNotNull("No DOA found for factor " + factorName, dao);
-
- // create one instance
- TopiaEntity entity = dao.create();
-
// call proper property
if (log.isDebugEnabled()) {
log.debug(" and call get" + propertyName + "() on " + className);
@@ -131,6 +75,5 @@
Method m = entity.getClass().getMethod("get" + propertyName);
m.invoke(entity, (Object[]) null);
}
- context.closeContext();
}
}
1
0
r2767 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity
by chatellierï¼ users.labs.libre-entreprise.org 20 Nov '09
by chatellierï¼ users.labs.libre-entreprise.org 20 Nov '09
20 Nov '09
Author: chatellier
Date: 2009-11-20 15:20:15 +0000 (Fri, 20 Nov 2009)
New Revision: 2767
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java
Log:
Toujours afficher le nom du facteur, toujours toujours toujours !!!
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java 2009-11-19 17:23:16 UTC (rev 2766)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java 2009-11-20 15:20:15 UTC (rev 2767)
@@ -19,6 +19,7 @@
package fr.ifremer.isisfish.ui.sensitivity;
import static org.nuiton.i18n.I18n._;
+
import java.awt.Component;
import java.util.List;
@@ -27,7 +28,6 @@
import javax.swing.tree.DefaultTreeCellRenderer;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
/**
* Factor tree cell renderer.
@@ -52,23 +52,15 @@
boolean hasFocus) {
JLabel c = (JLabel)super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
-
+
if (value instanceof List<?>) {
c.setText(_("isisfish.sensitivity.factors") + " : ");
}
else if (value instanceof Factor<?, ?>) {
Factor<? ,?> factor = (Factor<?, ?>)value;
-
- if (factor.getDomain() instanceof EquationContinuousDomain) {
- EquationContinuousDomain domain = (EquationContinuousDomain)factor.getDomain();
- c.setText(factor.getName() + "." + domain.getVariableName());
- }
- else {
- c.setText(factor.getName());
- }
+ c.setText(factor.getName());
}
return c;
}
-
}
1
0
Author: chatellier
Date: 2009-11-19 17:23:16 +0000 (Thu, 19 Nov 2009)
New Revision: 2766
Modified:
isis-fish/trunk/changelog.txt
Log:
Upate changelog about migration
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-11-19 17:21:50 UTC (rev 2765)
+++ isis-fish/trunk/changelog.txt 2009-11-19 17:23:16 UTC (rev 2766)
@@ -10,7 +10,8 @@
* Global VCS improvement (code, script UI, input UI)
* Update to svnkit 1.3.1
* Unification of error frames
- * Move codelutin librairies to nuiton.org
+ * Add ".shp" extension to database map files list (database migration)
+ * Move codelutin librairies to nuiton.org (database migration)
-- mar. oct. 13 09:48:15 CEST 2009
1
0
r2765 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/migration
by chatellierï¼ users.labs.libre-entreprise.org 19 Nov '09
by chatellierï¼ users.labs.libre-entreprise.org 19 Nov '09
19 Nov '09
Author: chatellier
Date: 2009-11-19 17:21:50 +0000 (Thu, 19 Nov 2009)
New Revision: 2765
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
Log:
Modify 3.2 to 3.3 migration : add .shp extension to each file in map list
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2009-11-18 13:26:59 UTC (rev 2764)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/migration/SwingMigrationCallbackHandler.java 2009-11-19 17:21:50 UTC (rev 2765)
@@ -154,8 +154,10 @@
"update POPULATIONSEASONINFO set emigrationMatrix_semantics = replace(emigrationMatrix_semantics, 'org.codelutin.', 'org.nuiton.') where emigrationMatrix_semantics IS NOT null;",
"update POPULATIONSEASONINFO set immigrationMatrix_semantics = replace(immigrationMatrix_semantics, 'org.codelutin.', 'org.nuiton.') where immigrationMatrix_semantics IS NOT null;",
"update RESULT set matrix_semantics = replace(matrix_semantics, 'org.codelutin.', 'org.nuiton.') where matrix_semantics IS NOT null;",
- "update STRATEGYMONTHINFO set proportionMetier_semantics = replace(proportionMetier_semantics, 'org.codelutin.', 'org.nuiton.') where proportionMetier_semantics IS NOT null;"
-
+ "update STRATEGYMONTHINFO set proportionMetier_semantics = replace(proportionMetier_semantics, 'org.codelutin.', 'org.nuiton.') where proportionMetier_semantics IS NOT null;",
+ // add .shp default extension
+ "update FISHERYREGION set MAPFILES = regexp_replace(MAPFILES, '(,|$)', '.shp$1') where MAPFILES IS NOT null;"
+
};
for (String sql : sqls) {
log.info("try " + sql);
1
0
r2764 - isis-fish/trunk/src/main/resources
by chatellierï¼ users.labs.libre-entreprise.org 18 Nov '09
by chatellierï¼ users.labs.libre-entreprise.org 18 Nov '09
18 Nov '09
Author: chatellier
Date: 2009-11-18 13:26:59 +0000 (Wed, 18 Nov 2009)
New Revision: 2764
Modified:
isis-fish/trunk/src/main/resources/sensitivity.properties
Log:
Fix again factors list
Modified: isis-fish/trunk/src/main/resources/sensitivity.properties
===================================================================
--- isis-fish/trunk/src/main/resources/sensitivity.properties 2009-11-17 17:07:59 UTC (rev 2763)
+++ isis-fish/trunk/src/main/resources/sensitivity.properties 2009-11-18 13:26:59 UTC (rev 2764)
@@ -14,20 +14,19 @@
Gear.StandardisationFactor
Metier.GearParameterValue
Population.Capturability
-Population.GeographicId
PopulationGroup.ReproductionRate
Population.Growth
Population.GrowthReverse
-Population.MaturityGroup
Population.MeanWeight
Population.MonthGapBetweenReproRecrutement
Population.NaturalDeathRate
-Population.PlusGroup
Population.Price
Population.RecruitmentDistribution
Population.ReproductionEquation
-PopulationSeasonInfo.GroupChange
PopulationSeasonInfo.LengthChangeMatrix
+PopulationSeasonInfo.MigrationEquation
+PopulationSeasonInfo.EmigrationEquation
+PopulationSeasonInfo.ImmigrationEquation
SetOfVessels.FixedCosts
SetOfVessels.NumberOfVessels
SetOfVessels.TechnicalEfficiencyEquation
@@ -35,7 +34,6 @@
StrategyMonthInfo.MinInactivityDays
StrategyMonthInfo.ProportionMetier
Strategy.ProportionSetOfVessels
-Strategy.SetOfVessels
TripType.MinTimeBetweenTrip
TripType.TripDuration
VesselType.ActivityRange
1
0
r2763 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input
by chatellierï¼ users.labs.libre-entreprise.org 17 Nov '09
by chatellierï¼ users.labs.libre-entreprise.org 17 Nov '09
17 Nov '09
Author: chatellier
Date: 2009-11-17 17:07:59 +0000 (Tue, 17 Nov 2009)
New Revision: 2763
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx
Log:
Wrong _bean and _method
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx 2009-11-17 16:47:21 UTC (rev 2762)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx 2009-11-17 17:07:59 UTC (rev 2763)
@@ -53,7 +53,7 @@
lblText='{_("isisfish.common.migration")}' actif='{isActif()}'
bean='{getPopInfo()}' nameEquation='Migration' methodGet='MigrationEquation' methodSet='MigrationEquationAsString'
clazz='{fr.ifremer.isisfish.equation.MigrationEquation.class}'
- decorator='boxed' _bean='{PopulationImpl.class}' _method='"Growth"'/>
+ decorator='boxed' _bean='{PopulationSeasonInfoImpl.class}' _method='"MigrationEquation"'/>
</cell>
</row>
<row>
@@ -62,7 +62,7 @@
lblText='{_("isisfish.common.emigration")}' actif='{isActif()}'
bean='{getPopInfo()}' nameEquation='Emigration' methodGet='EmigrationEquation' methodSet='EmigrationEquationAsString'
clazz='{fr.ifremer.isisfish.equation.EmigrationEquation.class}'
- decorator='boxed' _bean='{PopulationImpl.class}' _method='"Growth"'/>
+ decorator='boxed' _bean='{PopulationSeasonInfoImpl.class}' _method='"EmigrationEquation"'/>
</cell>
</row>
<row>
@@ -71,7 +71,7 @@
lblText='{_("isisfish.common.immigration")}' actif='{isActif()}'
bean='{getPopInfo()}' nameEquation='Immigration' methodGet='ImmigrationEquation' methodSet='ImmigrationEquationAsString'
clazz='{fr.ifremer.isisfish.equation.ImmigrationEquation.class}'
- decorator='boxed' _bean='{PopulationImpl.class}' _method='"Growth"'/>
+ decorator='boxed' _bean='{PopulationSeasonInfoImpl.class}' _method='"ImmigrationEquation"'/>
</cell>
</row>
</Table>
1
0
r2762 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input
by chatellierï¼ users.labs.libre-entreprise.org 17 Nov '09
by chatellierï¼ users.labs.libre-entreprise.org 17 Nov '09
17 Nov '09
Author: chatellier
Date: 2009-11-17 16:47:21 +0000 (Tue, 17 Nov 2009)
New Revision: 2762
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierTabUI.jaxx
Log:
GearParameterValue can be factorisable
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierTabUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierTabUI.jaxx 2009-11-17 16:32:39 UTC (rev 2761)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierTabUI.jaxx 2009-11-17 16:47:21 UTC (rev 2762)
@@ -101,7 +101,8 @@
<!-- jaxx.runtime.SwingUtil.getStringValue() => when null values -->
<cell fill='horizontal' weightx='1.0'>
<JTextField id="fieldMetierParam" text='{jaxx.runtime.SwingUtil.getStringValue(getBean().getGearParameterValue())}'
- onKeyReleased='getBean().setGearParameterValue(fieldMetierParam.getText())' enabled='{isActif()}' decorator='boxed'/>
+ onKeyReleased='getBean().setGearParameterValue(fieldMetierParam.getText())' enabled='{isActif()}' decorator='boxed'
+ _bean='{MetierImpl.class}' _method='"GearParameterValue"' />
</cell>
</row>
<row>
1
0
r2761 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity
by chatellierï¼ users.labs.libre-entreprise.org 17 Nov '09
by chatellierï¼ users.labs.libre-entreprise.org 17 Nov '09
17 Nov '09
Author: chatellier
Date: 2009-11-17 16:32:39 +0000 (Tue, 17 Nov 2009)
New Revision: 2761
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
Log:
Mistake due to formating problems ?
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-11-17 15:38:42 UTC (rev 2760)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-11-17 16:32:39 UTC (rev 2761)
@@ -662,11 +662,10 @@
} else if (value instanceof Long) {
return true;
}
- /* always false
- else if (InputOneEquationUI.class.isInstance(component)) {
- return true;
- }*/
}
+ else if (component instanceof InputOneEquationUI) {
+ return true;
+ }
return false;
}
1
0
r2760 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/ui/input main/java/fr/ifremer/isisfish/ui/sensitivity main/resources/i18n test/java/fr/ifremer/isisfish/ui/sensitivity
by chatellierï¼ users.labs.libre-entreprise.org 17 Nov '09
by chatellierï¼ users.labs.libre-entreprise.org 17 Nov '09
17 Nov '09
Author: chatellier
Date: 2009-11-17 15:38:42 +0000 (Tue, 17 Nov 2009)
New Revision: 2760
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java
Removed:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityNavigationTreeSelectionAdapter.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabbedPaneListener.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java
isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
Log:
Refactoring of sensitivity (phase1)
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-11-17 15:38:42 UTC (rev 2760)
@@ -34,13 +34,6 @@
<!-- Layer bloquant completement la saisie -->
<jaxx.runtime.swing.BlockingLayerUI id='layerUI'
blockingColor='{new Color(50,50,50)}' />
- <!-- acceptAction='{new AbstractAction() {
- private static final long serialVersionUID = 1L;
- @Override
- public void actionPerformed(ActionEvent e) {
- accept(e);
- }
- }}' -->
<!-- Layer avec les icones permettant d'ajouter des facteurs -->
<jaxx.runtime.swing.BlockingLayerUI2 id='layerUI2'
@@ -133,7 +126,8 @@
String method = (String)boxed.getClientProperty("method");
boolean isSensitivityFactorEnabled = false;
if (classBean != null) {
- isSensitivityFactorEnabled = SensitivityUtils.isSensitivityFactorEnabled(classBean.getSimpleName().replace("Impl", "") + "." + method);
+ String sensitivityFactorName = classBean.getSimpleName().replace("Impl", "") + "." + method;
+ isSensitivityFactorEnabled = SensitivityUtils.isSensitivityFactorEnabled(sensitivityFactorName);
}
if (isSensitivityFactorEnabled) {
jaxx.runtime.swing.BlockingLayerUI2 ui = layerUI2.clone();
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/DefaultContinuousPanelUI.jaxx 2009-11-17 15:38:42 UTC (rev 2760)
@@ -23,27 +23,23 @@
protected JTextField continueMax = null;
protected JTextField continueMin = null;
-addPropertyChangeListener("continuePossible", new PropertyChangeListener(){
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- continueMax.setVisible((Boolean)evt.getNewValue());
- continueMin.setVisible((Boolean)evt.getNewValue());
- }
-
+addPropertyChangeListener("continuePossible", new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ continueMax.setVisible((Boolean)evt.getNewValue());
+ continueMin.setVisible((Boolean)evt.getNewValue());
+ }
});
-addPropertyChangeListener("continueSelected", new PropertyChangeListener(){
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- continueMax.setEnabled((Boolean)evt.getNewValue());
- continueMin.setEnabled((Boolean)evt.getNewValue());
- }
-
+addPropertyChangeListener("continueSelected", new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ continueMax.setEnabled((Boolean)evt.getNewValue());
+ continueMin.setEnabled((Boolean)evt.getNewValue());
+ }
});
-public void init(JTextField cMin, JTextField cMax){
+public void init(JTextField cMin, JTextField cMax) {
continueMax = cMax;
continueMin = cMin;
continueMax.setEnabled(isContinueSelected());
@@ -54,10 +50,12 @@
continueMaxPanel.add(continueMax, BorderLayout.CENTER);
continueMinPanel.add(continueMin, BorderLayout.CENTER);
}
-public String getMin(){
+
+public String getMin() {
return continueMin.getText();
}
-public String getMax(){
+
+public String getMax() {
return continueMax.getText();
}
]]>
@@ -65,13 +63,13 @@
<Table id='content' constraints='BorderLayout.CENTER'>
<row>
<cell fill='horizontal'>
- <JLabel text='isisfish.factor.firstValue' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ <JLabel text='isisfish.sensitivity.firstValue' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
</cell>
<cell fill='horizontal' weightx='0.5'>
<JPanel id='continueMinPanel' layout='{new BorderLayout()}'/>
</cell>
<cell fill='horizontal'>
- <JLabel text='isisfish.factor.lastValue' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ <JLabel text='isisfish.sensitivity.lastValue' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
</cell>
<cell fill='horizontal' weightx='0.5'>
<JPanel id='continueMaxPanel' layout='{new BorderLayout()}'/>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-11-17 15:38:42 UTC (rev 2760)
@@ -18,6 +18,30 @@
package fr.ifremer.isisfish.ui.sensitivity;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JList;
+import javax.swing.JRadioButton;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.text.JTextComponent;
+
+import jaxx.runtime.JAXXInitialContext;
+import jaxx.runtime.swing.editor.NumberEditor;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.math.matrix.MatrixND;
+import org.nuiton.math.matrix.gui.MatrixEditor;
+import org.nuiton.math.matrix.gui.MatrixPanelEditor;
+import org.nuiton.topia.persistence.TopiaEntity;
+
import fr.ifremer.isisfish.entities.Formule;
import fr.ifremer.isisfish.entities.Selectivity;
import fr.ifremer.isisfish.entities.TargetSpecies;
@@ -35,64 +59,60 @@
import fr.ifremer.isisfish.ui.input.PopulationMigrationImmigrationUI;
import fr.ifremer.isisfish.ui.input.PopulationMigrationMigrationUI;
import fr.ifremer.isisfish.ui.input.PopulationZonesEditorUI;
+import fr.ifremer.isisfish.ui.input.RangeOfValuesUI;
+import fr.ifremer.isisfish.ui.input.SelectivityEditorUI;
import fr.ifremer.isisfish.ui.input.SpeciesStructuredUI;
import fr.ifremer.isisfish.ui.widget.IntervalPanel;
-import java.lang.reflect.Method;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JList;
-import javax.swing.JRadioButton;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-import javax.swing.text.JTextComponent;
-import jaxx.runtime.JAXXInitialContext;
-import jaxx.runtime.swing.JAXXList;
-import org.nuiton.math.matrix.MatrixND;
-import org.nuiton.math.matrix.gui.MatrixPanelEditor;
-import org.nuiton.topia.persistence.TopiaEntity;
-import fr.ifremer.isisfish.ui.input.RangeOfValuesUI;
-import fr.ifremer.isisfish.ui.input.SelectivityEditorUI;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import jaxx.runtime.swing.editor.NumberEditor;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.gui.MatrixEditor;
/**
+ * Helper for sensitivity Swing component manipulation.
+ *
+ * @author letellier
+ * @version $Revision$
*
- * @author letellier
+ * Last update: $Date$
+ * by : $Author$
*/
public class EditorHelper {
/** Class logger. */
private static Log log = LogFactory.getLog(InputTabbedPaneListener.class);
- public static String getMethod(JComponent c) {
- return (String) c.getClientProperty("method");
+ /**
+ * Get "method" property value for wing component.
+ *
+ * @param component component
+ * @return property value
+ */
+ public static String getMethod(JComponent component) {
+ return (String) component.getClientProperty("method");
}
- public static JComponent getEditor(JComponent c, TopiaEntity e) {
+ /**
+ * Get copy of component with original entity value as default value.
+ *
+ * @param component component
+ * @param entity entity
+ * @return component copy
+ */
+ public static JComponent getEditor(JComponent component, TopiaEntity entity) {
JComponent result = null;
try {
- String fieldName = getMethod(c);
- result = c.getClass().newInstance();
+ String fieldName = getMethod(component);
+ result = component.getClass().newInstance();
if (result instanceof JTextField) {
- ((JTextComponent) result).setText(String.valueOf(callMethod(e,
- fieldName)));
+ ((JTextComponent) result).setText(String.valueOf(getMethodValue(entity, fieldName)));
} else if (result instanceof NumberEditor) {
- NumberEditor ui = (NumberEditor) c;
+ NumberEditor ui = (NumberEditor) component;
JTextField numEditor = new JTextField();
numEditor.setText(String.valueOf(ui.getModel()));
result = numEditor;
} else if (result instanceof MatrixEditor) {
- MatrixEditor ui = (MatrixEditor) c;
- MatrixND m = (MatrixND) callMethod(e, fieldName);
+ MatrixEditor ui = (MatrixEditor) component;
+ MatrixND m = (MatrixND) getMethodValue(entity, fieldName);
MatrixPanelEditor matrix = new MatrixPanelEditor(false);
if (m != null) {
matrix.setMatrix(m.clone());
@@ -102,38 +122,37 @@
result = matrix;
} else if (result instanceof JTable) {
- ((JTable) result).setModel(((JTable) c).getModel());
+ ((JTable) result).setModel(((JTable) component).getModel());
} else if (result instanceof JComboBox) {
- JComboBox combo = (JComboBox) c;
+ JComboBox combo = (JComboBox) component;
JComboBox comboResult = new JComboBox();
comboResult.setModel(combo.getModel());
comboResult.setSelectedIndex(combo.getSelectedIndex());
result = comboResult;
} else if (result instanceof JList) {
- JList list = (JList) c;
+ JList list = (JList) component;
JList listResult = new JList();
listResult.setModel(list.getModel());
listResult.setSelectedIndices(list.getSelectedIndices());
result = listResult;
} else if (result instanceof JCheckBox) {
- ((JCheckBox) result).setSelected((Boolean) callMethod(e,
+ ((JCheckBox) result).setSelected((Boolean) getMethodValue(entity,
fieldName));
- JCheckBox cOrigin = (JCheckBox) c;
+ JCheckBox cOrigin = (JCheckBox) component;
((JCheckBox) result).setText(cOrigin.getText());
} else if (result instanceof JRadioButton) {
- ((JRadioButton) result).setSelected((Boolean) callMethod(e,
+ ((JRadioButton) result).setSelected((Boolean) getMethodValue(entity,
fieldName));
- JRadioButton cOrigin = (JRadioButton) c;
+ JRadioButton cOrigin = (JRadioButton) component;
((JRadioButton) result).setText(cOrigin.getText());
} else if (result instanceof SpeciesStructuredUI) {
- SpeciesStructuredUI origine = (SpeciesStructuredUI) c;
SpeciesStructuredUI ui = new SpeciesStructuredUI();
ui.setActif(true);
result = ui;
} else if (result instanceof InputOneEquationUI) {
- InputOneEquationUI origine = (InputOneEquationUI) c;
+ InputOneEquationUI origine = (InputOneEquationUI) component;
InputOneEquationUI ui = new InputOneEquationUI(
new JAXXInitialContext().add(new InputAction()));
ui.setSelectedEquation(origine.getSelectedEquation());
@@ -142,20 +161,20 @@
ui.setClazz(origine.getClazz());
ui.setMethodGet(origine.getMethodGet());
ui.setMethodSet(origine.getMethodSet());
- ui.setBean(e);
+ ui.setBean(entity);
ui.setActif(true);
ui.refresh();
result = ui;
} else if (result instanceof IntervalPanel) {
IntervalPanel ipResult = new IntervalPanel();
- IntervalPanel ip = (IntervalPanel) c;
+ IntervalPanel ip = (IntervalPanel) component;
ipResult.setLabelRenderer(Month.MONTH);
ipResult.setModel(ip.getModel().clone());
result = ipResult;
} else if (result instanceof RangeOfValuesUI) {
result = new JTextField("");
} else if (result instanceof SelectivityEditorUI) {
- SelectivityEditorUI origine = (SelectivityEditorUI) c;
+ SelectivityEditorUI origine = (SelectivityEditorUI) component;
SelectivityEditorUI ui = new SelectivityEditorUI(
new JAXXInitialContext().add(new InputAction()).add(
origine.getRegion()).add(
@@ -166,7 +185,7 @@
ui.setActif(true);
result = ui;
} else if (result instanceof MetierSeasonInfoSpeciesEditorUI) {
- MetierSeasonInfoSpeciesEditorUI origine = (MetierSeasonInfoSpeciesEditorUI) c;
+ MetierSeasonInfoSpeciesEditorUI origine = (MetierSeasonInfoSpeciesEditorUI) component;
MetierSeasonInfoSpeciesEditorUI ui = new MetierSeasonInfoSpeciesEditorUI(
new JAXXInitialContext().add(new InputAction()).add(
origine.getRegion()).add(
@@ -180,16 +199,14 @@
ui.refresh();
result = ui;
} else if (result instanceof PopulationZonesEditorUI) {
- PopulationZonesEditorUI origine = (PopulationZonesEditorUI) c;
- PopulationZonesEditorUI ui = new PopulationZonesEditorUI(
- new JAXXInitialContext().add(new InputAction()).add(
- origine.getRegion()));
+ PopulationZonesEditorUI origine = (PopulationZonesEditorUI) component;
+ PopulationZonesEditorUI ui = new PopulationZonesEditorUI(new JAXXInitialContext().add(new InputAction()).add(origine.getRegion()));
ui.setBean(origine.getBean());
ui.setActif(true);
ui.refresh();
result = ui;
} else if (result instanceof PopulationMigrationMigrationUI) {
- PopulationMigrationMigrationUI origine = (PopulationMigrationMigrationUI) c;
+ PopulationMigrationMigrationUI origine = (PopulationMigrationMigrationUI) component;
PopulationMigrationMigrationUI ui = new PopulationMigrationMigrationUI(
new JAXXInitialContext().add(new InputAction()));
ui.setBean(origine.getBean());
@@ -198,149 +215,179 @@
ui.refreshPanel();
result = ui;
} else if (result instanceof PopulationMigrationEmigrationUI) {
- PopulationMigrationEmigrationUI origine = (PopulationMigrationEmigrationUI) c;
- PopulationMigrationEmigrationUI ui = new PopulationMigrationEmigrationUI(
- new JAXXInitialContext().add(new InputAction()));
+ PopulationMigrationEmigrationUI origine = (PopulationMigrationEmigrationUI) component;
+ PopulationMigrationEmigrationUI ui = new PopulationMigrationEmigrationUI(new JAXXInitialContext().add(new InputAction()));
ui.setBean(origine.getBean());
ui.setPopInfo(origine.getPopInfo());
ui.setActif(true);
ui.refreshPanel();
result = ui;
} else if (result instanceof PopulationMigrationImmigrationUI) {
- PopulationMigrationImmigrationUI origine = (PopulationMigrationImmigrationUI) c;
- PopulationMigrationImmigrationUI ui = new PopulationMigrationImmigrationUI(
- new JAXXInitialContext().add(new InputAction()));
+ PopulationMigrationImmigrationUI origine = (PopulationMigrationImmigrationUI) component;
+ PopulationMigrationImmigrationUI ui = new PopulationMigrationImmigrationUI(new JAXXInitialContext().add(new InputAction()));
ui.setBean(origine.getBean());
ui.setPopInfo(origine.getPopInfo());
ui.setActif(true);
ui.refreshPanel();
result = ui;
}
- } catch (Exception ex) {
- log.error(ex);
+ } catch (IllegalAccessException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't make new instance of " + component, ex);
+ }
+ } catch (InstantiationException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't make new instance of " + component, ex);
+ }
}
return result;
}
- public static ContinuousPanelContainerUI getContinuousPanel(JComponent c,
- TopiaEntity e) {
+ /**
+ * Get copy of component with original entity value as default value.
+ *
+ * @param component component
+ * @param entity entity
+ * @return component copy
+ */
+ public static ContinuousPanelContainerUI getContinuousPanel(JComponent component, TopiaEntity entity) {
ContinuousPanelContainerUI result = null;
- try {
- String fieldName = getMethod(c);
- DefaultContinuousPanelUI continuousPanel = null;
- if (c instanceof InputOneEquationUI) {
- InputOneEquationUI origine = (InputOneEquationUI) c;
- EquationContinuousPanelUI ui = new EquationContinuousPanelUI(
- new JAXXInitialContext().add(new InputAction()));
- ui.setSelectedEquation(origine.getSelectedEquation());
- ui.setLblText(origine.getLblText());
- ui.setNameEquation(origine.getNameEquation());
- ui.setClazz(origine.getClazz());
- ui.setMethodGet(origine.getMethodGet());
- ui.setMethodSet(origine.getMethodSet());
- ui.setBean(e);
- result = ui;
- } else if (c instanceof MatrixEditor) {
- MatrixContinuousPanelUI matrixPanel = new MatrixContinuousPanelUI();
- MatrixND m = (MatrixND) callMethod(e, fieldName);
- if (m != null) {
- matrixPanel.setMatrix(m.clone());
- }
- result = matrixPanel;
- } else {
- continuousPanel = new DefaultContinuousPanelUI();
- result = continuousPanel;
+ String fieldName = getMethod(component);
+ DefaultContinuousPanelUI continuousPanel = null;
+ if (component instanceof InputOneEquationUI) {
+ InputOneEquationUI origine = (InputOneEquationUI) component;
+ EquationContinuousPanelUI ui = new EquationContinuousPanelUI(
+ new JAXXInitialContext().add(new InputAction()));
+ ui.setSelectedEquation(origine.getSelectedEquation());
+ ui.setLblText(origine.getLblText());
+ ui.setNameEquation(origine.getNameEquation());
+ ui.setClazz(origine.getClazz());
+ ui.setMethodGet(origine.getMethodGet());
+ ui.setMethodSet(origine.getMethodSet());
+ ui.setBean(entity);
+ result = ui;
+ } else if (component instanceof MatrixEditor) {
+ MatrixContinuousPanelUI matrixPanel = new MatrixContinuousPanelUI();
+ MatrixND m = (MatrixND) getMethodValue(entity, fieldName);
+ if (m != null) {
+ matrixPanel.setMatrix(m.clone());
}
- if (continuousPanel != null) {
- continuousPanel.init(getNewBoundEditor(c, e),
- getNewBoundEditor(c, e));
- }
- } catch (Exception ex) {
- log.error(ex);
+ result = matrixPanel;
+ } else {
+ continuousPanel = new DefaultContinuousPanelUI();
+ result = continuousPanel;
}
+ if (continuousPanel != null) {
+ continuousPanel.init(getNewBoundEditor(component, entity), getNewBoundEditor(component, entity));
+ }
return result;
}
- public static JTextField getNewBoundEditor(JComponent c, TopiaEntity e) {
- String fieldName = getMethod(c);
- Object value = callMethod(e, fieldName);
- if (JTextComponent.class.isInstance(c)) {
+ /**
+ * Get new text component with current entity default value.
+ *
+ * @param component component
+ * @param entity entity
+ * @return
+ */
+ protected static JTextField getNewBoundEditor(JComponent component, TopiaEntity entity) {
+ String fieldName = getMethod(component);
+ Object value = getMethodValue(entity, fieldName);
+ if (component instanceof JTextComponent) {
return new JTextField(String.valueOf(value));
}
return new JTextField();
}
+ /**
+ * Get continuous editor for component with given value.
+ *
+ * @param component component
+ * @param domain domain
+ * @param factor factor
+ * @return component copy
+ */
public static ContinuousPanelContainerUI getContinuousPanelWithValue(
- JComponent c, ContinuousDomain domain, Factor f) {
+ JComponent component, ContinuousDomain<?, ?> domain, Factor<?, ?> factor) {
ContinuousPanelContainerUI result = null;
- try {
- DefaultContinuousPanelUI continuousPanel = null;
- if (c instanceof InputOneEquationUI) {
- InputOneEquationUI origine = (InputOneEquationUI) c;
- EquationContinuousPanelUI ui = new EquationContinuousPanelUI(
- new JAXXInitialContext().add(new InputAction()));
- ui.setLblText(origine.getLblText());
- ui.setNameEquation(origine.getNameEquation());
- ui.getEditor().getEditor().setText((String) f.getValue());
- ui.setClazz(origine.getClazz());
- ui.setMethodGet(origine.getMethodGet());
- ui.setMethodSet(origine.getMethodSet());
- ui.setBean(origine.getBean());
- EquationContinuousDomain equationDomain = (EquationContinuousDomain) domain;
- ui.addDomain(equationDomain);
- ui.setTable();
+ DefaultContinuousPanelUI continuousPanel = null;
+ if (component instanceof InputOneEquationUI) {
+ InputOneEquationUI origine = (InputOneEquationUI) component;
+ EquationContinuousPanelUI ui = new EquationContinuousPanelUI(
+ new JAXXInitialContext().add(new InputAction()));
+ ui.setLblText(origine.getLblText());
+ ui.setNameEquation(origine.getNameEquation());
+ ui.getEditor().getEditor().setText((String) factor.getValue());
+ ui.setClazz(origine.getClazz());
+ ui.setMethodGet(origine.getMethodGet());
+ ui.setMethodSet(origine.getMethodSet());
+ ui.setBean(origine.getBean());
- result = ui;
- } else if (c instanceof MatrixEditor) {
- MatrixContinuousPanelUI panel = new MatrixContinuousPanelUI();
- MatrixContinuousDomain matrixDomain = (MatrixContinuousDomain) domain;
- MatrixND m = matrixDomain.getMatrix();
- if (m != null) {
- panel.setMatrix(m.clone());
- }
- panel.getOperator().setSelectedItem(matrixDomain.getOperator());
- panel.getCoef().setText(String.valueOf(matrixDomain.getCoefficient() * 100));
- result = panel;
- } else {
- continuousPanel = new DefaultContinuousPanelUI();
- result = continuousPanel;
+ EquationContinuousDomain equationDomain = (EquationContinuousDomain) domain;
+ ui.addDomain(equationDomain);
+ ui.setTable();
+
+ result = ui;
+ } else if (component instanceof MatrixEditor) {
+ MatrixContinuousPanelUI panel = new MatrixContinuousPanelUI();
+ MatrixContinuousDomain matrixDomain = (MatrixContinuousDomain) domain;
+ MatrixND m = matrixDomain.getMatrix();
+ if (m != null) {
+ panel.setMatrix(m.clone());
}
- if (continuousPanel != null) {
- continuousPanel.init(new JTextField(String.valueOf(domain
- .getMinBound())), new JTextField(String.valueOf(domain
- .getMaxBound())));
- }
- } catch (Exception ex) {
- log.error(ex);
+ panel.getOperator().setSelectedItem(matrixDomain.getOperator());
+ panel.getCoef().setText(
+ String.valueOf(matrixDomain.getCoefficient() * 100));
+ result = panel;
+ } else {
+ continuousPanel = new DefaultContinuousPanelUI();
+ result = continuousPanel;
}
+ if (continuousPanel != null) {
+ continuousPanel.init(new JTextField(String.valueOf(domain
+ .getMinBound())), new JTextField(String.valueOf(domain
+ .getMaxBound())));
+ }
+
return result;
}
- public static JComponent getEditorWithValue(JComponent c) {
- return getEditorWithValue(c, getValue(c));
+ /**
+ * Get new instance of component filled with original swing component value.
+ *
+ * @param component component
+ * @return new component instance
+ */
+ public static JComponent getEditorWithValue(JComponent component) {
+ Object value = getValue(component);
+ return getEditorWithValue(component, value);
}
- public static JComponent getEditorWithValue(JComponent c, Object value) {
+ /**
+ * Get new instance of component filled with specified value depending
+ * of component type.
+ *
+ * @param component component
+ * @param value value
+ * @return new component instance
+ */
+ public static JComponent getEditorWithValue(JComponent component, Object value) {
JComponent result = null;
+
try {
- result = c.getClass().newInstance();
+ result = component.getClass().newInstance();
if (result instanceof JTextComponent) {
((JTextComponent) result).setText(String.valueOf(value));
-
} else if (result instanceof NumberEditor) {
JTextField numEditor = new JTextField();
numEditor.setText(String.valueOf(value));
result = numEditor;
-
- } else if (result instanceof JTable) {
- // ((JTable) result).setModel(((JTable)c).getModel());
-
} else if (result instanceof RangeOfValuesUI) {
result = new JTextField(value.toString());
} else if (result instanceof MatrixEditor) {
- MatrixEditor ui = (MatrixEditor) c;
+ MatrixEditor ui = (MatrixEditor) component;
MatrixND m = (MatrixND) value;
MatrixPanelEditor matrix = new MatrixPanelEditor(false);
if (m != null) {
@@ -350,37 +397,36 @@
matrix.setLinearModelShowDefault(ui.isLinearModelShowDefault());
result = matrix;
} else if (result instanceof JComboBox) {
- JComboBox combo = (JComboBox) c;
+ JComboBox combo = (JComboBox) component;
JComboBox comboResult = new JComboBox();
comboResult.setModel(combo.getModel());
comboResult.setSelectedItem(value);
result = comboResult;
- } else if (result instanceof JAXXList) {
- JAXXList list = (JAXXList) c;
- JAXXList listResult = new JAXXList();
+ } else if (result instanceof JList) {
+ JList list = (JList) component;
+ JList listResult = new JList();
listResult.setModel(list.getModel());
- listResult.setSelectedValues((Object[]) value);
+ //listResult.setSelectedValues((Object[]) value);
listResult.setSelectedIndices(list.getSelectedIndices());
result = listResult;
} else if (result instanceof JCheckBox) {
((JCheckBox) result).setSelected((Boolean) value);
- JCheckBox ch = (JCheckBox) c;
+ JCheckBox ch = (JCheckBox) component;
((JCheckBox) result).setText(ch.getText());
} else if (result instanceof JRadioButton) {
((JRadioButton) result).setSelected((Boolean) value);
- JRadioButton cOrigin = (JRadioButton) c;
+ JRadioButton cOrigin = (JRadioButton) component;
((JRadioButton) result).setText(cOrigin.getText());
} else if (result instanceof SpeciesStructuredUI) {
- SpeciesStructuredUI origine = (SpeciesStructuredUI) c;
+ //SpeciesStructuredUI origine = (SpeciesStructuredUI) component;
SpeciesStructuredUI ui = new SpeciesStructuredUI();
ui.getFieldSpeciesDynamicAge().setSelected((Boolean) value);
ui.setActif(true);
result = ui;
} else if (result instanceof InputOneEquationUI) {
- InputOneEquationUI origine = (InputOneEquationUI) c;
- InputOneEquationUI ui = new InputOneEquationUI(
- new JAXXInitialContext().add(new InputAction()));
+ InputOneEquationUI origine = (InputOneEquationUI) component;
+ InputOneEquationUI ui = new InputOneEquationUI(new JAXXInitialContext().add(new InputAction()));
ui.getEditor().setText((String) value);
ui.setLblText(origine.getLblText());
ui.setNameEquation(origine.getNameEquation());
@@ -391,25 +437,23 @@
result = ui;
} else if (result instanceof IntervalPanel) {
IntervalPanel ipResult = new IntervalPanel();
- IntervalPanel ip = (IntervalPanel) c;
+ IntervalPanel ip = (IntervalPanel) component;
ipResult.setLabelRenderer(Month.MONTH);
ipResult.setModel(ip.getModel().clone());
result = ipResult;
} else if (result instanceof SelectivityEditorUI) {
- SelectivityEditorUI origine = (SelectivityEditorUI) c;
+ SelectivityEditorUI origine = (SelectivityEditorUI) component;
SelectivityEditorUI ui = new SelectivityEditorUI(
new JAXXInitialContext().add(new InputAction()).add(
- origine.getRegion()).add(
- new InputSaveVerifier()));
+ origine.getRegion()).add(new InputSaveVerifier()));
ui.setBean(origine.getBean());
- ui.getBean().setPopulationSelectivity(
- (Collection<Selectivity>) value);
+ ui.getBean().setPopulationSelectivity((Collection<Selectivity>) value);
ui.setActif(true);
ui.refresh();
ui.setActif(true);
result = ui;
} else if (result instanceof MetierSeasonInfoSpeciesEditorUI) {
- MetierSeasonInfoSpeciesEditorUI origine = (MetierSeasonInfoSpeciesEditorUI) c;
+ MetierSeasonInfoSpeciesEditorUI origine = (MetierSeasonInfoSpeciesEditorUI) component;
MetierSeasonInfoSpeciesEditorUI ui = new MetierSeasonInfoSpeciesEditorUI(
new JAXXInitialContext().add(new InputAction()).add(
origine.getRegion()).add(
@@ -417,144 +461,155 @@
ui.setBean(origine.getBean());
if (origine.getMetierSeasonInfo() != null) {
ui.setMetierSeasonInfo(origine.getMetierSeasonInfo());
- ui.getMetierSeasonInfo().setSpeciesTargetSpecies(
- (Collection<TargetSpecies>) value);
+ ui.getMetierSeasonInfo().setSpeciesTargetSpecies((Collection<TargetSpecies>) value);
ui.setMetierSeasonSelected(true);
ui.setActif(true);
}
ui.refresh();
result = ui;
} else if (result instanceof PopulationZonesEditorUI) {
- PopulationZonesEditorUI origine = (PopulationZonesEditorUI) c;
+ PopulationZonesEditorUI origine = (PopulationZonesEditorUI) component;
PopulationZonesEditorUI ui = new PopulationZonesEditorUI(
- new JAXXInitialContext().add(new InputAction()).add(
- origine.getRegion()));
+ new JAXXInitialContext().add(new InputAction()).add(origine.getRegion()));
ui.setBean(origine.getBean());
MatrixND m = (MatrixND) value;
- ui.getFieldPopulationMappingZoneReproZoneRecru().setMatrix(
- m == null ? null : m.clone());
+ ui.getFieldPopulationMappingZoneReproZoneRecru().setMatrix(m == null ? null : m.clone());
ui.setActif(true);
ui.refresh();
result = ui;
} else if (result instanceof PopulationMigrationMigrationUI) {
- PopulationMigrationMigrationUI origine = (PopulationMigrationMigrationUI) c;
+ PopulationMigrationMigrationUI origine = (PopulationMigrationMigrationUI) component;
PopulationMigrationMigrationUI ui = new PopulationMigrationMigrationUI(
new JAXXInitialContext().add(new InputAction()));
ui.setBean(origine.getBean());
ui.setPopInfo(origine.getPopInfo());
MatrixND m = (MatrixND) value;
- ui.getPopInfo()
- .setMigrationMatrix(m == null ? null : m.clone());
+ ui.getPopInfo().setMigrationMatrix(m == null ? null : m.clone());
ui.setActif(true);
ui.refreshPanel();
result = ui;
} else if (result instanceof PopulationMigrationEmigrationUI) {
- PopulationMigrationEmigrationUI origine = (PopulationMigrationEmigrationUI) c;
+ PopulationMigrationEmigrationUI origine = (PopulationMigrationEmigrationUI) component;
PopulationMigrationEmigrationUI ui = new PopulationMigrationEmigrationUI(
new JAXXInitialContext().add(new InputAction()));
ui.setBean(origine.getBean());
ui.setPopInfo(origine.getPopInfo());
MatrixND m = (MatrixND) value;
- ui.getPopInfo().setEmigrationMatrix(
- m == null ? null : m.clone());
+ ui.getPopInfo().setEmigrationMatrix(m == null ? null : m.clone());
ui.setActif(true);
ui.refreshPanel();
result = ui;
} else if (result instanceof PopulationMigrationImmigrationUI) {
- PopulationMigrationImmigrationUI origine = (PopulationMigrationImmigrationUI) c;
+ PopulationMigrationImmigrationUI origine = (PopulationMigrationImmigrationUI) component;
PopulationMigrationImmigrationUI ui = new PopulationMigrationImmigrationUI(
new JAXXInitialContext().add(new InputAction()));
ui.setBean(origine.getBean());
ui.setPopInfo(origine.getPopInfo());
MatrixND m = (MatrixND) value;
- ui.getPopInfo().setImmigrationMatrix(
- m == null ? null : m.clone());
+ ui.getPopInfo().setImmigrationMatrix(m == null ? null : m.clone());
ui.setActif(true);
ui.refreshPanel();
result = ui;
}
- } catch (Exception ex) {
- log.error(ex);
+ } catch (IllegalAccessException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't make new instance of " + component, ex);
+ }
+ } catch (InstantiationException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't make new instance of " + component, ex);
+ }
}
return result;
}
- public static Object getValue(JComponent c) {
+ /**
+ * Return value in swing component that could be next used into factor.
+ *
+ * @param component component
+ * @return factor value
+ */
+ public static Object getValue(JComponent component) {
Object result = null;
- if (c instanceof JTextComponent) {
- result = ((JTextComponent) c).getText();
- } else if (c instanceof NumberEditor) {
- result = ((NumberEditor) c).getModel();
- } else if (c instanceof PopulationZonesEditorUI) {
- result = ((PopulationZonesEditorUI) c)
+ if (component instanceof JTextComponent) {
+ result = ((JTextComponent) component).getText();
+ } else if (component instanceof NumberEditor) {
+ result = ((NumberEditor) component).getModel();
+ } else if (component instanceof PopulationZonesEditorUI) {
+ result = ((PopulationZonesEditorUI) component)
.getFieldPopulationMappingZoneReproZoneRecru().getMatrix();
- } else if (c instanceof JTable) {
- // ((JTable) result).setText(BeanUtils.getProperty(e, fieldName));
+ } else if (component instanceof MatrixPanelEditor) {
+ result = ((MatrixPanelEditor) component).getMatrix();
- } else if (c instanceof MatrixPanelEditor) {
- result = ((MatrixPanelEditor) c).getMatrix();
+ } else if (component instanceof JComboBox) {
+ result = ((JComboBox) component).getSelectedItem();
- } else if (c instanceof JComboBox) {
- result = ((JComboBox) c).getSelectedItem();
+ } else if (component instanceof JList) {
+ result = ((JList) component).getSelectedValues();
- } else if (c instanceof JList) {
- result = ((JList) c).getSelectedValues();
+ } else if (component instanceof JCheckBox) {
+ result = ((JCheckBox) component).isSelected();
- } else if (c instanceof JCheckBox) {
- result = ((JCheckBox) c).isSelected();
+ } else if (component instanceof JRadioButton) {
+ result = ((JRadioButton) component).isSelected();
- } else if (c instanceof JRadioButton) {
- result = ((JRadioButton) c).isSelected();
+ } else if (component instanceof InputOneEquationUI) {
+ result = ((InputOneEquationUI) component).getEditor().getText();
- } else if (c instanceof InputOneEquationUI) {
- result = ((InputOneEquationUI) c).getEditor().getText();
+ } else if (component instanceof SpeciesStructuredUI) {
+ result = ((SpeciesStructuredUI) component)
+ .getFieldSpeciesDynamicAge().isSelected();
- } else if (c instanceof IntervalPanel) {
- // ((IntervalPanel) result).setModel((BeanUtils.getProperty(e, fieldName)));
-
- } else if (c instanceof SpeciesStructuredUI) {
- result = ((SpeciesStructuredUI) c).getFieldSpeciesDynamicAge()
- .isSelected();
-
- } else if (c instanceof SelectivityEditorUI) {
- result = ((SelectivityEditorUI) c).getBean()
+ } else if (component instanceof SelectivityEditorUI) {
+ result = ((SelectivityEditorUI) component).getBean()
.getPopulationSelectivity();
- } else if (c instanceof MetierSeasonInfoSpeciesEditorUI) {
- result = ((MetierSeasonInfoSpeciesEditorUI) c)
+ } else if (component instanceof MetierSeasonInfoSpeciesEditorUI) {
+ result = ((MetierSeasonInfoSpeciesEditorUI) component)
.getMetierSeasonInfo().getSpeciesTargetSpecies();
- } else if (c instanceof PopulationZonesEditorUI) {
- result = ((PopulationZonesEditorUI) c)
+ } else if (component instanceof PopulationZonesEditorUI) {
+ result = ((PopulationZonesEditorUI) component)
.getFieldPopulationMappingZoneReproZoneRecru().getMatrix();
- } else if (c instanceof RangeOfValuesUI) {
+ } /*else if (component instanceof RangeOfValuesUI) {
- } else if (c instanceof PopulationMigrationMigrationUI) {
- result = ((PopulationMigrationMigrationUI) c).getPopInfo()
+ } */else if (component instanceof PopulationMigrationMigrationUI) {
+ result = ((PopulationMigrationMigrationUI) component).getPopInfo()
.getMigrationMatrix();
- } else if (c instanceof PopulationMigrationEmigrationUI) {
- result = ((PopulationMigrationEmigrationUI) c).getPopInfo()
+ } else if (component instanceof PopulationMigrationEmigrationUI) {
+ result = ((PopulationMigrationEmigrationUI) component).getPopInfo()
.getEmigrationMatrix();
- } else if (c instanceof PopulationMigrationImmigrationUI) {
- result = ((PopulationMigrationImmigrationUI) c).getPopInfo()
- .getImmigrationMatrix();
+ } else if (component instanceof PopulationMigrationImmigrationUI) {
+ result = ((PopulationMigrationImmigrationUI) component)
+ .getPopInfo().getImmigrationMatrix();
}
return result;
}
- public static boolean isRangeOfValue(JComponent c) {
- if (c instanceof RangeOfValuesUI) {
+ /**
+ * Return if component is instanceof {@link RangeOfValuesUI}.
+ * @param component component
+ * @return {@code true} if component is intance of {@link RangeOfValuesUI}
+ */
+ public static boolean isRangeOfValue(JComponent component) {
+ if (component instanceof RangeOfValuesUI) {
return true;
}
return false;
}
- public static boolean isContinue(JComponent c) {
- if (c instanceof RangeOfValuesUI) {
- RangeOfValuesUI ui = (RangeOfValuesUI) c;
+ /**
+ * Return if component is is continue factor enable.
+ *
+ * @param component component
+ * @return {@code true} if component is is continue factor enable
+ */
+ public static boolean isContinue(JComponent component) {
+ if (component instanceof RangeOfValuesUI) {
+ RangeOfValuesUI ui = (RangeOfValuesUI) component;
if (ui.getFieldGearParamType().getSelectedItem().equals("Float")) {
String value = ui.getFieldGearParamPossibleValue().getText();
if (value.matches("^\\ *[0-9]*\\ *\\-\\ *[0-9]*\\ *$")) {
@@ -565,19 +620,27 @@
return false;
}
- public static boolean canBeContinue(JComponent c, TopiaEntity e) {
- String fieldName = (String) c.getClientProperty("method");
- if (c instanceof JTextComponent) {
- Object o = callMethod(e, fieldName);
- return canBeContinue(c, o);
- } else if (c instanceof NumberEditor) {
+ /**
+ * Return true if component or entity can be defined in continuous factor.
+ *
+ * @param component component
+ * @param entity entity
+ * @return continuous enabled
+ */
+ public static boolean canBeContinuous(JComponent component,
+ TopiaEntity entity) {
+ String fieldName = (String) component.getClientProperty("method");
+ if (component instanceof JTextComponent) {
+ Object o = getMethodValue(entity, fieldName);
+ return canBeContinue(component, o);
+ } else if (component instanceof NumberEditor) {
return true;
- } else if (c instanceof InputOneEquationUI) {
+ } else if (component instanceof InputOneEquationUI) {
return true;
- } else if (c instanceof MatrixEditor) {
+ } else if (component instanceof MatrixEditor) {
return true;
- } else if (c instanceof RangeOfValuesUI) {
- RangeOfValuesUI ui = (RangeOfValuesUI) c;
+ } else if (component instanceof RangeOfValuesUI) {
+ RangeOfValuesUI ui = (RangeOfValuesUI) component;
if (ui.getFieldGearParamType().getSelectedItem().equals("Float")) {
return true;
}
@@ -585,26 +648,44 @@
return false;
}
- public static boolean canBeContinue(JComponent c, Object o) {
- if (c instanceof JTextComponent) {
- if (Double.class.isInstance(o)) {
+ /**
+ * Return true if component or value can be defined in continuous factor.
+ *
+ * @param component component
+ * @param value value
+ * @return continuous enabled
+ */
+ public static boolean canBeContinue(JComponent component, Object value) {
+ if (component instanceof JTextComponent) {
+ if (value instanceof Double) {
return true;
- } else if (Long.class.isInstance(o)) {
+ } else if (value instanceof Long) {
return true;
- } else if (InputOneEquationUI.class.isInstance(c)) {
+ }
+ /* always false
+ else if (InputOneEquationUI.class.isInstance(component)) {
return true;
- }
+ }*/
}
return false;
}
- protected static Object callMethod(TopiaEntity e, String fieldName) {
+ /**
+ * Get value for fieldName in entity.
+ *
+ * @param entity
+ * @param fieldName
+ * @return
+ */
+ protected static Object getMethodValue(TopiaEntity entity, String fieldName) {
Object result = null;
try {
- Method m = e.getClass().getMethod("get" + fieldName, null);
- result = m.invoke(e, (Object[]) null);
+ Method m = entity.getClass().getMethod("get" + fieldName);
+ result = m.invoke(entity, (Object[]) null);
} catch (Exception ex) {
- log.error(ex);
+ if (log.isErrorEnabled()) {
+ log.error(ex);
+ }
}
return result;
}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanelUI.jaxx 2009-11-17 15:38:42 UTC (rev 2760)
@@ -40,11 +40,11 @@
import org.apache.commons.lang.StringUtils;
protected String[] columnNames = {
- _("isisfish.factor.equation.variable.name"),
- _("isisfish.factor.equation.variable.value"),
- _("isisfish.factor.equation.variable.coefficient"),
- _("isisfish.factor.equation.variable.operator"),
- _("isisfish.factor.equation.variable.action")};
+ _("isisfish.sensitivity.equation.variable.name"),
+ _("isisfish.sensitivity.equation.variable.value"),
+ _("isisfish.sensitivity.equation.variable.coefficient"),
+ _("isisfish.sensitivity.equation.variable.operator"),
+ _("isisfish.sensitivity.equation.variable.action")};
protected java.util.List<EquationContinuousDomain> datas = new ArrayList<EquationContinuousDomain>();
protected java.util.List<JComboBox> operateurs = new ArrayList<JComboBox>();
protected java.util.List<JButton> actions = new ArrayList<JButton>();
@@ -94,7 +94,7 @@
} else if (columnIndex == 3) {
return datas.get(rowIndex).getOperator();
} else if (columnIndex == 4) {
- return _("isisfish.factor.validDiscretNumber");
+ return _("isisfish.sensitivity.validDiscretNumber");
}
return null;
}
@@ -145,7 +145,7 @@
}
protected void newButton(){
JButton result = new JButton();
- result.setText(_("isisfish.factor.validDiscretNumber"));
+ result.setText(_("isisfish.sensitivity.validDiscretNumber"));
actions.add(result);
result.addActionListener(new ActionListener() {
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java 2009-11-17 15:38:42 UTC (rev 2760)
@@ -1,119 +0,0 @@
-/* *##%
- * Copyright (C) 2009 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *##%*/
-
-package fr.ifremer.isisfish.ui.sensitivity;
-
-import static org.nuiton.i18n.I18n._;
-
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
-import fr.ifremer.isisfish.ui.simulator.SimulAction;
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.MatrixND;
-import org.nuiton.topia.persistence.TopiaEntity;
-
-/**
- *
- * @author letellier
- */
-public class FactorAction {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- private static Log log = LogFactory.getLog(FactorAction.class);
-
- public static void saveContinue(JComponent cOrigine, String name, String comment, String path, ContinuousPanelContainerUI panel, SimulAction action, boolean exist){
- DefaultContinuousPanelUI defaultPanel = null;
- if (MatrixContinuousPanelUI.class.isInstance(panel)){
- MatrixContinuousPanelUI matrixPanel = (MatrixContinuousPanelUI)panel;
- Double coef = Double.valueOf(matrixPanel.getCoef().getText()) / 100;
- MatrixND matrix = matrixPanel.getMatrix();
- String operateur = (String)matrixPanel.getOperator().getSelectedItem();
- action.addContinuousMatrixFactor(name, comment, path, coef, matrix, operateur, cOrigine, exist);
-
- } else if (EquationContinuousPanelUI.class.isInstance(panel)){
- try {
- EquationContinuousPanelUI equationPanel = (EquationContinuousPanelUI) panel;
-
- TopiaEntity bean = equationPanel.getBean();
- String methodSet = equationPanel.getMethodSet();
- Method m = bean.getClass().getMethod("set" + methodSet, String.class);
- m.invoke(bean, equationPanel.getEditor().getEditor().getText());
-
- // Save equation
- bean.update();
- bean.getTopiaContext().commitTransaction();
-
- List<EquationContinuousDomain> domains = equationPanel.getDomains();
- for (EquationContinuousDomain domain : domains) {
- if (domain.getReferenceValue() != null
- && domain.getCoefficient() != null
- && domain.getCoefficient() <= 100
- && domain.getCoefficient() > 0
- && domain.getOperator() != null
- && domain.getVariableName() != null ){
- action.addContinuousEquationFactor(name, comment, path, domain, cOrigine, exist);
- } else {
- log.warn("domain: " + domain);
- log.warn("domain invalid: " +
- "domain.getReferenceValue() != null(" +
- (domain.getReferenceValue()) +
- ") domain.getCoefficient() != null(" +
- (domain.getCoefficient()) +
- ") domain.getCoefficient() <= 100 (" +
- (domain.getCoefficient()) +
- ") domain.getCoefficient() > 0 (" +
- (domain.getCoefficient()) +
- ") domain.getOperator() != null (" +
- (domain.getOperator()) +
- ") domain.getVariableName() != null(" +
- (domain.getVariableName()) +
- ")");
- JOptionPane.showMessageDialog(equationPanel, _("isisfish.error.factor.invalid") + domain.getVariableName());
- }
- }
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't call method : ", ex);
- }
- }
- } else if (DefaultContinuousPanelUI.class.isInstance(panel)){
- defaultPanel = (DefaultContinuousPanelUI)panel;
- action.addContinuousFactor(name, comment, path, getMin(defaultPanel), getMax(defaultPanel), cOrigine, exist);
- }
- }
- protected static Double getMin(DefaultContinuousPanelUI defaultPanel){
- return Double.parseDouble(defaultPanel.getMin());
- }
- protected static Double getMax(DefaultContinuousPanelUI defaultPanel){
- return Double.parseDouble(defaultPanel.getMax());
- }
- public static void saveDiscret(JComponent cOrigine, String name, String comment, String path, List<JComponent> components, SimulAction action, boolean exist){
- List<Serializable> values = new ArrayList<Serializable>();
- for(JComponent c: components){
- values.add((Serializable)EditorHelper.getValue(c));
- }
- action.addDiscreteFactor(name, comment, path, values, cOrigine, exist);
- }
-}
-;
\ No newline at end of file
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java 2009-11-17 15:38:42 UTC (rev 2760)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2009 Code Lutin
+ * Copyright (C) 2009 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
@@ -33,10 +33,10 @@
* Factor tree cell renderer.
*
* @author chatellier
- * @version $Revision: 1.0 $
+ * @version $Revision$
*
- * Last update : $Date: 9 mars 2009 $
- * By : $Author: chatellier $
+ * Last update : $Date$
+ * By : $Author$
*/
public class FactorTreeCellRenderer extends DefaultTreeCellRenderer {
@@ -53,10 +53,10 @@
JLabel c = (JLabel)super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
- if (value instanceof List) {
- c.setText(_("isisfish.factor.factors") + " : ");
+ if (value instanceof List<?>) {
+ c.setText(_("isisfish.sensitivity.factors") + " : ");
}
- else if (value instanceof Factor) {
+ else if (value instanceof Factor<?, ?>) {
Factor<? ,?> factor = (Factor<?, ?>)value;
if (factor.getDomain() instanceof EquationContinuousDomain) {
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java 2009-11-17 15:38:42 UTC (rev 2760)
@@ -32,10 +32,10 @@
* Cette classe gere l'affichage d'une liste de facteurs dans l'arbre.
*
* @author chatellier
- * @version $Revision: 2011 $
+ * @version $Revision$
*
* Last update : $Date: 2008-06-13 11:05:57 +0200 (ven., 13 juin 2008)
- * $ By : $Author: chatellier $
+ * $ By : $Author$
*/
public class FactorTreeModel implements TreeModel {
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizardUI.jaxx 2009-11-17 15:38:42 UTC (rev 2760)
@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*##%*/ -->
-<JDialog id="FactorTypeChooser" title='isisfish.factor.title' modal='{true}' layout='{new BorderLayout()}'>
+<JDialog title='isisfish.sensitivity.title' modal='{true}' layout='{new BorderLayout()}'>
<Boolean id='continuePossible' javaBean='true'/>
@@ -43,29 +43,25 @@
protected ContinuousPanelContainerUI continuousPanel = null;
protected Factor factor = null;
-addPropertyChangeListener("continuePossible", new PropertyChangeListener(){
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (continuousPanel != null){
- continuousPanel.setContinuePossible((Boolean)evt.getNewValue());
- }
+addPropertyChangeListener("continuePossible", new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (continuousPanel != null) {
+ continuousPanel.setContinuePossible((Boolean)evt.getNewValue());
}
-
+ }
});
-addPropertyChangeListener("continueSelected", new PropertyChangeListener(){
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (continuousPanel != null){
- continuousPanel.setContinueSelected((Boolean)evt.getNewValue());
- }
+addPropertyChangeListener("continueSelected", new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (continuousPanel != null) {
+ continuousPanel.setContinueSelected((Boolean)evt.getNewValue());
}
-
+ }
});
-public void initNew(JComponent c, TopiaEntity be, Boolean b){
+public void initNew(JComponent c, TopiaEntity be, Boolean b) {
this.bean = be;
this.cOrigine = c;
@@ -80,9 +76,9 @@
setContinuePossible(b);
boolean selected = EditorHelper.isContinue(cOrigine);
setContinueSelected(selected);
- continueRadion.setSelected(selected);
+ continueRadio.setSelected(selected);
if (isContinuePossible()){
- if (EditorHelper.isRangeOfValue(cOrigine)){
+ if (EditorHelper.isRangeOfValue(cOrigine)) {
continuousPanel = EditorHelper.getContinuousRangeOfValuePanel(cOrigine, bean);
}
else {
@@ -90,23 +86,23 @@
}
init();
}
- if (!isContinueSelected() && EditorHelper.isRangeOfValue(cOrigine)){
+ if (!isContinueSelected() && EditorHelper.isRangeOfValue(cOrigine)) {
int i = 0;
- for (String s : EditorHelper.getDiscretRangeOfValueValues(cOrigine, bean)){
+ for (String s : EditorHelper.getDiscretRangeOfValueValues(cOrigine, bean)) {
JTextField text = new JTextField(s);
discretComponents.add(text);
tabPane.add(text, "Factor " + (i+1));
i++;
}
}
- if (continuousPanel != null){
+ if (continuousPanel != null) {
continuousPanel.setContinueSelected(selected);
}
setContinueSelected(EditorHelper.isContinue(cOrigine));
setSaveEnabled(!factorName.getText().equals(""));
}
-public void initExisting(JComponent cOrigine, Factor f){
+public void initExisting(JComponent cOrigine, Factor f) {
setExistingValue(true);
this.cOrigine = cOrigine;
this.path = f.getPath();
@@ -115,16 +111,16 @@
Domain domain = f.getDomain();
this.factor = f;
- if (ContinuousDomain.class.isInstance(domain)){
+ if (domain instanceof ContinuousDomain) {
ContinuousDomain cDomain = (ContinuousDomain) domain;
continuousPanel = EditorHelper.getContinuousPanelWithValue(cOrigine, cDomain, f);
init();
- continueRadion.setSelected(true);
+ continueRadio.setSelected(true);
setContinueSelected(true);
setContinuePossible(true);
- }else{
+ } else {
DiscreteDomain dDomain = (DiscreteDomain)domain;
int nb = dDomain.getValues().size();
@@ -140,7 +136,7 @@
i++;
cache = o;
JComponent c = null;
- if (o != null){
+ if (o != null) {
c = EditorHelper.getEditorWithValue(cOrigine, o);
}
else {
@@ -156,18 +152,18 @@
}
setSaveEnabled(!factorName.getText().equals(""));
}
-protected void init(){
+protected void init() {
continuousPanelContainer.add(continuousPanel, BorderLayout.CENTER);
this.pack();
}
-protected JComponent getNewComponent(){
+protected JComponent getNewComponent() {
return EditorHelper.getEditor(cOrigine, bean);
}
-protected void addTabs(String sNbTab){
+protected void addTabs(String sNbTab) {
int nbTab = Integer.parseInt(sNbTab);
discretComponents.clear();
tabPane.removeAll();
- for (int i=0;i<nbTab;i++){
+ for (int i=0;i<nbTab;i++) {
JComponent c = getNewComponent();
discretComponents.add(c);
JScrollPane js = new JScrollPane(c);
@@ -175,35 +171,35 @@
}
this.pack();
}
-protected FactorAction getFactorAction(){
- return getContextValue(FactorAction.class);
+protected SensitivityAction getSensitivityAction() {
+ return getContextValue(SensitivityAction.class);
}
-protected SimulAction getSimulAction(){
+protected SimulAction getSimulAction() {
return getContextValue(SimulAction.class);
}
-protected void save(){
- if (continueRadion.isSelected()){
- getFactorAction().saveContinue(cOrigine, factorName.getText(), comment.getText(), path, continuousPanel, getSimulAction(), isExistingValue());
+protected void save() {
+ if (continueRadio.isSelected()) {
+ getSensitivityAction().saveContinue(cOrigine, factorName.getText(), comment.getText(), path, continuousPanel, getSimulAction(), isExistingValue());
} else {
- getFactorAction().saveDiscret(cOrigine, factorName.getText(), comment.getText(), path, discretComponents, getSimulAction(), isExistingValue());
+ getSensitivityAction().saveDiscret(cOrigine, factorName.getText(), comment.getText(), path, discretComponents, getSimulAction(), isExistingValue());
}
getContextValue(InputSaveVerifier.class).getSensPanel().setFactorModel();
exit();
}
-protected void remove(){
+protected void remove() {
getSimulAction().removeFactor(factor);
getContextValue(InputSaveVerifier.class).getSensPanel().setFactorModel();
exit();
}
-protected void exit(){
+protected void exit() {
this.dispose();
}
- ]]>
- </script>
+ ]]>
+ </script>
<Table constraints='BorderLayout.CENTER'>
<row>
<cell columns='1' fill='horizontal'>
- <JLabel text='isisfish.factor.name'/>
+ <JLabel text='isisfish.sensitivity.name'/>
</cell>
<cell columns='3' fill='horizontal' weightx='1'>
<JTextField id='factorName' onKeyReleased='setSaveEnabled(!factorName.getText().equals(""))'/>
@@ -211,7 +207,7 @@
</row>
<row>
<cell columns='4' fill='horizontal' weightx='1'>
- <JRadioButton id='continueRadion' text='isisfish.factor.continue' buttonGroup='factorType' visible='{isContinuePossible()}' selected='{false}' onActionPerformed='setContinueSelected(continueRadion.isSelected())'/>
+ <JRadioButton id='continueRadio' text='isisfish.sensitivity.continue' buttonGroup='factorType' visible='{isContinuePossible()}' selected='{false}' onActionPerformed='setContinueSelected(continueRadio.isSelected())'/>
</cell>
</row>
<row>
@@ -221,18 +217,18 @@
</row>
<row>
<cell columns='4' fill='horizontal' weightx='1'>
- <JRadioButton id='discret' text='isisfish.factor.discret' selected='{true}' buttonGroup='factorType' onActionPerformed='setContinueSelected(continueRadion.isSelected())'/>
+ <JRadioButton id='discret' text='isisfish.sensitivity.discret' selected='{true}' buttonGroup='factorType' onActionPerformed='setContinueSelected(continueRadio.isSelected())'/>
</cell>
</row>
<row>
<cell fill='horizontal'>
- <JLabel text='isisfish.factor.selectDiscretNumber' enabled='{!isContinueSelected()}'/>
+ <JLabel text='isisfish.sensitivity.selectDiscretNumber' enabled='{!isContinueSelected()}'/>
</cell>
<cell fill='horizontal' weightx='0.5'>
<JTextField id='discretNumber' enabled='{!isContinueSelected()}'/>
</cell>
<cell columns='2' fill='horizontal' weightx='0.5'>
- <JButton text='isisfish.factor.validDiscretNumber' enabled='{!isContinueSelected()}' onActionPerformed='addTabs(discretNumber.getText())'/>
+ <JButton text='isisfish.sensitivity.validDiscretNumber' enabled='{!isContinueSelected()}' onActionPerformed='addTabs(discretNumber.getText())'/>
</cell>
</row>
<row>
@@ -242,7 +238,7 @@
</row>
<row>
<cell columns='4' fill='horizontal'>
- <JLabel text='isisfish.factor.comment'/>
+ <JLabel text='isisfish.sensitivity.comment'/>
</cell>
</row>
<row>
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/MatrixContinuousPanelUI.jaxx 2009-11-17 15:38:42 UTC (rev 2760)
@@ -24,7 +24,7 @@
<Table id='content' constraints='BorderLayout.CENTER'>
<row>
<cell fill='horizontal'>
- <JLabel text='isisfish.factor.value' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ <JLabel text='isisfish.sensitivity.value' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
</cell>
<cell fill='both' weightx='1' weighty='1'>
<org.nuiton.math.matrix.gui.MatrixPanelEditor id='componentPanel' dimensionEdit='{false}'
@@ -34,7 +34,7 @@
</row>
<row>
<cell fill='horizontal'>
- <JLabel text='isisfish.factor.coefficient' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ <JLabel text='isisfish.sensitivity.coefficient' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
</cell>
<cell fill='both' columns='2' weightx='1' weighty='1'>
<JTextField id='coef' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
@@ -42,7 +42,7 @@
</row>
<row>
<cell fill='horizontal'>
- <JLabel text='isisfish.factor.operateur' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
+ <JLabel text='isisfish.sensitivity.operator' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/>
</cell>
<cell fill='horizontal' weightx='1' columns='3'>
<JComboBox id='operator' visible='{isContinuePossible()}' enabled='{isContinueSelected()}'>
Copied: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java (from rev 2668, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java)
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java 2009-11-17 15:38:42 UTC (rev 2760)
@@ -0,0 +1,138 @@
+/* *##%
+ * Copyright (C) 2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.ui.sensitivity;
+
+import static org.nuiton.i18n.I18n._;
+
+import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
+import fr.ifremer.isisfish.ui.simulator.SimulAction;
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import javax.swing.JComponent;
+import javax.swing.JOptionPane;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.math.matrix.MatrixND;
+import org.nuiton.topia.persistence.TopiaEntity;
+
+/**
+ * Action for sensitivity package.
+ *
+ * @author letellier
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SensitivityAction {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static Log log = LogFactory.getLog(SensitivityAction.class);
+
+ public void saveContinue(JComponent cOrigine, String name,
+ String comment, String path, ContinuousPanelContainerUI panel,
+ SimulAction action, boolean exist) {
+ DefaultContinuousPanelUI defaultPanel = null;
+ if (panel instanceof MatrixContinuousPanelUI) {
+ MatrixContinuousPanelUI matrixPanel = (MatrixContinuousPanelUI) panel;
+ Double coef = Double.valueOf(matrixPanel.getCoef().getText()) / 100;
+ MatrixND matrix = matrixPanel.getMatrix();
+ String operateur = (String) matrixPanel.getOperator()
+ .getSelectedItem();
+ action.addContinuousMatrixFactor(name, comment, path, coef, matrix,
+ operateur, cOrigine, exist);
+
+ } else if (panel instanceof EquationContinuousPanelUI) {
+ try {
+ EquationContinuousPanelUI equationPanel = (EquationContinuousPanelUI) panel;
+
+ TopiaEntity bean = equationPanel.getBean();
+ String methodSet = equationPanel.getMethodSet();
+ Method m = bean.getClass().getMethod("set" + methodSet,
+ String.class);
+ m.invoke(bean, equationPanel.getEditor().getEditor().getText());
+
+ // Save equation
+ bean.update();
+ bean.getTopiaContext().commitTransaction();
+
+ List<EquationContinuousDomain> domains = equationPanel
+ .getDomains();
+ for (EquationContinuousDomain domain : domains) {
+ if (domain.getReferenceValue() != null
+ && domain.getCoefficient() != null
+ && domain.getCoefficient() <= 100
+ && domain.getCoefficient() > 0
+ && domain.getOperator() != null
+ && domain.getVariableName() != null) {
+ action.addContinuousEquationFactor(name, comment, path,
+ domain, cOrigine, exist);
+ } else {
+ log.warn("domain: " + domain);
+ log.warn("domain invalid: "
+ + "domain.getReferenceValue() != null("
+ + (domain.getReferenceValue())
+ + ") domain.getCoefficient() != null("
+ + (domain.getCoefficient())
+ + ") domain.getCoefficient() <= 100 ("
+ + (domain.getCoefficient())
+ + ") domain.getCoefficient() > 0 ("
+ + (domain.getCoefficient())
+ + ") domain.getOperator() != null ("
+ + (domain.getOperator())
+ + ") domain.getVariableName() != null("
+ + (domain.getVariableName()) + ")");
+ JOptionPane.showMessageDialog(equationPanel,
+ _("isisfish.error.factor.invalid")
+ + domain.getVariableName());
+ }
+ }
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't call method : ", ex);
+ }
+ }
+ } else if (panel instanceof DefaultContinuousPanelUI) {
+ defaultPanel = (DefaultContinuousPanelUI) panel;
+ action.addContinuousFactor(name, comment, path,
+ getMin(defaultPanel), getMax(defaultPanel),
+ cOrigine, exist);
+ }
+ }
+
+ protected Double getMin(DefaultContinuousPanelUI defaultPanel) {
+ return Double.parseDouble(defaultPanel.getMin());
+ }
+
+ protected Double getMax(DefaultContinuousPanelUI defaultPanel) {
+ return Double.parseDouble(defaultPanel.getMax());
+ }
+
+ public void saveDiscret(JComponent cOrigine, String name,
+ String comment, String path, List<JComponent> components,
+ SimulAction action, boolean exist) {
+ List<Serializable> values = new ArrayList<Serializable>();
+ for (JComponent c : components) {
+ values.add((Serializable) EditorHelper.getValue(c));
+ }
+ action.addDiscreteFactor(name, comment, path, values, cOrigine, exist);
+ }
+}
\ No newline at end of file
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-11-17 15:38:42 UTC (rev 2760)
@@ -121,8 +121,8 @@
factorsContinueCardinalities.add(continuousDomain.getCardinality() + "");
}
}
- model.addColumn(_("isisfish.factor.factor"), factorsContinue.toArray());
- model.addColumn(_("isisfish.factor.increment"), factorsContinueCardinalities.toArray());
+ model.addColumn(_("isisfish.sensitivity.factor"), factorsContinue.toArray());
+ model.addColumn(_("isisfish.sensitivity.increment"), factorsContinueCardinalities.toArray());
factorCardinality.setModel(model);
factorCardinality.getModel().addTableModelListener(new TableModelListener() {
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityNavigationTreeSelectionAdapter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-11-17 15:38:42 UTC (rev 2760)
@@ -30,20 +30,21 @@
<fr.ifremer.isisfish.entities.FisheryRegionImpl id='region' javaBean='null'/>
<script><![CDATA[
+import javax.swing.JPopupMenu;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreeNode;
+
import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.ui.WelcomePanelUI;
import fr.ifremer.isisfish.ui.input.InputAction;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreePath;
+import fr.ifremer.isisfish.ui.input.InputSaveVerifier;
+import fr.ifremer.isisfish.ui.simulator.SimulAction;
import jaxx.runtime.swing.navigation.NavigationTreeModel;
-import fr.ifremer.isisfish.ui.input.InputSaveVerifier;
import jaxx.runtime.swing.navigation.NavigationTreeModel.NavigationTreeNode;
import jaxx.runtime.swing.navigation.NavigationUtil;
-import fr.ifremer.isisfish.ui.simulator.SimulAction;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.TreeNode;
-import javax.swing.JPopupMenu;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
// end code constructor
getVerifier().setSensPanel(this);
@@ -100,6 +101,15 @@
wizard.pack();
wizard.setVisible(true);
}
+ else {
+
+ // factor path are :
+ // fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels
+ if (log.isInfoEnabled()) {
+ log.info("UI not found for factor " + selectedFactor.getName());
+ log.info(" with path " + selectedFactor.getPath());
+ }
+ }
}
}
}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabbedPaneListener.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2009-11-17 15:38:42 UTC (rev 2760)
@@ -1,5 +1,5 @@
/* *##%
- * Copyright (C) 2002-2009 Code Lutin, Benjamin Poussin
+ * Copyright (C) 2002-2009 Ifremer, Code Lutin, Benjamin Poussin
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -22,6 +22,9 @@
import java.io.InputStream;
import java.io.IOException;
import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -40,10 +43,10 @@
private static final Log log = LogFactory.getLog(SensitivityUtils.class);
/** Properties file resource path. */
- private final static String PROPERTIES_PATH = "/sensitivity.properties";
+ protected final static String PROPERTIES_PATH = "/sensitivity.properties";
/** Cached properties. */
- private static Properties sensitivityProperties;
+ protected static Properties sensitivityProperties;
/**
* Is field sensitivity enabled.
@@ -54,7 +57,7 @@
* @return <tt>true</tt> if factor name is sensitivity enabled
*/
public static boolean isSensitivityFactorEnabled(String sensitivityFactorName) {
- Properties data = loadProperties();
+ Properties data = getProperties();
return data.getProperty(sensitivityFactorName) != null;
}
@@ -65,7 +68,7 @@
*
* @return properties
*/
- private static Properties loadProperties() {
+ protected static Properties getProperties() {
if (sensitivityProperties == null) {
sensitivityProperties = new Properties();
@@ -91,4 +94,29 @@
}
return sensitivityProperties;
}
+
+ /**
+ * Return factor name for topiaId composed path.
+ *
+ * For example :
+ * fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels
+ * will return :
+ * Strategy.proportionSetOfVessels
+ *
+ * @param path factor path
+ * @return factor name
+ */
+ public static String getFactorNameForPath(String path) {
+
+ Pattern pattern = Pattern.compile("^([^#]*\\.)?(\\w+).*#(\\w+)$");
+ Matcher matcher = pattern.matcher(path);
+
+ String result = null;
+
+ if (matcher.find()) {
+ result = matcher.group(2) + "." + matcher.group(3);
+ }
+
+ return result;
+ }
}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Revision
+ Author Date Id Revision
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-11-17 15:38:42 UTC (rev 2760)
@@ -405,26 +405,6 @@
isisfish.export.directory=Export directory
isisfish.export.saved=Export saved
isisfish.export.title=Results export
-isisfish.factor.coefficient=Coefficient (in %)
-isisfish.factor.comment=Comment
-isisfish.factor.continue=Continuous factor
-isisfish.factor.discret=Discret factor
-isisfish.factor.equation.variable.action=Action
-isisfish.factor.equation.variable.coefficient=Coef. (in %)
-isisfish.factor.equation.variable.name=Name
-isisfish.factor.equation.variable.operator=Operator
-isisfish.factor.equation.variable.value=Value
-isisfish.factor.factor=Factor
-isisfish.factor.factors=Factors
-isisfish.factor.firstValue=First value
-isisfish.factor.increment=Cardinality
-isisfish.factor.lastValue=Last value
-isisfish.factor.name=Factor name
-isisfish.factor.operateur=Operator
-isisfish.factor.selectDiscretNumber=Number of factors
-isisfish.factor.title=Factor input
-isisfish.factor.validDiscretNumber=Ok
-isisfish.factor.value=Value
isisfish.filter=Filter
isisfish.filter.apply=Apply filter
isisfish.filter.cancel=Cancel
@@ -943,12 +923,31 @@
isisfish.selectivity.title=Selectivity
isisfish.sens.backParameter=Back to parameter tab
isisfish.sens.title=Simulation plan
+isisfish.sensitivity.coefficient=Coefficient (in %)
+isisfish.sensitivity.comment=Comment
+isisfish.sensitivity.continue=Continuous factor
+isisfish.sensitivity.discret=Discret factor
isisfish.sensitivity.displaysecondpass=Display results
+isisfish.sensitivity.equation.variable.action=Action
+isisfish.sensitivity.equation.variable.coefficient=Coef. (in %)
+isisfish.sensitivity.equation.variable.name=Name
+isisfish.sensitivity.equation.variable.operator=Operator
+isisfish.sensitivity.equation.variable.value=Value
isisfish.sensitivity.export=Export
+isisfish.sensitivity.factor=Factor
+isisfish.sensitivity.factors=Factors
+isisfish.sensitivity.firstValue=First value
+isisfish.sensitivity.increment=Cardinality
+isisfish.sensitivity.lastValue=Last value
+isisfish.sensitivity.name=Factor name
+isisfish.sensitivity.operator=Operator
isisfish.sensitivity.secondpass=Analyze results
isisfish.sensitivity.secondpass.title=Analyze results
isisfish.sensitivity.select=Method
+isisfish.sensitivity.selectDiscretNumber=Number of factors
isisfish.sensitivity.title=Sensitivity analysis
+isisfish.sensitivity.validDiscretNumber=Ok
+isisfish.sensitivity.value=Value
isisfish.sensitivityChooser.title=Sensitivities input
isisfish.server.ssh.generateKey.title=Generate Ssh key
isisfish.setOfVessels.comments=Comments
Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties
===================================================================
--- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-11-17 13:15:23 UTC (rev 2759)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-11-17 15:38:42 UTC (rev 2760)
@@ -405,26 +405,6 @@
isisfish.export.directory=Dossier d'export
isisfish.export.saved=Exports des r\u00E9sultats sauvegard\u00E9s
isisfish.export.title=Export des r\u00E9sultats
-isisfish.factor.coefficient=Coefficient (en %)
-isisfish.factor.comment=Commentaires
-isisfish.factor.continue=Facteur continu
-isisfish.factor.discret=Facteur discret
-isisfish.factor.equation.variable.action=Action
-isisfish.factor.equation.variable.coefficient=Coef (en %)
-isisfish.factor.equation.variable.name=Nom
-isisfish.factor.equation.variable.operator=Op\u00E9rateur
-isisfish.factor.equation.variable.value=Valeur
-isisfish.factor.factor=Facteur
-isisfish.factor.factors=Facteurs
-isisfish.factor.firstValue=Premi\u00E8re valeur
-isisfish.factor.increment=Cardinalit\u00E9
-isisfish.factor.lastValue=Derni\u00E8re valeur
-isisfish.factor.name=Nom du facteur
-isisfish.factor.operateur=Op\u00E9rateur
-isisfish.factor.selectDiscretNumber=Nombre de facteurs
-isisfish.factor.title=Saisie d'un facteur
-isisfish.factor.validDiscretNumber=Valider
-isisfish.factor.value=Valeur
isisfish.filter=Filtrer
isisfish.filter.apply=Appliquer le filtre
isisfish.filter.cancel=Annuler
@@ -943,12 +923,31 @@
isisfish.selectivity.title=S\u00E9lectivit\u00E9
isisfish.sens.backParameter=Retour aux param\u00E8tres
isisfish.sens.title=Plan de simulation
+isisfish.sensitivity.coefficient=Coefficient (en %)
+isisfish.sensitivity.comment=Commentaires
+isisfish.sensitivity.continue=Facteur continu
+isisfish.sensitivity.discret=Facteur discret
isisfish.sensitivity.displaysecondpass=Afficher les r\u00E9sultats
+isisfish.sensitivity.equation.variable.action=Action
+isisfish.sensitivity.equation.variable.coefficient=Coef (en %)
+isisfish.sensitivity.equation.variable.name=Nom
+isisfish.sensitivity.equation.variable.operator=Op\u00E9rateur
+isisfish.sensitivity.equation.variable.value=Valeur
isisfish.sensitivity.export=Export
+isisfish.sensitivity.factor=Facteur
+isisfish.sensitivity.factors=Facteurs
+isisfish.sensitivity.firstValue=Premi\u00E8re valeur
+isisfish.sensitivity.increment=Cardinalit\u00E9
+isisfish.sensitivity.lastValue=Derni\u00E8re valeur
+isisfish.sensitivity.name=Nom du facteur
+isisfish.sensitivity.operator=Op\u00E9rateur
isisfish.sensitivity.secondpass=Analyse des r\u00E9sultats
isisfish.sensitivity.secondpass.title=Analyse des r\u00E9sultats
isisfish.sensitivity.select=M\u00E9thode
+isisfish.sensitivity.selectDiscretNumber=Nombre de facteurs
isisfish.sensitivity.title=Analyse de sensibilit\u00E9
+isisfish.sensitivity.validDiscretNumber=Valider
+isisfish.sensitivity.value=Valeur
isisfish.sensitivityChooser.title=M\u00E9thode de la sensibilit\u00E9
isisfish.server.ssh.generateKey.title=G\u00E9n\u00E9rer une cl\u00E9 SSH
isisfish.setOfVessels.comments=Commentaires
Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java (rev 0)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2009-11-17 15:38:42 UTC (rev 2760)
@@ -0,0 +1,136 @@
+/* *##%
+ * Copyright (C) 2009 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 2
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *##%*/
+
+package fr.ifremer.isisfish.ui.sensitivity;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Properties;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaContextFactory;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.TopiaNotFoundException;
+import org.nuiton.topia.persistence.TopiaDAO;
+import org.nuiton.topia.persistence.TopiaEntity;
+
+import fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.IsisFishDAOHelper;
+import fr.ifremer.isisfish.datastore.IsisH2Config;
+
+/**
+ * Test for {@link SensitivityUtils} class.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class SensitivityUtilsTest extends AbstractIsisFishTest {
+
+ /** Logger for this class */
+ private static final Log log = LogFactory
+ .getLog(SensitivityUtilsTest.class);
+
+ /**
+ * Return a basic valid topia context.
+ *
+ * @throws TopiaNotFoundException
+ */
+ protected TopiaContext getTopiaContext() throws TopiaNotFoundException {
+ Properties config = new Properties();
+ IsisH2Config.addMemDatabaseConfig(config, "test");
+ IsisH2Config.addHibernateMapping(config);
+ TopiaContext context = TopiaContextFactory.getContext(config);
+ return context;
+ }
+
+ /**
+ * Test return of getFactorNameForPath().
+ */
+ @Test
+ public void testGetFactorNameForPath() {
+
+ String result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Strategy#1190373398255#0.7889364141850967#proportionSetOfVessels");
+ Assert.assertEquals("Strategy.proportionSetOfVessels", result);
+
+ result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear#1234#5678#name");
+ Assert.assertEquals("Gear.name", result);
+
+ result = SensitivityUtils.getFactorNameForPath("Gear#1234#5678#name");
+ Assert.assertEquals("Gear.name", result);
+
+ result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear#name");
+ Assert.assertEquals("Gear.name", result);
+
+ result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear");
+ Assert.assertNull(result);
+
+ result = SensitivityUtils.getFactorNameForPath("fr.ifremer.isisfish.entities.Gear.name");
+ Assert.assertNull(result);
+ }
+
+ /**
+ * Test (par introspection) que tous les facteurs existent.
+ *
+ * @throws NoSuchMethodException
+ * @throws SecurityException
+ * @throws TopiaException
+ * @throws InvocationTargetException
+ * @throws IllegalAccessException
+ * @throws IllegalArgumentException
+ */
+ @Test
+ public void testFactorExistence() throws SecurityException,
+ NoSuchMethodException, TopiaException, IllegalArgumentException,
+ IllegalAccessException, InvocationTargetException {
+ Properties factors = SensitivityUtils.getProperties();
+
+ TopiaContext testTC = getTopiaContext();
+ TopiaContext context = testTC.beginTransaction();
+ for (String factorName : factors.stringPropertyNames()) {
+ String className = factorName.substring(0, factorName.indexOf("."));
+ String propertyName = StringUtils.capitalize(factorName.substring(factorName.indexOf(".") + 1));
+
+ // get proper DAO
+ if (log.isDebugEnabled()) {
+ log.debug("Call get" + className + "DAO() on " + IsisFishDAOHelper.class.getSimpleName());
+ }
+ Method mStatic = IsisFishDAOHelper.class.getMethod("get" + className + "DAO", TopiaContext.class);
+ TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) mStatic.invoke(null, new Object[] { context });
+ Assert.assertNotNull("No DOA found for factor " + factorName, dao);
+
+ // create one instance
+ TopiaEntity entity = dao.create();
+
+ // call proper property
+ if (log.isDebugEnabled()) {
+ log.debug(" and call get" + propertyName + "() on " + className);
+ }
+ Method m = entity.getClass().getMethod("get" + propertyName);
+ m.invoke(entity, (Object[]) null);
+ }
+ context.closeContext();
+ }
+}
Property changes on: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
1
0