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
December 2009
- 2 participants
- 75 discussions
r2861 - in isis-fish/trunk: . src/test/java/fr/ifremer/isisfish/simulator src/test/java/fr/ifremer/isisfish/simulator/launcher src/test/resources/fr/ifremer/isisfish/simulator src/test/resources/fr/ifremer/isisfish/simulator/launcher
by chatellier@users.labs.libre-entreprise.org 22 Dec '09
by chatellier@users.labs.libre-entreprise.org 22 Dec '09
22 Dec '09
Author: chatellier
Date: 2009-12-22 17:17:18 +0000 (Tue, 22 Dec 2009)
New Revision: 2861
Added:
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java
isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/
isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-gdg-3.2-3.3.zip
isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-ica-3.2-3.3.zip
Removed:
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.java
Modified:
isis-fish/trunk/changelog.txt
isis-fish/trunk/pom.xml
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java
Log:
Add simulations tests : ica, gdg (quite long, done in integration-test phase)
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-12-22 14:58:49 UTC (rev 2860)
+++ isis-fish/trunk/changelog.txt 2009-12-22 17:17:18 UTC (rev 2861)
@@ -1,5 +1,6 @@
isis-fish (3.3.0.0) stable; urgency=low
+ * Restore simulation tests at integration-test phase
* Add region factorisable value export (mexico)
* Improve simulation stopping algorithm (now faster)
* Locally save simulation zip to allow simulation restart even after isis shutdown
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-12-22 14:58:49 UTC (rev 2860)
+++ isis-fish/trunk/pom.xml 2009-12-22 17:17:18 UTC (rev 2861)
@@ -480,6 +480,20 @@
</property>
</systemProperties>
</configuration>
+ <executions>
+ <execution>
+ <id>surefire-it</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <includes>
+ <include>**/*IT.java</include>
+ </includes>
+ </configuration>
+ </execution>
+ </executions>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
Deleted: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.java 2009-12-22 14:58:49 UTC (rev 2860)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/SimulationHelperTest.java 2009-12-22 17:17:18 UTC (rev 2861)
@@ -1,185 +0,0 @@
-/* *##%
- * Copyright (C) 2007, 2009
- * Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin
- *
- * 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.simulator;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.DoubleBigVector;
-import org.nuiton.math.matrix.MatrixFactory;
-import org.nuiton.topia.TopiaContext;
-import org.junit.Assert;
-import org.junit.Test;
-
-import fr.ifremer.isisfish.AbstractIsisFishTest;
-import fr.ifremer.isisfish.datastore.ResultStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.entities.Result;
-import fr.ifremer.isisfish.types.Date;
-
-
-/**
- * SimulationHelperTest.
- *
- * Created: 4 janv. 07 12:06:18
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class SimulationHelperTest extends AbstractIsisFishTest {
-
- /** Commons logging log. */
- private static Log log = LogFactory.getLog(SimulationHelperTest.class);
-
- final static private String[] SIMULATION_ZIP_FILE = new String[]{
- "src" + File.separator + "test" + File.separator + "resources" + File.separator + "simulations" + File.separator + "test-nonregression-20090203.zip",
- // put here other zip simulation test
- };
-
-// public void testVerifResult() throws Exception {
-// try {
-// IsisConfig.load();
-//
-// for (String zipName : SIMULATION_ZIP_FILE) {
-// // recuperation du fichier zip de la simulation de test
-// File zip = new File(zipName);
-//
-// // import de cette simulation
-// String name = "simulation-test-" + System.currentTimeMillis();
-// SimulationStorage simRef = SimulationStorage.importAndRenameZip(zip, name + "-ref");
-//
-// // import de la simulation avec un autre nom
-// SimulationStorage sim = SimulationStorage.importAndRenameZip(zip, name);
-//
-// try {
-// // verification qu'on retrouve les memes resulats pour les deux simulations
-// ResultStorage resultRef = simRef.getResultStorage();
-// ResultStorage result = sim.getResultStorage();
-//
-// List<String> resultNames = resultRef.getResultName();
-// assertEquals(resultNames, result.getResultName());
-//
-// Date lastDate = resultRef.getLastDate();
-// for (Date date=new Date(0); date.before(lastDate); date=date.next()) {
-// for (String resultName : resultNames) {
-// assertEquals("Date " + date.getDate() + " result " + resultName,
-// resultRef.getMatrix(date, resultName),
-// result.getMatrix(date, resultName));
-// }
-// }
-//
-// } finally {
-// // fermeture des bases
-// simRef.getStorage().closeContext();
-// sim.getStorage().closeContext();
-// // suppresion des deux simulations
-// simRef.delete(false);
-// sim.delete(false);
-// }
-// }
-// } catch (Exception eee) {
-// System.err.println(eee);
-// eee.printStackTrace();
-// throw eee;
-// }
-// }
-
- /*
- 10;20;30;40;50;60;70;80;90;
- 100;200;300;400;500;600;700;800;900;
- 1000;2000;3000;4000;5000;6000;7000;8000;9000;
- 10000;20000;30000;40000;50000;60000;70000;80000;90000;
- 100000;200000;300000;400000;500000;600000;700000;800000;900000;
- 1000000;2000000;3000000;4000000;5000000;6000000;7000000;8000000;9000000;
- 10000000;20000000;30000000;40000000;50000000;60000000;70000000;80000000;90000000;
- 100000000;200000000;300000000;400000000;500000000;600000000;700000000;800000000;900000000;
- 1000000000;2000000000;3000000000;4000000000;5000000000;6000000000;7000000000;8000000000;9000000000;
- 10000000000;20000000000;30000000000;40000000000;50000000000;60000000000;70000000000;80000000000;90000000000;
- */
-
- @Test
- public void testSimulate() throws Exception {
-
- try {
- // par defaut on utilise des doubles pour les matrices
- MatrixFactory.setDefaultVectorClass(DoubleBigVector.class);
-
- for (String zipName : SIMULATION_ZIP_FILE) {
- // recuperation du fichier zip de la simulation de test
- File zip = new File(zipName);
-
- // import de cette simulation
- String name = "simulation-test-" + System.currentTimeMillis();
- SimulationStorage simRef = SimulationStorage.importAndRenameZip(zip, name + "-ref");
-
- // import de la simulation avec un autre nom
- SimulationStorage sim = SimulationStorage.importAndRenameZip(zip, name);
-
- try {
- // suppression des resultats de cette simulation
- TopiaContext tx = sim.getStorage().beginTransaction();
- tx.execute("DELETE from " + Result.class.getName());
- tx.commitTransaction();
- tx.closeContext();
-
- // lancement de la simulation
- // FIXME a remplacer avec SimulationService
-// SimulationHelper.simulate(null, sim);
-
- // verification qu'on retrouve les memes resulats pour les deux simulations
- ResultStorage resultRef = simRef.getResultStorage();
- ResultStorage result = sim.getResultStorage();
-
- List<String> resultNames = resultRef.getResultName();
- Assert.assertEquals(resultNames, result.getResultName());
-
- Date lastDate = resultRef.getLastDate();
-
- log.info("Check result ...");
- for (Date date = new Date(0); date.before(lastDate); date = date.next()) {
- for (String resultName : resultNames) {
- log.debug("Check result " + date + " " + resultName);
- Assert.assertEquals("Date " + date.getDate() + " result " + resultName,
- resultRef.getMatrix(date, resultName),
- result.getMatrix(date, resultName));
- }
- }
-
- } finally {
- // fermeture des bases
- simRef.getStorage().closeContext();
- sim.getStorage().closeContext();
- // suppresion des deux simulations
- simRef.delete(false);
- sim.delete(false);
- }
- }
- } catch (Exception eee) {
- System.err.println(eee);
- eee.printStackTrace();
- throw eee;
- }
- }
-}
Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java (rev 0)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java 2009-12-22 17:17:18 UTC (rev 2861)
@@ -0,0 +1,171 @@
+/* *##%
+ * 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.simulator.launcher;
+
+import java.io.File;
+import java.net.URL;
+import java.util.List;
+
+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 fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Result;
+import fr.ifremer.isisfish.simulator.SimulationControl;
+import fr.ifremer.isisfish.types.Date;
+
+/**
+ * Integration tests for {@link SimulationService}.
+ *
+ * Dans ces deux tests, les simulations ont été effectuées sur isis-fish-3.2.0.9.
+ * Les resultats ont été exporté dans le fichier data-backup.sql.gz. Le zip
+ * contient cet export et le fichier de parametres.
+ *
+ * Il ne contient pas les scripts pour utiliser ceux de la base de test.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$ By : $Author: chatellier $
+ */
+public class SimulationServiceIT extends AbstractIsisFishTest {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(SimulationServiceIT.class);
+
+ /**
+ * Read a zipped simulation file.
+ * Redo simulation with same parameters, and check that result are all equals.
+ *
+ * @param zipName
+ * @throws Exception
+ */
+ protected void testSimulate(String zipName) throws Exception {
+
+ int resultChecked = 0;
+
+ // recuperation du fichier zip de la simulation de test
+ File zip = new File(zipName);
+
+ // import de cette simulation
+ String name = "simulation-test-" + System.currentTimeMillis();
+ SimulationStorage simRef = SimulationStorage.importAndRenameZip(zip, name + "-ref");
+
+ // la simulation testée ici
+ SimulationStorage sim = SimulationStorage.importAndRenameZip(zip, name + "-temp");
+
+ try {
+ // suppression des resultats de cette simulation
+ TopiaContext tx = sim.getStorage().beginTransaction();
+ tx.execute("DELETE from " + Result.class.getName());
+ tx.commitTransaction();
+ tx.closeContext();
+
+ // lancement de la simulation
+ SimulationControl control = new SimulationControl(sim.getName());
+ control.setDate(new Date());
+ InProcessSimulatorLauncher launcher = new InProcessSimulatorLauncher();
+ sim = launcher.localSimulate(control, sim);
+
+ // if simulation ends with exception, no need to continue
+ if (!StringUtils.isEmpty(sim.getInformation().getException())) {
+ Assert.fail(sim.getInformation().getException());
+ }
+
+ // verification qu'on retrouve les memes resulats pour les deux simulations
+ ResultStorage resultRef = simRef.getResultStorage();
+ ResultStorage result = sim.getResultStorage();
+
+ List<String> resultNames = resultRef.getResultName();
+ Assert.assertEquals(resultNames, result.getResultName());
+
+ Date lastDate = resultRef.getLastDate();
+
+
+ if (log.isInfoEnabled()) {
+ log.info("Check result ...");
+ }
+
+ for (Date date = new Date(0); date.beforeOrEquals(lastDate); date = date.next()) {
+ for (String resultName : resultNames) {
+ if (log.isDebugEnabled()) {
+ log.debug("Check result " + date + " " + resultName);
+ }
+ Assert.assertEquals("Date " + date.getDate() + " result " + resultName,
+ resultRef.getMatrix(date, resultName),
+ result.getMatrix(date, resultName));
+
+ resultChecked++;
+ }
+ }
+
+ // nombre de résultat sur 12 mois, sur 5 ans
+ Assert.assertEquals("All expected results have not been checked !", resultNames.size() * 12 * 5, resultChecked);
+
+ } finally {
+ // fermeture des bases
+ simRef.getStorage().closeContext();
+ sim.getStorage().closeContext();
+ // suppresion des deux simulations
+ simRef.delete(false);
+ sim.delete(false);
+ }
+
+ // Test qu'au moins quelques resultats ont été verifié
+ Assert.assertTrue("At least some result must be done", resultChecked > 100);
+ }
+
+ /**
+ * Do simulation test on gdg database.
+ *
+ * Simulation properties :
+ * - 10 years
+ * - all strategies
+ * - one population
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testSimlateGdG() throws Exception {
+ URL zipURL = this.getClass().getResource("sim_test-gdg-3.2-3.3.zip");
+ testSimulate(zipURL.getFile());
+ }
+
+ /**
+ * Do simulation test on ICA database.
+ *
+ * Simulation properties :
+ * - 10 years
+ * - all strategies
+ * - one population
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testSimlateICA() throws Exception {
+ URL zipURL = this.getClass().getResource("sim_test-ica-3.2-3.3.zip");
+ testSimulate(zipURL.getFile());
+ }
+}
Property changes on: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceIT.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-12-22 14:58:49 UTC (rev 2860)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-12-22 17:17:18 UTC (rev 2861)
@@ -198,57 +198,4 @@
}
}
}
-
- /**
- * Lance une simulation avec des facteurs de sensibilité.
- *
- * This test use factors with matrix.
- *
- * Fail after 2 min.
- */
- @Test(timeout=120 * 1000)
- public void testRunSensivitySimulationWithMatrix() {
-
- SimulationParameter params = new SimulationParameter();
- // set params region
- params.setRegionName("DemoRegion");
- // set population
- List<Population> pops = new ArrayList<Population>();
- Population pop = new PopulationImpl();
- pop.setName("test population");
- pop.setPopulationGroup(new ArrayList<PopulationGroup>());
- pop.setPopulationZone(new ArrayList<Zone>());
- pops.add(pop);
- params.setPopulations(pops);
- // strat
- List<Strategy> strats = new ArrayList<Strategy>();
- Strategy strategy = new StrategyImpl();
- strategy.setName("stratest");
- strats.add(strategy);
- params.setStrategies(strats);
- // number of year
- params.setNumberOfYear(1);
-
- SimulationService service = SimulationService.getService();
- SimulatorLauncher launcher = new InProcessSimulatorLauncher();
- service.addSimulationLauncher(launcher);
-
- SensitivityCalculator sensitivityCalculator = new SensitivityCalculatorRandomMock();
-
- DesignPlan designPlan = getTestMatrixDesignPlan();
-
- service.submit("sensitivity test matrix 1", params, launcher, 0,
- sensitivityCalculator, designPlan);
-
- // temporise la fin de test , sinon junit tue tous les process
- try {
- do {
- Thread.sleep(2000);
- } while (!service.jobs.isEmpty());
- } catch (InterruptedException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't wait wimulation to end", e);
- }
- }
- }
}
Added: isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-gdg-3.2-3.3.zip
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-gdg-3.2-3.3.zip
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-ica-3.2-3.3.zip
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/fr/ifremer/isisfish/simulator/launcher/sim_test-ica-3.2-3.3.zip
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
1
0
Author: chatellier
Date: 2009-12-22 14:58:49 +0000 (Tue, 22 Dec 2009)
New Revision: 2860
Modified:
isis-fish/trunk/changelog.txt
Log:
Update changelog (export factors)
Modified: isis-fish/trunk/changelog.txt
===================================================================
--- isis-fish/trunk/changelog.txt 2009-12-22 14:19:05 UTC (rev 2859)
+++ isis-fish/trunk/changelog.txt 2009-12-22 14:58:49 UTC (rev 2860)
@@ -1,5 +1,6 @@
isis-fish (3.3.0.0) stable; urgency=low
+ * Add region factorisable value export (mexico)
* Improve simulation stopping algorithm (now faster)
* Locally save simulation zip to allow simulation restart even after isis shutdown
* In sensitivity analysis, upload only one zip to caparmor for all simulations
1
0
r2859 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export
by chatellier@users.labs.libre-entreprise.org 22 Dec '09
by chatellier@users.labs.libre-entreprise.org 22 Dec '09
22 Dec '09
Author: chatellier
Date: 2009-12-22 14:19:05 +0000 (Tue, 22 Dec 2009)
New Revision: 2859
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java
Log:
Forgot default value (just toString()).
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java 2009-12-21 16:18:27 UTC (rev 2858)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java 2009-12-22 14:19:05 UTC (rev 2859)
@@ -66,7 +66,6 @@
this.outputFile = outputFile;
}
-
/*
* @see fr.ifremer.isisfish.mexico.export.RegionExport#beginExport()
*/
@@ -255,6 +254,10 @@
result = StringEscapeUtils.escapeXml(result);
}
}
+ // default case, just toString() on value
+ else if (value != null) {
+ result = value.toString();
+ }
return result;
}
1
0
r2858 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/mexico main/java/fr/ifremer/isisfish/mexico/export main/java/fr/ifremer/isisfish/ui/input main/resources/i18n test/java/fr/ifremer/isisfish/mexico test/java/fr/ifremer/isisfish/mexico/export test/resources/test-database/regions test/resources/test-database/regions/Golfe de Gascogne test/resources/test-database/regions/Golfe de Gascogne/data test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
21 Dec '09
Author: chatellier
Date: 2009-12-21 16:18:27 +0000 (Mon, 21 Dec 2009)
New Revision: 2858
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/HorizontalEntityVisitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExplorer.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExport.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/export/
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.h2.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/46.t43.lob.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/47.t43.lob.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/48.t43.lob.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/49.t43.lob.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/50.t43.lob.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/51.t43.lob.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/52.t43.lob.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/53.t43.lob.db
isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/54.t43.lob.db
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx
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:
Ajout d'une premiere version de l'export des priopri?\195?\169tes factorisables d'une r?\195?\169gion.
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/HorizontalEntityVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/HorizontalEntityVisitor.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/HorizontalEntityVisitor.java 2009-12-21 16:18:27 UTC (rev 2858)
@@ -0,0 +1,161 @@
+/* *##%
+ * Copyright (C) 2009 Ifremer, Code Lutin, Chatellier Eric
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.mexico.export;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.EntityVisitor;
+import org.nuiton.topia.persistence.TopiaEntity;
+
+import fr.ifremer.isisfish.entities.Equation;
+
+/**
+ * Parcourt en largeur du model et délegation à un autre visiteur.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ *
+ * @deprecated use those from topia
+ */
+ at Deprecated
+public class HorizontalEntityVisitor implements EntityVisitor {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(HorizontalEntityVisitor.class);
+
+ /** Delegate visitor. */
+ protected EntityVisitor delegateVisitor;
+
+ /** Cache used to remember entity during exploration. */
+ protected List<TopiaEntity> alreadyExplored;
+
+ /** Entity to be visited later. */
+ protected List<TopiaEntity> toVisitEntities;
+
+ /**
+ * Constructor.
+ *
+ * @param delegateVisitor delegate visitor
+ */
+ public HorizontalEntityVisitor(EntityVisitor delegateVisitor) {
+ this.delegateVisitor = delegateVisitor;
+ this.alreadyExplored = new ArrayList<TopiaEntity>();
+ this.toVisitEntities = new ArrayList<TopiaEntity>();
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#start(org.nuiton.topia.persistence.TopiaEntity)
+ */
+ @Override
+ public void start(TopiaEntity entity) {
+ delegateVisitor.start(entity);
+ if (!alreadyExplored.contains(entity)) {
+ alreadyExplored.add(entity);
+ }
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#visit(org.nuiton.topia.persistence.TopiaEntity, java.lang.String, java.lang.Class, java.lang.Object)
+ */
+ @Override
+ public void visit(TopiaEntity e, String name, Class<?> type, Object value) {
+ // si c'est une entité
+ if (value instanceof TopiaEntity && !(value instanceof Equation)) {
+ TopiaEntity entity = (TopiaEntity) value;
+ toVisitEntities.add(entity);
+ } else {
+ delegateVisitor.visit(e, name, type, value);
+ }
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#visit(org.nuiton.topia.persistence.TopiaEntity, java.lang.String, java.lang.Class, java.lang.Class, java.lang.Object)
+ */
+ @Override
+ public void visit(TopiaEntity e, String name, Class<?> collectionType,
+ Class<?> type, Object value) {
+
+ Collection<?> values = (Collection<?>) value;
+ if (values != null && !values.isEmpty()) {
+ int i = 0;
+ for (Object currentValue : values) {
+ visit(e, name, type, collectionType, i++, currentValue);
+ }
+ }
+
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#visit(org.nuiton.topia.persistence.TopiaEntity, java.lang.String, java.lang.Class, java.lang.Class, int, java.lang.Object)
+ */
+ @Override
+ public void visit(TopiaEntity e, String name, Class<?> collectionType,
+ Class<?> type, int index, Object value) {
+ // si c'est une entité
+ if (value instanceof TopiaEntity) {
+ TopiaEntity entity = (TopiaEntity) value;
+
+ toVisitEntities.add(entity);
+ } else {
+ delegateVisitor.visit(e, name, collectionType, type, index, value);
+ }
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#end(org.nuiton.topia.persistence.TopiaEntity)
+ */
+ @Override
+ public void end(TopiaEntity entity) {
+ delegateVisitor.end(entity);
+
+ // here, must revisit all remembered entities
+ List<TopiaEntity> currentEntities = new ArrayList<TopiaEntity>(toVisitEntities);
+ // TODO verify if clearing here is enought
+ toVisitEntities.clear();
+ for (TopiaEntity currentEntity : currentEntities) {
+ try {
+ if (!alreadyExplored.contains(currentEntity)) {
+ currentEntity.accept(this);
+ }
+ } catch (TopiaException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Error on horizontal exploration", ex);
+ }
+ }
+ }
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#clear()
+ */
+ @Override
+ public void clear() {
+ alreadyExplored.clear();
+ toVisitEntities.clear();
+ delegateVisitor.clear();
+ }
+} // HorizontallyEntityVisitor
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/HorizontalEntityVisitor.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExplorer.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExplorer.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExplorer.java 2009-12-21 16:18:27 UTC (rev 2858)
@@ -0,0 +1,116 @@
+/* *##%
+ * Copyright (C) 2009 Ifremer, Code Lutin, Chatellier Eric
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.mexico.export;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaException;
+
+import fr.ifremer.isisfish.entities.Cell;
+import fr.ifremer.isisfish.entities.FisheryRegion;
+import fr.ifremer.isisfish.entities.Gear;
+import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Port;
+import fr.ifremer.isisfish.entities.SetOfVessels;
+import fr.ifremer.isisfish.entities.Species;
+import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.entities.TripType;
+import fr.ifremer.isisfish.entities.VesselType;
+import fr.ifremer.isisfish.entities.Zone;
+
+/**
+ * Region explorer.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class RegionExplorer {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(RegionExplorer.class);
+
+ /**
+ * Explore region and call export on each entity found.
+ *
+ * @param region region to explore
+ * @param regionExport region export implementation
+ * @throws TopiaException
+ */
+ public void explore(FisheryRegion region, RegionExport regionExport) throws TopiaException {
+
+ regionExport.beginExport();
+
+ HorizontalEntityVisitor visitor = new HorizontalEntityVisitor(regionExport);
+
+ // explore cells
+ for (Cell cell : region.getCell()) {
+ cell.accept(visitor);
+ }
+
+ // explore zone
+ for (Zone zone : region.getZone()) {
+ zone.accept(visitor);
+ }
+
+ // explore ports
+ for (Port port : region.getPort()) {
+ port.accept(visitor);
+ }
+
+ // explore species and population
+ for (Species species : region.getSpecies()) {
+ species.accept(visitor);
+ }
+
+ // explore gears
+ for (Gear gear : region.getGear()) {
+ gear.accept(visitor);
+ }
+
+ // explore metier
+ for (Metier metier : region.getMetier()) {
+ metier.accept(visitor);
+ }
+
+ // explore tripType
+ for (TripType tripType : region.getTripType()) {
+ tripType.accept(visitor);
+ }
+
+ // explore vesselType
+ for (VesselType vesselType : region.getVesselType()) {
+ vesselType.accept(visitor);
+ }
+
+ // explore setOfVessels
+ for (SetOfVessels setOfVessels : region.getSetOfVessels()) {
+ setOfVessels.accept(visitor);
+ }
+
+ // explore strategy
+ for (Strategy strategy : region.getStrategy()) {
+ strategy.accept(visitor);
+ }
+
+ regionExport.endExport();
+ }
+} // RegionExplorer
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExplorer.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExport.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExport.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExport.java 2009-12-21 16:18:27 UTC (rev 2858)
@@ -0,0 +1,43 @@
+/* *##%
+ * 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.mexico.export;
+
+import org.nuiton.topia.persistence.EntityVisitor;
+
+/**
+ * Region export interface.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public interface RegionExport extends EntityVisitor {
+
+ /**
+ * Called at export begin.
+ */
+ void beginExport();
+
+ /**
+ * Called at export end.
+ */
+ void endExport();
+}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExport.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java 2009-12-21 16:18:27 UTC (rev 2858)
@@ -0,0 +1,261 @@
+/* *##%
+ * Copyright (C) 2009 Ifremer, Code Lutin, Chatellier Eric
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.mexico.export;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.beanutils.ConvertUtilsBean;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang.StringEscapeUtils;
+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.topia.persistence.TopiaEntity;
+
+import fr.ifremer.isisfish.entities.EffortDescription;
+import fr.ifremer.isisfish.entities.Equation;
+import fr.ifremer.isisfish.entities.PopulationGroup;
+import fr.ifremer.isisfish.entities.PopulationSeasonInfo;
+import fr.ifremer.isisfish.entities.StrategyMonthInfo;
+import fr.ifremer.isisfish.mexico.MexicoHelper;
+import fr.ifremer.isisfish.types.RangeOfValues;
+import fr.ifremer.isisfish.types.TimeUnit;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityUtils;
+import fr.ifremer.isisfish.util.ConverterUtil;
+
+/**
+ * Export implementation for factor into xml.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class RegionExportFactorXML implements RegionExport {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(RegionExportFactorXML.class);
+
+ protected File outputFile;
+
+ protected StringBuffer stringBuffer;
+
+ protected String lastReadName;
+
+ public RegionExportFactorXML(File outputFile) {
+ this.outputFile = outputFile;
+ }
+
+
+ /*
+ * @see fr.ifremer.isisfish.mexico.export.RegionExport#beginExport()
+ */
+ @Override
+ public void beginExport() {
+ stringBuffer = new StringBuffer();
+ stringBuffer.append("<regionFactors>");
+ stringBuffer.append("<factors>");
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#start(org.nuiton.topia.persistence.TopiaEntity)
+ */
+ @Override
+ public void start(TopiaEntity entity) {
+ lastReadName = null;
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#visit(org.nuiton.topia.persistence.TopiaEntity, java.lang.String, java.lang.Class, java.lang.Object)
+ */
+ @Override
+ public void visit(TopiaEntity entity, String propertyName, Class<?> type, Object value) {
+
+ // FIXME this mechanism won't work if name is not the first attribute
+ // in visitor. (need to be fixed)
+ if ("name".equals(propertyName)) {
+ lastReadName = (String)value;
+ }
+
+ // build factor name (entityName.propertyName)
+ String factorClass = entity.getClass().getSimpleName();
+ // if there is a "Impl" in entityName, remove it
+ factorClass = factorClass.replaceFirst("Impl", "");
+
+ // FIXME propertyName with capitalize first letter is a bad idea
+ String factorName = factorClass + "." + StringUtils.capitalize(propertyName);
+
+ // test if factor name is enabled
+ // TODO move SensitivityUtils outside of UI
+ boolean enabled = SensitivityUtils.isSensitivityFactorEnabled(factorName);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Testing if attribute (" + factorName + ") is factor enabled : " + enabled);
+ }
+
+ if (enabled) {
+ String exportFactorName = getUniqueFactorName(entity, factorClass, propertyName);
+ String stringValue = getStringValue(entity, type, value);
+
+ stringBuffer.append("<!-- " + factorName + " -->");
+ stringBuffer.append("<factor name=\"" + exportFactorName + "\"");
+ stringBuffer.append(" type=\"" + type.getSimpleName() + "\"");
+ stringBuffer.append(">");
+ stringBuffer.append("<target>" + entity.getTopiaId() + "#" + propertyName + "</target>");
+ stringBuffer.append("<value>" + stringValue + "</value>");
+ stringBuffer.append("</factor>");
+ }
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#visit(org.nuiton.topia.persistence.TopiaEntity, java.lang.String, java.lang.Class, java.lang.Class, java.lang.Object)
+ */
+ @Override
+ public void visit(TopiaEntity entity, String propertyName, Class<?> collectionType,
+ Class<?> type, Object value) {
+ visit(entity, propertyName, type, value);
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#visit(org.nuiton.topia.persistence.TopiaEntity, java.lang.String, java.lang.Class, java.lang.Class, int, java.lang.Object)
+ */
+ @Override
+ public void visit(TopiaEntity entity, String propertyName, Class<?> collectionType,
+ Class<?> type, int index, Object value) {
+
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#end(org.nuiton.topia.persistence.TopiaEntity)
+ */
+ @Override
+ public void end(TopiaEntity entity) {
+
+ }
+
+ /*
+ * @see org.nuiton.topia.persistence.EntityVisitor#clear()
+ */
+ @Override
+ public void clear() {
+
+ }
+
+ /*
+ * @see fr.ifremer.isisfish.mexico.export.RegionExport#endExport()
+ */
+ @Override
+ public void endExport() {
+ stringBuffer.append("</factors>");
+ stringBuffer.append("</regionFactors>");
+ String xml = MexicoHelper.formatXML(stringBuffer.toString());
+
+ try {
+ FileUtils.writeStringToFile(outputFile, xml);
+ } catch (IOException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't wrtie xml content to output file", ex);
+ }
+ }
+ }
+
+ /**
+ * Get factor name.
+ *
+ * Dans la majorité des cas, on a un {@link lastReadName} défini. Dans les
+ * autre cas, il faut chercher un meilleur nom.
+ *
+ * @param entity entity to get factor name
+ * @param factorClass entity short class name
+ * @param propertyName property name
+ * @return unique name for factor
+ */
+ protected String getUniqueFactorName(TopiaEntity entity, String factorClass,
+ String propertyName) {
+
+ String exportFactorName = null;
+
+ if (lastReadName != null) {
+ exportFactorName = factorClass + "." + lastReadName + "." + propertyName;
+ }
+ else {
+ // test each entities
+ if (entity instanceof EffortDescription) {
+ EffortDescription newEntity = (EffortDescription)entity;
+ // FIXME newEntity.getSetOfVessels() is null ???
+ exportFactorName = factorClass + ".";
+ exportFactorName += RandomStringUtils.randomAlphanumeric(8); // getSetOfVessels().getName()
+ exportFactorName += "." + newEntity.getPossibleMetiers() + "." + propertyName;
+ }
+ else if (entity instanceof PopulationGroup) {
+ PopulationGroup newEntity = (PopulationGroup)entity;
+ exportFactorName = factorClass + "." + newEntity.getPopulation().getName();
+ exportFactorName += "." + newEntity.getId() + "." + propertyName;
+ }
+ else if (entity instanceof PopulationSeasonInfo) {
+ PopulationSeasonInfo newEntity = (PopulationSeasonInfo)entity;
+ exportFactorName = factorClass + "." + newEntity.getPopulation().getName() + ".";
+ exportFactorName += newEntity.getFirstMonth() + "." + newEntity.getLastMonth() + "." + propertyName;
+ }
+ else if (entity instanceof StrategyMonthInfo) {
+ StrategyMonthInfo newEntity = (StrategyMonthInfo)entity;
+ exportFactorName = factorClass + "." + newEntity.getStrategy().getName() + ".";
+ exportFactorName += newEntity.getMonth() + "." + propertyName;
+ }
+ }
+
+ return exportFactorName;
+ }
+
+ /**
+ * Get string value.
+ *
+ * @param entity entity
+ * @param type value type
+ * @param value value
+ */
+ protected String getStringValue(TopiaEntity entity, Class<?> type, Object value) {
+
+ String result = null;
+
+ if (type.isAssignableFrom(TimeUnit.class)) {
+ result = String.valueOf(((TimeUnit)value).getTime());
+ }
+ else if (type.isAssignableFrom(MatrixND.class)) {
+ ConvertUtilsBean beanUtils = ConverterUtil.getConverter(null);
+ result = beanUtils.convert(value);
+ }
+ else if (type.isAssignableFrom(RangeOfValues.class)) {
+ result = String.valueOf(((RangeOfValues)value).getValues());
+ }
+ else if (type.isAssignableFrom(Equation.class)) {
+ // not initialized equation can be null :(
+ if (value != null) {
+ result = String.valueOf(((Equation)value).getContent());
+ result = StringEscapeUtils.escapeXml(result);
+ }
+ }
+
+ return result;
+ }
+}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/export/RegionExportFactorXML.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2009-12-21 15:08:40 UTC (rev 2857)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputAction.java 2009-12-21 16:18:27 UTC (rev 2858)
@@ -72,6 +72,9 @@
import fr.ifremer.isisfish.entities.TargetSpecies;
import fr.ifremer.isisfish.entities.TargetSpeciesDAO;
import fr.ifremer.isisfish.entities.Zone;
+import fr.ifremer.isisfish.mexico.export.RegionExplorer;
+import fr.ifremer.isisfish.mexico.export.RegionExport;
+import fr.ifremer.isisfish.mexico.export.RegionExportFactorXML;
import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.ui.input.check.CheckRegion;
import fr.ifremer.isisfish.ui.input.check.CheckResult;
@@ -96,10 +99,6 @@
/** Class logger. */
private static Log log = LogFactory.getLog(InputAction.class);
- public InputAction() {
-
- }
-
/**
* Exporter la region dans un zip.
*
@@ -1312,4 +1311,42 @@
ErrorHelper.showErrorDialog(_("isisfish.error.region.check"), eee);
}
}
+
+ /**
+ * Explore region and exporte any enabled sensitivity factor name with value.
+ *
+ * @param parentComponent parent component
+ * @param fisheryRegion fishery region to export
+ */
+ public void exportRegionSensitivityFactors(InputUI parentComponent, FisheryRegion fisheryRegion) {
+
+ try {
+ File exportFile = FileUtil.getFile(_("isisfish.input.sensitivity.export.title"),
+ _("isisfish.common.ok"), parentComponent, ".*\\.xml", "XML Files");
+
+ // make sur that filename ends with ".xml"
+ if (!exportFile.getAbsolutePath().endsWith(".xml")) {
+ exportFile = new File(exportFile.getAbsolutePath() + ".xml");
+ }
+
+ if (exportFile != null) {
+ parentComponent.setStatusMessage(_("isisfish.input.sensitivity.export.running"), true);
+ RegionExplorer explorer = new RegionExplorer();
+ RegionExport exportXML = new RegionExportFactorXML(exportFile);
+ explorer.explore(fisheryRegion, exportXML);
+ parentComponent.setStatusMessage(_("isisfish.input.sensitivity.export.complete"));
+ }
+ else {
+ if (log.isDebugEnabled()) {
+ log.debug("Export action canceled");
+ }
+ parentComponent.setStatusMessage(_("isisfish.input.sensitivity.export.cancel"));
+ }
+ } catch (Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(_("isisfish.error.sensitivity.export"), eee);
+ }
+ ErrorHelper.showErrorDialog(_("isisfish.error.sensitivity.export"), eee);
+ }
+ }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2009-12-21 15:08:40 UTC (rev 2857)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2009-12-21 16:18:27 UTC (rev 2858)
@@ -221,21 +221,24 @@
</script>
<JMenuBar id="menu" constraints='BorderLayout.NORTH'>
<JMenu text="isisfish.common.region">
- <JMenuItem text="isisfish.input.menu.importRegion" onActionPerformed="importRegion()" accelerator="accNew"/>
- <JMenuItem text="isisfish.input.menu.importRenameRegion" onActionPerformed="importRegionAndRename()" accelerator="accNew"/>
- <JMenuItem text="isisfish.input.menu.importRegionV2" onActionPerformed="importV2Region()" accelerator="accNew"/>
- <JMenuItem text="isisfish.input.menu.importRegionSimulation" onActionPerformed="importRegionFromSimulation()" accelerator="accImportFromSimulation"/>
- <JMenuItem text="isisfish.input.menu.exportRegion" enabled='{getRegion() != null}' onActionPerformed="exportRegion()" accelerator="accExport"/>
- <JMenuItem text="isisfish.input.menu.copyRegion" enabled='{getRegion() != null}' onActionPerformed="copyRegion()" accelerator="accExport"/>
+ <JMenuItem text="isisfish.input.menu.importRegion" onActionPerformed="importRegion()" />
+ <JMenuItem text="isisfish.input.menu.importRenameRegion" onActionPerformed="importRegionAndRename()" />
+ <JMenuItem text="isisfish.input.menu.importRegionV2" onActionPerformed="importV2Region()" />
+ <JMenuItem text="isisfish.input.menu.importRegionSimulation" onActionPerformed="importRegionFromSimulation()" />
+ <JMenuItem text="isisfish.input.menu.exportRegion" enabled='{getRegion() != null}' onActionPerformed="exportRegion()" />
+ <JMenuItem text="isisfish.input.menu.copyRegion" enabled='{getRegion() != null}' onActionPerformed="copyRegion()" />
<JSeparator/>
- <JMenuItem name="miRemove" text="isisfish.input.menu.removeLocaly" enabled='{getRegion() != null}' onActionPerformed="removeRegion()" accelerator="accRemove"/>
+ <JMenuItem name="miRemove" text="isisfish.input.menu.removeLocaly" enabled='{getRegion() != null}' onActionPerformed="removeRegion()" />
</JMenu>
<JMenu text="isisfish.input.menu.server">
- <JMenuItem text="isisfish.input.menu.addRegion" enabled='{getRegion() != null}' onActionPerformed="commitRegionInCVS()" accelerator="accAdd"/>
- <JMenuItem text="isisfish.input.menu.commit" enabled='{getRegion() != null}' onActionPerformed="commitRegionInCVS()" accelerator="accCommitVCS"/>
+ <JMenuItem text="isisfish.input.menu.addRegion" enabled='{getRegion() != null}' onActionPerformed="commitRegionInCVS()" />
+ <JMenuItem text="isisfish.input.menu.commit" enabled='{getRegion() != null}' onActionPerformed="commitRegionInCVS()" />
<JSeparator/>
- <JMenuItem name="miRemove" text="isisfish.input.menu.removeLocalyRemotely" enabled='{getRegion() != null}' onActionPerformed="removeRegion()" accelerator="accRemove"/>
+ <JMenuItem name="miRemove" text="isisfish.input.menu.removeLocalyRemotely" enabled='{getRegion() != null}' onActionPerformed="removeRegion()" />
</JMenu>
+ <JMenu text="isisfish.input.menu.sensitivity">
+ <JMenuItem text="isisfish.input.menu.sensitivity.export" enabled='{getRegion() != null}' onActionPerformed="getAction().exportRegionSensitivityFactors(this, getRegion())" />
+ </JMenu>
</JMenuBar>
<JSplitPane oneTouchExpandable="true" dividerLocation="200" orientation="HORIZONTAL" constraints='BorderLayout.CENTER'>
<JPanel layout='{new BorderLayout()}' minimumSize="{new java.awt.Dimension(0,0)}">
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-12-21 15:08:40 UTC (rev 2857)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-12-21 16:18:27 UTC (rev 2858)
@@ -44,6 +44,7 @@
Remote\ information\ file\ doesn't\ exists\ %s=
Rename\ data\ directory\ to\ %s=
Show\ help=
+Show\ version=
SimulationExecutor\ started\ with\ %s\ thread\ for\ %s=
Ssh\ key\ found\ '%s'\ will\ be\ used\ to\ connect\ to=
Stop\ simulation\ plan,\ because\ can't\ call\ afterSimulation\ correctly\ on\ plan\ %s=
@@ -348,6 +349,7 @@
isisfish.error.script.import=Can't import file for reason %1$s
isisfish.error.script.load=Can't load file %1$s for reason %2$s
isisfish.error.script.save=Can't save file %1$s for reason %2$s
+isisfish.error.sensitivity.export=Can't do region factors export
isisfish.error.simulation.addanalyseplan=Can't add analyze plan
isisfish.error.simulation.addrule=Can't add rule
isisfish.error.simulation.getparametervalue=Can't get parameter value
@@ -492,9 +494,15 @@
isisfish.input.menu.importRenameRegion=Import region and rename
isisfish.input.menu.removeLocaly=Remove localy
isisfish.input.menu.removeLocalyRemotely=Remove localy and remotely
+isisfish.input.menu.sensitivity=Mexico
+isisfish.input.menu.sensitivity.export=Export database factors
isisfish.input.menu.server=Server
isisfish.input.newRegion=New region
isisfish.input.selectRegion=Select region
+isisfish.input.sensitivity.export.cancel=Factor export canceled
+isisfish.input.sensitivity.export.complete=Factor export complete
+isisfish.input.sensitivity.export.running=Exporting factors...
+isisfish.input.sensitivity.export.title=Export factors
isisfish.input.title=Fishery input
isisfish.input.tree.cells=Cells
isisfish.input.tree.gears=Gears
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-12-21 15:08:40 UTC (rev 2857)
+++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-12-21 16:18:27 UTC (rev 2858)
@@ -44,6 +44,7 @@
Remote\ information\ file\ doesn't\ exists\ %s=
Rename\ data\ directory\ to\ %s=
Show\ help=
+Show\ version=
SimulationExecutor\ started\ with\ %s\ thread\ for\ %s=
Ssh\ key\ found\ '%s'\ will\ be\ used\ to\ connect\ to=
Stop\ simulation\ plan,\ because\ can't\ call\ afterSimulation\ correctly\ on\ plan\ %s=
@@ -348,6 +349,7 @@
isisfish.error.script.import=N'a pas pu importer pour la raison suivante %1$s
isisfish.error.script.load=N'a pas pu charger le fichier %1$s pour la raison suivante %2$s
isisfish.error.script.save=N'a pas pu sauver le fichier %1$s pour la raison suivante %2$s
+isisfish.error.sensitivity.export=Error lors de l'export des facteurs de la r\u00E9gion
isisfish.error.simulation.addanalyseplan=Impossible d'ajouter un plan d'analyze
isisfish.error.simulation.addrule=Impossible d'ajouter une r\u00E8gle
isisfish.error.simulation.getparametervalue=Impossible d'obtenir la valeur du param\u00E8tre
@@ -492,9 +494,15 @@
isisfish.input.menu.importRenameRegion=Importer une r\u00E9gion et la renommer
isisfish.input.menu.removeLocaly=Supprimer localement
isisfish.input.menu.removeLocalyRemotely=Supprimer localement et \u00E0 distance
+isisfish.input.menu.sensitivity=Mexico
+isisfish.input.menu.sensitivity.export=Exporter les facteurs
isisfish.input.menu.server=Serveur
isisfish.input.newRegion=Nouvelle r\u00E9gion
isisfish.input.selectRegion=S\u00E9lectionnez une r\u00E9gion
+isisfish.input.sensitivity.export.cancel=Export des facteurs annul\u00E9
+isisfish.input.sensitivity.export.complete=Export des facteurs r\u00E9ussit
+isisfish.input.sensitivity.export.running=Export des facteurs en cours...
+isisfish.input.sensitivity.export.title=Exporter les facteurs
isisfish.input.title=Saisie de la p\u00EAcherie
isisfish.input.tree.cells=Mailles
isisfish.input.tree.gears=Engins
Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java (rev 0)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java 2009-12-21 16:18:27 UTC (rev 2858)
@@ -0,0 +1,132 @@
+/* *##%
+ * Copyright (C) 2009 Ifremer, Code Lutin, Chatellier Eric
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 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.mexico.export;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+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.TopiaException;
+
+import fr.ifremer.isisfish.AbstractIsisFishTest;
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.StorageException;
+import fr.ifremer.isisfish.entities.FisheryRegion;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityUtils;
+
+/**
+ * Test class for {@link RegionExplorer}.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class RegionExplorerTest extends AbstractIsisFishTest {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(RegionExplorerTest.class);
+
+ /**
+ * Explore all region values and perform export implementation as xml.
+ *
+ * @throws TopiaException
+ * @throws StorageException
+ * @throws IOException
+ */
+ @Test
+ public void testExportRegionFactorsAsXml() throws TopiaException, StorageException, IOException {
+
+ // get region to export
+ RegionStorage regionStorage = RegionStorage.getRegion("BaseMotosICA");
+ TopiaContext context = regionStorage.getStorage().beginTransaction();
+ FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(context);
+
+ // export implementation
+ File file = File.createTempFile("xmlexport-", ".xml");
+ file.deleteOnExit();
+ RegionExportFactorXML xmlFactorExport = new RegionExportFactorXML(file);
+
+ // explore region (export as xml)
+ RegionExplorer explorer = new RegionExplorer();
+ explorer.explore(fisheryRegion, xmlFactorExport);
+ String xmlExport = FileUtils.readFileToString(file);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Export xml is : \n" + xmlExport);
+ }
+
+ // ========== here some tests ==========
+ // all factors must have a non null name
+ Assert.assertTrue("A factor has a null name", xmlExport.indexOf("name=\"null\"") == -1);
+ Assert.assertTrue("A factor has no name", xmlExport.indexOf("name=\"\"") == -1);
+
+ // must be present (for BaseMotosICA base)
+ // equation is a special case (entity too)
+ Assert.assertTrue("An equation factor is missing", xmlExport.indexOf("Population.Anchois_long.growth") != -1);
+
+ // close all
+ context.closeContext();
+ }
+
+ /**
+ * Test que toutes les entités et propriétés définies dans le fichier de
+ * sensibilité sont présentes dans le contenu xml.
+ *
+ * @throws TopiaException
+ * @throws StorageException
+ * @throws IOException
+ */
+ @Test
+ public void testAllEntityPresence() throws TopiaException, StorageException, IOException {
+ // get region to export
+ RegionStorage regionStorage = RegionStorage.getRegion("Golfe de Gascogne");
+ TopiaContext context = regionStorage.getStorage().beginTransaction();
+ FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(context);
+
+ // export implementation
+ File file = File.createTempFile("xmlexport-", ".xml");
+ file.deleteOnExit();
+ RegionExportFactorXML xmlFactorExport = new RegionExportFactorXML(file);
+
+ // explore region (export as xml)
+ RegionExplorer explorer = new RegionExplorer();
+ explorer.explore(fisheryRegion, xmlFactorExport);
+ String xmlExport = FileUtils.readFileToString(file);
+
+ // test that all sensitity properties appear in xml content
+ // entity part and property part must appear in factors names
+ for (String property : SensitivityUtils.getProperties().stringPropertyNames()) {
+ String entityPart = property.substring(0, property.indexOf('.'));
+ Assert.assertTrue("Entity " + entityPart + " is not present in xml export", xmlExport.indexOf(entityPart) != -1);
+
+ String propertyPart = property.substring(property.indexOf('.'));
+ Assert.assertTrue("Property " + property + " is not present in xml export", xmlExport.indexOf(propertyPart) != -1);
+ }
+
+ // close all
+ context.closeContext();
+ }
+}
Property changes on: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/export/RegionExplorerTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.h2.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.h2.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/46.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/46.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/47.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/47.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/48.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/48.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/49.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/49.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/50.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/50.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/51.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/51.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/52.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/52.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/53.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/53.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/54.t43.lob.db
===================================================================
(Binary files differ)
Property changes on: isis-fish/trunk/src/test/resources/test-database/regions/Golfe de Gascogne/data/data.lobs.db/54.t43.lob.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
1
0
r2857 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
21 Dec '09
Author: chatellier
Date: 2009-12-21 15:08:40 +0000 (Mon, 21 Dec 2009)
New Revision: 2857
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java
Log:
Change getProperties to public (usefull for tests)
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-12-21 14:05:06 UTC (rev 2856)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtils.java 2009-12-21 15:08:40 UTC (rev 2857)
@@ -66,7 +66,7 @@
*
* @return properties
*/
- protected static Properties getProperties() {
+ public static Properties getProperties() {
if (sensitivityProperties == null) {
sensitivityProperties = new Properties();
1
0
r2856 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
21 Dec '09
Author: chatellier
Date: 2009-12-21 14:05:06 +0000 (Mon, 21 Dec 2009)
New Revision: 2856
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
Log:
No better solution for now, make it deprecated.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-12-21 13:55:38 UTC (rev 2855)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-12-21 14:05:06 UTC (rev 2856)
@@ -150,7 +150,10 @@
*
* @throws IsisFishRuntimeException
* @throws IllegalArgumentException if input xml is not valid
+ *
+ * @deprecated use standard java xml api instead of xerces
*/
+ @Deprecated
public static String formatXML(String unformattedXml) {
try {
1
0
Author: chatellier
Date: 2009-12-21 13:55:38 +0000 (Mon, 21 Dec 2009)
New Revision: 2855
Modified:
isis-fish/trunk/pom.xml
Log:
Code now depends on xerces.
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-12-21 10:08:14 UTC (rev 2854)
+++ isis-fish/trunk/pom.xml 2009-12-21 13:55:38 UTC (rev 2855)
@@ -181,6 +181,13 @@
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.9.1</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- Utilisé lors de l'import xml v2 (entre autre) -->
<dependency>
<groupId>jaxen</groupId>
1
0
r2854 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/mexico test/java/fr/ifremer/isisfish/mexico
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
21 Dec '09
Author: chatellier
Date: 2009-12-21 10:08:14 +0000 (Mon, 21 Dec 2009)
New Revision: 2854
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java
Log:
Format output xml (indentation).
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-12-21 09:50:24 UTC (rev 2853)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-12-21 10:08:14 UTC (rev 2854)
@@ -20,13 +20,25 @@
import java.io.File;
import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
-import org.nuiton.topia.TopiaContext;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.xml.serialize.OutputFormat;
+import org.apache.xml.serialize.XMLSerializer;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
+import org.nuiton.topia.TopiaContext;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.mexico.xml.DesignPlanXMLVisitor;
import fr.ifremer.isisfish.mexico.xml.DomXMLParser;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
@@ -55,6 +67,10 @@
DesignPlanXMLVisitor visitor = new DesignPlanXMLVisitor();
designPlan.accept(visitor);
String designPlanXml = visitor.getXML();
+
+ // apply beautiful xml indented format
+ designPlanXml = MexicoHelper.formatXML(designPlanXml);
+
return designPlanXml;
}
@@ -91,7 +107,7 @@
try {
SAXReader reader = new SAXReader();
// don't use reader.read(String);
- // don't work on windows beacause of : in path
+ // don't work on windows because of : in path
// Document doc = reader.read(xmlFile);
reader.setEncoding("utf-8");
Document doc = reader.read(xmlFile);
@@ -125,4 +141,41 @@
}
return scenarios;
}*/
+
+ /**
+ * Format xml string.
+ *
+ * @param unformattedXml non formatted xml string (must be valid xml)
+ * @return xml, formatted and indented
+ *
+ * @throws IsisFishRuntimeException
+ * @throws IllegalArgumentException if input xml is not valid
+ */
+ public static String formatXML(String unformattedXml) {
+
+ try {
+ // parseXmlFile
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ InputSource is = new InputSource(new StringReader(unformattedXml));
+ org.w3c.dom.Document document = db.parse(is);
+
+ // format
+ OutputFormat format = new OutputFormat(document);
+ format.setLineWidth(65);
+ format.setIndenting(true);
+ format.setIndent(2);
+ Writer out = new StringWriter();
+ XMLSerializer serializer = new XMLSerializer(out, format);
+ serializer.serialize(document);
+
+ return out.toString();
+ } catch (IOException e) {
+ throw new IsisFishRuntimeException(e);
+ } catch (ParserConfigurationException e) {
+ throw new IllegalArgumentException(e);
+ } catch (SAXException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
}
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2009-12-21 09:50:24 UTC (rev 2853)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2009-12-21 10:08:14 UTC (rev 2854)
@@ -21,15 +21,13 @@
import java.io.File;
import java.io.IOException;
-import junit.framework.Assert;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Test;
import org.nuiton.math.matrix.MatrixFactory;
import org.nuiton.math.matrix.MatrixND;
import org.nuiton.topia.TopiaContext;
-import org.nuiton.util.FileUtil;
-import org.junit.Test;
import fr.ifremer.isisfish.AbstractIsisFishTest;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
@@ -67,18 +65,15 @@
matrix1.setValue(new int[] { 2, 1 }, -1);
// factor 1
- Factor<Double, Double> factorContinuous = new Factor<Double, Double>(
- "factor 1 (double continuous)");
+ Factor<Double, Double> factorContinuous = new Factor<Double, Double>("factor 1 (double continuous)");
ContinuousDomain<Double, Double> domain1 = new ContinuousDomain<Double, Double>();
domain1.setMinBound(0.0);
domain1.setMaxBound(50.0);
factorContinuous.setDomain(domain1);
- factorContinuous
- .setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength");
+ factorContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength");
// factor 2
- Factor<Double, Double> factorDiscrete = new Factor<Double, Double>(
- "factor 2 (double discrete)");
+ Factor<Double, Double> factorDiscrete = new Factor<Double, Double>("factor 2 (double discrete)");
DiscreteDomain<Double, Double> domain2 = new DiscreteDomain<Double, Double>();
domain2.getValues().put(0.0, 12.3);
domain2.getValues().put(1.0, 70.9);
@@ -86,43 +81,36 @@
domain2.getValues().put(3.0, -12.1);
domain2.getValues().put(4.0, -8.45);
factorDiscrete.setDomain(domain2);
- factorDiscrete
- .setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength");
+ factorDiscrete.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength");
factorDiscrete.setValue(3.0);
// factor 3
- Factor<Integer, Double> factorContinuous2 = new Factor<Integer, Double>(
- "factor 3 (integer discrete)");
+ Factor<Integer, Double> factorContinuous2 = new Factor<Integer, Double>("factor 3 (integer discrete)");
DiscreteDomain<Integer, Double> domain3 = new DiscreteDomain<Integer, Double>();
domain3.getValues().put(0.0, 13);
domain3.getValues().put(1.0, 14);
domain3.getValues().put(2.0, 45);
factorContinuous2.setDomain(domain3);
- factorContinuous2
- .setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength");
+ factorContinuous2.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength");
// factor 4
- Factor<MatrixND, Double> factorMatrixContinuous = new Factor<MatrixND, Double>(
- "factor 4 (MatrixContinuous)");
+ Factor<MatrixND, Double> factorMatrixContinuous = new Factor<MatrixND, Double>("factor 4 (MatrixContinuous)");
MatrixContinuousDomain domain4 = new MatrixContinuousDomain();
domain4.setCoefficient(0.1);
domain4.setMatrix(matrix1);
domain4.setOperator("-");
factorMatrixContinuous.setDomain(domain4);
- factorMatrixContinuous
- .setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength");
+ factorMatrixContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength");
// factor 5
- Factor<Double, Double> factorEquationContinuous = new Factor<Double, Double>(
- "factor 5 (EquationContinuous)");
+ Factor<Double, Double> factorEquationContinuous = new Factor<Double, Double>("factor 5 (EquationContinuous)");
EquationContinuousDomain domain5 = new EquationContinuousDomain();
domain5.setCoefficient(0.1);
domain5.setReferenceValue(45.0);
domain5.setVariableName("L1");
domain5.setOperator("-");
factorEquationContinuous.setDomain(domain5);
- factorEquationContinuous
- .setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#maxLength");
+ factorEquationContinuous.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#maxLength");
designPlan.getFactors().add(factorContinuous);
designPlan.getFactors().add(factorDiscrete);
@@ -146,15 +134,11 @@
// test xml export
String xml = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
- Assert.assertTrue(xml
- .indexOf("<factor name=\"factor 2 (double discrete)\"") != -1);
+ Assert.assertTrue(xml.indexOf("<factor name=\"factor 2 (double discrete)\"") != -1);
//Assert.assertTrue(xml.indexOf("<range min=\"12.0\" max=\"99.0\" />") != -1);
Assert.assertTrue(xml.indexOf("<value>70.9</value>") != -1);
if (log.isDebugEnabled()) {
- xml = xml.replaceAll(">", ">\n");
- FileUtil.writeString(new File(getTestDirectory(),
- "mexicohelper_designplan.xml"), xml);
log.info("testGetDesignPlanAsXML xml = " + xml);
}
}
@@ -167,16 +151,16 @@
@Test
public void testGetDesignPlanFromXML() throws IOException {
- File testFile = new File(
- "src/test/resources/mexico/mexicohelper_designplan.xml");
+ File testFile = new File("src/test/resources/mexico/mexicohelper_designplan.xml");
// topia context can be null in tests
DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile, null);
Assert.assertEquals(5, plan.getFactors().size());
String xml = MexicoHelper.getDesignPlanAsXML(plan);
- xml = xml.replaceAll(">", ">\n");
- log.info("testGetDesignPlanFromXML xml = " + xml);
+ if (log.isDebugEnabled()) {
+ log.debug("testGetDesignPlanFromXML xml = " + xml);
+ }
}
/**
@@ -190,16 +174,18 @@
// first export
DesignPlan testDesignPlan = getTestDesignPlan();
String xml1 = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
- log.debug("xml 1 = " + xml1);
+ if (log.isDebugEnabled()) {
+ log.debug("xml 1 = " + xml1);
+ }
// export
- File testFile = new File(
- "src/test/resources/mexico/mexicohelper_designplan.xml");
+ File testFile = new File("src/test/resources/mexico/mexicohelper_designplan.xml");
// topia context can be null in tests
DesignPlan plan = MexicoHelper.getDesignPlanFromXML(testFile, null);
String xml2 = MexicoHelper.getDesignPlanAsXML(plan);
- log.debug("xml 2 = " + xml2);
-
+ if (log.isDebugEnabled()) {
+ log.debug("xml 2 = " + xml2);
+ }
Assert.assertEquals(xml1, xml2);
}
}
1
0
r2853 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
by chatellier@users.labs.libre-entreprise.org 21 Dec '09
21 Dec '09
Author: chatellier
Date: 2009-12-21 09:50:24 +0000 (Mon, 21 Dec 2009)
New Revision: 2853
Removed:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileChangeListener.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileEvent.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileMonitor.java
Log:
Remove unused classes.
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileChangeListener.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileChangeListener.java 2009-12-21 08:49:22 UTC (rev 2852)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileChangeListener.java 2009-12-21 09:50:24 UTC (rev 2853)
@@ -1,16 +0,0 @@
-package fr.ifremer.isisfish.util;
-
-/**
- * For listening modification on a file
- *
- * @author chemit
- */
-public interface FileChangeListener {
-
- /**
- * Invoked when a file changes.
- *
- * @param event event.
- */
- public void fileChanged(FileEvent event);
-}
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileEvent.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileEvent.java 2009-12-21 08:49:22 UTC (rev 2852)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileEvent.java 2009-12-21 09:50:24 UTC (rev 2853)
@@ -1,33 +0,0 @@
-package fr.ifremer.isisfish.util;
-
-import java.util.EventObject;
-
-public class FileEvent extends EventObject {
-
- /** file location */
- protected String filename;
-
- /** file lastModified value */
- protected long lastModified;
-
- /** file length value */
- public long length;
-
- private static final long serialVersionUID = -6758072587195502206L;
-
- public FileEvent(Object source, String filename, long lastModified, long length) {
- super(source);
- this.filename = filename;
- this.lastModified = lastModified;
- this.length = length;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder(super.toString());
- sb.append("\n( name ").append(filename).append(")");
- sb.append("\n( lastModified ").append(lastModified).append(")");
- sb.append("\n( length ").append(length).append(")");
- return sb.toString();
- }
-}
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileMonitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileMonitor.java 2009-12-21 08:49:22 UTC (rev 2852)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/FileMonitor.java 2009-12-21 09:50:24 UTC (rev 2853)
@@ -1,100 +0,0 @@
-package fr.ifremer.isisfish.util;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.Hashtable;
-import java.util.Timer;
-import java.util.TimerTask;
-
-/**
- * This is a monitor for file (listen for modification on files)
- *
- * @author chemit
- * @see FileChangeListener
- * @see FileEvent
- */
-public class FileMonitor {
-
- private static final FileMonitor instance = new FileMonitor();
-
- private Timer timer;
- private Hashtable<String, FileMonitorTask> timerEntries;
-
- public static FileMonitor getInstance() {
- return instance;
- }
-
- protected FileMonitor() {
- // Create timer, run timer thread as daemon.
- timer = new Timer(true);
- timerEntries = new Hashtable<String, FileMonitorTask>();
- }
-
- /**
- * Add a monitored file with a FileChangeListener.
- *
- * @param listener listener to notify when the file changed.
- * @param fileName name of the file to monitor.
- * @param period polling period in milliseconds.
- * @throws FileNotFoundException if file not found
- */
- public void addFileChangeListener(FileChangeListener listener, String fileName, long period) throws FileNotFoundException {
- removeFileChangeListener(listener, fileName);
- FileMonitorTask task = new FileMonitorTask(listener, fileName);
- timerEntries.put(fileName + listener.hashCode(), task);
- timer.schedule(task, period, period);
- }
-
- /**
- * Remove the listener from the notification list.
- *
- * @param listener the listener to be removed.
- * @param fileName the filename listened
- */
- public void removeFileChangeListener(FileChangeListener listener, String fileName) {
- FileMonitorTask task = timerEntries.remove(fileName + listener.hashCode());
- if (task != null) {
- task.cancel();
- }
- }
-
- protected void fireFileChangeEvent(FileChangeListener listener,
- String fileName, long lastModified,
- long length) {
- listener.fileChanged(new FileEvent(listener, fileName, lastModified, length));
- }
-
- class FileMonitorTask extends TimerTask {
- FileChangeListener listener;
- String fileName;
- File monitoredFile;
- long lastModified;
- long length;
-
- public FileMonitorTask(FileChangeListener listener, String fileName)
- throws FileNotFoundException {
- this.listener = listener;
- this.fileName = fileName;
- this.lastModified = 0;
- this.length = 0;
-
- monitoredFile = new File(fileName);
- if (!monitoredFile.exists()) {
- throw new FileNotFoundException("File Not Found: " + fileName);
- }
-
- this.lastModified = monitoredFile.lastModified();
- //this.length = monitoredFile.length();
- }
-
- public void run() {
- long lastModified = monitoredFile.lastModified();
- long length = monitoredFile.length();
- if (lastModified != this.lastModified || length != this.length) {
- this.lastModified = lastModified;
- this.length = length;
- fireFileChangeEvent(this.listener, this.fileName, this.lastModified, this.length);
- }
- }
- }
-}
1
0
Author: chatellier
Date: 2009-12-21 08:49:22 +0000 (Mon, 21 Dec 2009)
New Revision: 2852
Modified:
isis-fish/trunk/pom.xml
Log:
Update h2
Modified: isis-fish/trunk/pom.xml
===================================================================
--- isis-fish/trunk/pom.xml 2009-12-18 10:16:12 UTC (rev 2851)
+++ isis-fish/trunk/pom.xml 2009-12-21 08:49:22 UTC (rev 2852)
@@ -193,7 +193,7 @@
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
- <version>1.2.125</version>
+ <version>1.2.126</version>
<scope>compile</scope>
</dependency>
1
0