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
March 2009
- 5 participants
- 159 discussions
r1964 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
13 Mar '09
Author: chatellier
Date: 2009-03-13 17:06:33 +0000 (Fri, 13 Mar 2009)
New Revision: 1964
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
Log:
Update dates
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-03-13 16:05:51 UTC (rev 1963)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-03-13 17:06:33 UTC (rev 1964)
@@ -118,7 +118,7 @@
return apiVersion;
}
- static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2008";
+ static final public String COPYRIGHT_TEXT = "Version " + getVersion() + " IFREMER-MAERHA © 2000-2009";
static final public String CONFIG_FILENAME = "isis-config-" + version.getNumber(0);
/** separateur de liste */
1
0
r1963 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/mexico main/java/fr/ifremer/isisfish/mexico/xml main/java/fr/ifremer/isisfish/simulator/sensitivity main/java/fr/ifremer/isisfish/simulator/sensitivity/domain main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor test/java/fr/ifremer/isisfish/mexico test/resources test/resources/mexico
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
13 Mar '09
Author: chatellier
Date: 2009-03-13 16:05:51 +0000 (Fri, 13 Mar 2009)
New Revision: 1963
Added:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ScenarioXMLVisitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/SensitivityScenariosXMLVisitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor/ScenarioVisitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor/SensitivityScenariosVisitor.java
isis-fish/trunk/src/test/resources/mexico/
isis-fish/trunk/src/test/resources/mexico/mexicohelper_designplan.xml
isis-fish/trunk/src/test/resources/mexico/mexicohelper_scenarios.xml
Removed:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Scenario.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityScenarios.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java
Log:
Begining of read/write designplan/scenarios as xml
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-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -18,19 +18,30 @@
package fr.ifremer.isisfish.mexico;
+import java.io.IOException;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
import fr.ifremer.isisfish.mexico.xml.DesignPlanXMLVisitor;
+import fr.ifremer.isisfish.mexico.xml.DomXMLParser;
+import fr.ifremer.isisfish.mexico.xml.MexicoContentHandler;
+import fr.ifremer.isisfish.mexico.xml.SensitivityScenariosXMLVisitor;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
/**
* Mexico helper class.
*
* @author chatellier
- * @version $Revision: 1.0 $
+ * @version $Revision$
*
* @since 3.2.0.4
*
- * Last update : $Date: 5 mars 2009 $
- * By : $Author: chatellier $
+ * Last update : $Date$
+ * By : $Author$
*/
public class MexicoHelper {
@@ -41,11 +52,69 @@
* @return xml design plan representation
*/
public static String getDesignPlanAsXML(DesignPlan designPlan) {
-
+
DesignPlanXMLVisitor visitor = new DesignPlanXMLVisitor();
designPlan.accept(visitor);
String designPlanXml = visitor.getXML();
return designPlanXml;
-
+
}
+
+ /**
+ * Get xml representation of a scenario.
+ *
+ * @param scenarios sensitivity scenarios
+ * @return xml sensitivity scenarios representation
+ */
+ public static String getSensitivityScenarionsAsXML(
+ SensitivityScenarios scenarios) {
+
+ SensitivityScenariosXMLVisitor visitor = new SensitivityScenariosXMLVisitor();
+ scenarios.accept(visitor);
+ String sensitivityScenariosXml = visitor.getXML();
+ return sensitivityScenariosXml;
+
+ }
+
+ /**
+ * Parse xmlFile with sax, and return a {@link DesignPlan}.
+ *
+ * @param xmlFile file path to parse
+ * @return DesignPlan
+ * @throws IOException
+ */
+ public static DesignPlan getDesignPlanFromXML(String xmlFile)
+ throws IOException {
+ DesignPlan designPlan = null;
+ try {
+ SAXReader reader = new SAXReader();
+ Document doc = reader.read(xmlFile);
+ Element root = doc.getRootElement();
+ designPlan = DomXMLParser.parseDesignPlan(root);
+ } catch (DocumentException e) {
+ throw new IOException(e);
+ }
+ return designPlan;
+ }
+
+ /**
+ * Parse xmlFile with sax, and return a {@link SensitivityScenarios}.
+ *
+ * @param xmlFile file path to parse
+ * @return SensitivityScenarios
+ * @throws IOException
+ */
+ public static SensitivityScenarios getSensitivityScenariosFromXML(
+ String xmlFile) throws IOException {
+ SensitivityScenarios scenarios = null;
+ try {
+ SAXReader reader = new SAXReader();
+ Document doc = reader.read(xmlFile);
+ Element root = doc.getRootElement();
+ scenarios = DomXMLParser.parseSensitivityScenarios(root);
+ } catch (DocumentException e) {
+ throw new IOException(e);
+ }
+ return scenarios;
+ }
}
Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/MexicoHelper.java
___________________________________________________________________
Name: svn:keywords
+ Revision Author Date
Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java 2009-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -1,90 +0,0 @@
-/* *##%
- * Copyright (C) 2009 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.mexico.xml;
-
-import java.io.Serializable;
-
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-
-/**
- * XML domain visitor.
- *
- * @author chatellier
- * @version $Revision: 1.0 $
- *
- * Last update : $Date: 5 mars 2009 $
- * By : $Author: chatellier $
- */
-public class ContinousDomainXMLVisitor extends DomainXMLVisitor {
-
- /** XML text buffer. */
- protected StringBuffer xmlBuffer;
-
- /**
- * Constructor.
- *
- * Init xml buffer.
- */
- public ContinousDomainXMLVisitor() {
- xmlBuffer = new StringBuffer();
- }
-
- /**
- * Get xml buffer content.
- *
- * @return content as string
- */
- public String getXML() {
- String xml = xmlBuffer.toString();
- return xml;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void start(Domain<? extends Serializable> domain) {
- xmlBuffer.append("<domain>");
- xmlBuffer.append("<fixed");
-
- ContinuousDomain<?> cDomain = (ContinuousDomain<?>)domain;
- xmlBuffer.append(" cardinality=\"" + cDomain.getCardinality() + "\">");
-
- xmlBuffer.append("<range min=\"" + cDomain.getMinBound() + "\" max=\"" + cDomain.getMaxBound() + "\" />");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public <E extends Serializable> void visit(Domain<E> domain,
- Serializable label, Serializable value) {
-
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void end(Domain<? extends Serializable> domain) {
- xmlBuffer.append("<fixed>");
- xmlBuffer.append("</domain>");
- }
-}
Copied: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java (from rev 1950, isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinousDomainXMLVisitor.java)
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -0,0 +1,68 @@
+/* *##%
+ * Copyright (C) 2009 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.mexico.xml;
+
+import java.io.Serializable;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Domain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+
+/**
+ * XML domain visitor.
+ *
+ * @author chatellier
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 5 mars 2009 $
+ * By : $Author: chatellier $
+ */
+public class ContinuousDomainXMLVisitor extends DomainXMLVisitor {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void start(Domain<? extends Serializable> domain) {
+ xmlBuffer.append("<domain>");
+ xmlBuffer.append("<fixed");
+
+ ContinuousDomain<?> cDomain = (ContinuousDomain<?>)domain;
+ xmlBuffer.append(" cardinality=\"" + cDomain.getCardinality() + "\">");
+
+ xmlBuffer.append("<range min=\"" + cDomain.getMinBound() + "\" max=\"" + cDomain.getMaxBound() + "\" />");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public <E extends Serializable> void visit(Domain<E> domain,
+ Serializable label, Serializable value) {
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void end(Domain<? extends Serializable> domain) {
+ xmlBuffer.append("</fixed>");
+ xmlBuffer.append("</domain>");
+ }
+}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java 2009-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -34,29 +34,7 @@
*/
public class DiscreteDomainXMLVisitor extends DomainXMLVisitor {
- /** XML text buffer. */
- protected StringBuffer xmlBuffer;
-
/**
- * Constructor.
- *
- * Init xml buffer.
- */
- public DiscreteDomainXMLVisitor() {
- xmlBuffer = new StringBuffer();
- }
-
- /**
- * Get xml buffer content.
- *
- * @return content as string
- */
- public String getXML() {
- String xml = xmlBuffer.toString();
- return xml;
- }
-
- /**
* {@inheritDoc}
*/
@Override
@@ -86,7 +64,7 @@
@Override
public void end(Domain<? extends Serializable> domain) {
xmlBuffer.append("</enumeration>");
- xmlBuffer.append("<fixed>");
+ xmlBuffer.append("</fixed>");
xmlBuffer.append("</domain>");
}
}
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -0,0 +1,224 @@
+/* *##%
+ * Copyright (C) 2009 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.mexico.xml;
+
+import java.util.List;
+
+import org.dom4j.Element;
+
+import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
+
+/**
+ * Parse xml using dom.
+ *
+ * @see DOM4J
+ *
+ * @author chatellier
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 13 mars 2009 $
+ * By : $Author: chatellier $
+ */
+public class DomXMLParser {
+
+ /**
+ * Parse element root node as Design plan.
+ *
+ * @return a {@link DesignPlan}
+ */
+ public static DesignPlan parseDesignPlan(Element rootElement) {
+
+ DesignPlan plan = new DesignPlan();
+
+ List<Element> factorElements = rootElement
+ .selectNodes("child::factors/factor");
+
+ for (Element factorElement : factorElements) {
+ String type = factorElement.attributeValue("type");
+ String name = factorElement.attributeValue("name");
+ String property = factorElement.attributeValue("property");
+ String path = factorElement.element("target").getText().trim();
+
+ // double
+ if ("real".equals(type)) {
+ Factor<Double> factor = new Factor<Double>(name);
+ factor.setPath(path);
+ Element fixedElement = factorElement.element("domain").element(
+ "fixed");
+ if ("continuous".equals(property)) {
+ ContinuousDomain<Double> domain = new ContinuousDomain<Double>();
+ domain.setCardinality(Integer.valueOf(fixedElement
+ .attributeValue("cardinality")));
+ Element rangeElement = fixedElement.element("range");
+ domain.setMinBound(Double.valueOf(rangeElement
+ .attributeValue("min")));
+ domain.setMaxBound(Double.valueOf(rangeElement
+ .attributeValue("max")));
+ factor.setDomain(domain);
+ } else if ("discrete".equals(property)) {
+ DiscreteDomain<Double> domain = new DiscreteDomain<Double>();
+ List<Element> valueElements = fixedElement.element(
+ "enumeration").elements("value");
+ int label = 0;
+ for (Element valueElement : valueElements) {
+ domain.getValues().put(Integer.valueOf(label),
+ Double.valueOf(valueElement.getText().trim()));
+ ++label;
+ }
+ factor.setDomain(domain);
+ }
+ plan.getFactors().add(factor);
+ } else if ("integer".equals(type)) {
+ Factor<Integer> factor = new Factor<Integer>(name);
+ factor.setPath(path);
+ Element fixedElement = factorElement.element("domain").element(
+ "fixed");
+ if ("continuous".equals(property)) {
+ ContinuousDomain<Integer> domain = new ContinuousDomain<Integer>();
+ domain.setCardinality(Integer.valueOf(fixedElement
+ .attributeValue("cardinality")));
+ Element rangeElement = fixedElement.element("range");
+ domain.setMinBound(Integer.valueOf(rangeElement
+ .attributeValue("min")));
+ domain.setMaxBound(Integer.valueOf(rangeElement
+ .attributeValue("max")));
+ factor.setDomain(domain);
+ } else if ("discrete".equals(property)) {
+ DiscreteDomain<Integer> domain = new DiscreteDomain<Integer>();
+ List<Element> valueElements = fixedElement.element(
+ "enumeration").elements("value");
+ int label = 0;
+ for (Element valueElement : valueElements) {
+ domain.getValues().put(Integer.valueOf(label),
+ Integer.valueOf(valueElement.getText().trim()));
+ ++label;
+ }
+ factor.setDomain(domain);
+ }
+ plan.getFactors().add(factor);
+ }
+ }
+
+ return plan;
+ }
+
+ /**
+ * Parse element root node as Sensitivity Scenarios.
+ *
+ * @return a {@link DesignPlan}
+ */
+ public static SensitivityScenarios parseSensitivityScenarios(
+ Element rootElement) {
+
+ SensitivityScenarios scenarios = new SensitivityScenarios();
+
+ List<Element> scenarioElements = rootElement
+ .selectNodes("child::scenarios/scenario");
+
+ for (Element scenarioElement : scenarioElements) {
+
+ Scenario scenario = new Scenario();
+ List<Element> factorElements = scenarioElement.elements("factor");
+
+ for (Element factorElement : factorElements) {
+ String type = factorElement.attributeValue("type");
+ String name = factorElement.attributeValue("name");
+ String property = factorElement.attributeValue("property");
+ String path = factorElement.element("target").getText().trim();
+
+ // double
+ if ("real".equals(type)) {
+ Factor<Double> factor = new Factor<Double>(name);
+ factor.setPath(path);
+ factor.setValue(Double.valueOf(factorElement.element(
+ "value").getText().trim()));
+
+ Element fixedElement = factorElement.element("domain")
+ .element("fixed");
+ if ("continuous".equals(property)) {
+ ContinuousDomain<Double> domain = new ContinuousDomain<Double>();
+ domain.setCardinality(Integer.valueOf(fixedElement
+ .attributeValue("cardinality")));
+ Element rangeElement = fixedElement.element("range");
+ domain.setMinBound(Double.valueOf(rangeElement
+ .attributeValue("min")));
+ domain.setMaxBound(Double.valueOf(rangeElement
+ .attributeValue("max")));
+ factor.setDomain(domain);
+ } else if ("discrete".equals(property)) {
+ DiscreteDomain<Double> domain = new DiscreteDomain<Double>();
+ List<Element> valueElements = fixedElement.element(
+ "enumeration").elements("value");
+ int label = 0;
+ for (Element valueElement : valueElements) {
+ domain.getValues().put(
+ Integer.valueOf(label),
+ Double.valueOf(valueElement.getText()
+ .trim()));
+ ++label;
+ }
+ factor.setDomain(domain);
+ }
+ scenario.getFactors().add(factor);
+ } else if ("integer".equals(type)) {
+ Factor<Integer> factor = new Factor<Integer>(name);
+ factor.setPath(path);
+ factor.setValue(Integer.valueOf(factorElement.element(
+ "value").getText().trim()));
+
+ Element fixedElement = factorElement.element("domain")
+ .element("fixed");
+ if ("continuous".equals(property)) {
+ ContinuousDomain<Integer> domain = new ContinuousDomain<Integer>();
+ domain.setCardinality(Integer.valueOf(fixedElement
+ .attributeValue("cardinality")));
+ Element rangeElement = fixedElement.element("range");
+ domain.setMinBound(Integer.valueOf(rangeElement
+ .attributeValue("min")));
+ domain.setMaxBound(Integer.valueOf(rangeElement
+ .attributeValue("max")));
+ factor.setDomain(domain);
+ } else if ("discrete".equals(property)) {
+ DiscreteDomain<Integer> domain = new DiscreteDomain<Integer>();
+ List<Element> valueElements = fixedElement.element(
+ "enumeration").elements("value");
+ int label = 0;
+ for (Element valueElement : valueElements) {
+ domain.getValues().put(
+ Integer.valueOf(label),
+ Integer.valueOf(valueElement.getText()
+ .trim()));
+ ++label;
+ }
+ factor.setDomain(domain);
+ }
+ scenario.getFactors().add(factor);
+ }
+ }
+ scenarios.getScenarios().add(scenario);
+ }
+
+ return scenarios;
+ }
+}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java 2009-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/DomainXMLVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -18,11 +18,6 @@
package fr.ifremer.isisfish.mexico.xml;
-import java.io.Serializable;
-
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
import fr.ifremer.isisfish.simulator.sensitivity.visitor.DomainVisitor;
/**
@@ -34,7 +29,7 @@
* Last update : $Date: 5 mars 2009 $
* By : $Author: chatellier $
*/
-public class DomainXMLVisitor implements DomainVisitor {
+public abstract class DomainXMLVisitor implements DomainVisitor {
/** XML text buffer. */
protected StringBuffer xmlBuffer;
@@ -57,41 +52,4 @@
String xml = xmlBuffer.toString();
return xml;
}
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void start(Domain<? extends Serializable> domain) {
- xmlBuffer.append("<domain>");
- xmlBuffer.append("<fixed");
-
- if (domain instanceof ContinuousDomain) {
- ContinuousDomain<?> cDomain = (ContinuousDomain<?>)domain;
- xmlBuffer.append(" cardinality=\"" + cDomain.getCardinality() + "\"");
- }
- else if (domain instanceof DiscreteDomain) {
- DiscreteDomain<?> dDomain = (DiscreteDomain<?>)domain;
- xmlBuffer.append(" cardinality=\"" + dDomain.getValues().size() + "\"");
- }
- xmlBuffer.append(">");
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public <E extends Serializable> void visit(Domain<E> domain,
- Serializable label, Serializable value) {
-
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void end(Domain<? extends Serializable> domain) {
- xmlBuffer.append("</fixed>");
- xmlBuffer.append("</domain>");
- }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java 2009-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/FactorXMLVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -66,14 +66,30 @@
public void start(Factor<? extends Serializable> factor) {
xmlBuffer.append("<factor");
xmlBuffer.append(" name=\"" + factor.getName() + "\"");
+ Serializable referenceValueForType = null;
+ // property attribute
if (factor.getDomain() instanceof ContinuousDomain) {
xmlBuffer.append(" property=\"continuous\"");
+ referenceValueForType = ((ContinuousDomain)factor.getDomain()).getMinBound();
}
else if (factor.getDomain() instanceof DiscreteDomain) {
xmlBuffer.append(" property=\"discrete\"");
+ referenceValueForType = (Serializable)((DiscreteDomain)factor.getDomain()).getValues().get(((DiscreteDomain)factor.getDomain()).getValues().firstKey());
}
+ // type attribute
+ if (referenceValueForType instanceof Double || referenceValueForType instanceof Float) {
+ xmlBuffer.append(" type=\"real\"");
+ }
+ else if (referenceValueForType instanceof Integer) {
+ xmlBuffer.append(" type=\"integer\"");
+ }
xmlBuffer.append(">");
+ // target element
xmlBuffer.append("<target>" + factor.getPath() + "</target>");
+ // value element
+ if (factor.getValue() != null) {
+ xmlBuffer.append("<value>" + factor.getValue() + "</value>");
+ }
}
/*
@@ -83,7 +99,7 @@
public void visit(Factor<? extends Serializable> factor, Domain<? extends Serializable> domain) {
DomainXMLVisitor visitor = null;
if (factor.getDomain() instanceof ContinuousDomain) {
- visitor = new ContinousDomainXMLVisitor();
+ visitor = new ContinuousDomainXMLVisitor();
}
else if (factor.getDomain() instanceof DiscreteDomain) {
visitor = new DiscreteDomainXMLVisitor();
@@ -98,7 +114,5 @@
@Override
public void end(Factor<? extends Serializable> factor) {
xmlBuffer.append("</factor>");
-
}
-
}
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ScenarioXMLVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ScenarioXMLVisitor.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/ScenarioXMLVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -0,0 +1,88 @@
+/* *##%
+ * Copyright (C) 2009 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.mexico.xml;
+
+import java.io.Serializable;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Domain;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.visitor.ScenarioVisitor;
+
+/**
+ * XML domain visitor.
+ *
+ * @author chatellier
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 5 mars 2009 $
+ * By : $Author: chatellier $
+ */
+public class ScenarioXMLVisitor implements ScenarioVisitor {
+
+ /** XML text buffer. */
+ protected StringBuffer xmlBuffer;
+
+ /**
+ * Constructor.
+ *
+ * Init xml buffer.
+ */
+ public ScenarioXMLVisitor() {
+ xmlBuffer = new StringBuffer();
+ }
+
+ /**
+ * Get xml buffer content.
+ *
+ * @return content as string
+ */
+ public String getXML() {
+ String xml = xmlBuffer.toString();
+ return xml;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void start(Scenario scenario) {
+ xmlBuffer.append("<scenario>");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void visit(Scenario scenario, Factor<? extends Serializable> factor) {
+ FactorXMLVisitor visitor = new FactorXMLVisitor();
+ factor.accept(visitor);
+ xmlBuffer.append(visitor.getXML());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void end(Scenario scenario) {
+ xmlBuffer.append("</scenario>");
+ }
+}
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/SensitivityScenariosXMLVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/SensitivityScenariosXMLVisitor.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/mexico/xml/SensitivityScenariosXMLVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -0,0 +1,89 @@
+/* *##%
+ * Copyright (C) 2009 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.mexico.xml;
+
+import java.io.Serializable;
+
+import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
+import fr.ifremer.isisfish.simulator.sensitivity.visitor.SensitivityScenariosVisitor;
+
+/**
+ * XML sensitivity scenarios visitor.
+ *
+ * @author chatellier
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 5 mars 2009 $
+ * By : $Author: chatellier $
+ */
+public class SensitivityScenariosXMLVisitor implements SensitivityScenariosVisitor {
+
+ /** XML text buffer. */
+ protected StringBuffer xmlBuffer;
+
+ /**
+ * Constructor.
+ *
+ * Init xml buffer.
+ */
+ public SensitivityScenariosXMLVisitor() {
+ xmlBuffer = new StringBuffer();
+ }
+
+ /**
+ * Get xml buffer content.
+ *
+ * @return content as string
+ */
+ public String getXML() {
+ String xml = xmlBuffer.toString();
+ return xml;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void start(SensitivityScenarios scenarios) {
+ xmlBuffer.append("<experimentalScenarios>");
+ xmlBuffer.append("<scenarios>");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void visit(SensitivityScenarios scenarios, Scenario scenario) {
+ ScenarioXMLVisitor visitor = new ScenarioXMLVisitor();
+ scenario.accept(visitor);
+ xmlBuffer.append(visitor.getXML());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void end(SensitivityScenarios scenarios) {
+ xmlBuffer.append("</scenarios>");
+ xmlBuffer.append("</experimentalScenarios>");
+ }
+}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Scenario.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Scenario.java 2009-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Scenario.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -21,7 +21,10 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import fr.ifremer.isisfish.simulator.sensitivity.visitor.ScenarioVisitor;
+
/**
* Scenario d'execution de simulation.
*
@@ -84,4 +87,17 @@
public void setFactors(List<Factor<? extends Serializable>> factors) {
this.factors = factors;
}
+
+ /**
+ * Accept a new visitor.
+ *
+ * @param visitor
+ */
+ public void accept(ScenarioVisitor visitor) {
+ visitor.start(this);
+ for(Factor<? extends Serializable> factor : factors) {
+ visitor.visit(this, factor);
+ }
+ visitor.end(this);
+ }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityScenarios.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityScenarios.java 2009-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityScenarios.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -18,9 +18,12 @@
package fr.ifremer.isisfish.simulator.sensitivity;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
+import fr.ifremer.isisfish.simulator.sensitivity.visitor.SensitivityScenariosVisitor;
+
/**
* Ensemble de {@link Scenario}.
*
@@ -30,7 +33,7 @@
* Last update : $Date: 24 févr. 2009 $
* By : $Author: chatellier $
*/
-public class SensitivityScenarios {
+public class SensitivityScenarios implements Serializable {
/** serialVersionUID. */
private static final long serialVersionUID = 4953721873692486687L;
@@ -64,4 +67,17 @@
public void setScenarios(List<Scenario> scenarios) {
this.scenarios = scenarios;
}
+
+ /**
+ * Accept a new visitor.
+ *
+ * @param visitor
+ */
+ public void accept(SensitivityScenariosVisitor visitor) {
+ visitor.start(this);
+ for(Scenario scenario : scenarios) {
+ visitor.visit(this, scenario);
+ }
+ visitor.end(this);
+ }
}
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java 2009-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/EquationContinuousDomain.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -20,8 +20,6 @@
import java.io.Serializable;
-import fr.ifremer.isisfish.simulator.sensitivity.visitor.DomainVisitor;
-
/**
* Domaine continu portant sur variable pouvant prendre diférente
* valeur par rapport à une valeur initiale.
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor/ScenarioVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor/ScenarioVisitor.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor/ScenarioVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -0,0 +1,58 @@
+/* *##%
+ * Copyright (C) 2009 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.sensitivity.visitor;
+
+import java.io.Serializable;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
+
+/**
+ * Domain visitor.
+ *
+ * @author chatellier
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 5 mars 2009 $
+ * By : $Author: chatellier $
+ */
+public interface ScenarioVisitor {
+
+ /**
+ * Start.
+ *
+ * @param scenario scenario
+ */
+ void start(Scenario scenario);
+
+ /**
+ * Visit domain value or property.
+ *
+ * @param scenario scenario
+ * @param factor factor
+ */
+ void visit(Scenario scenario, Factor<? extends Serializable> factor);
+
+ /**
+ * End.
+ *
+ * @param scenario scenario
+ */
+ void end(Scenario scenario);
+}
Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor/SensitivityScenariosVisitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor/SensitivityScenariosVisitor.java (rev 0)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/visitor/SensitivityScenariosVisitor.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -0,0 +1,56 @@
+/* *##%
+ * Copyright (C) 2009 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.sensitivity.visitor;
+
+import fr.ifremer.isisfish.simulator.sensitivity.Scenario;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
+
+/**
+ * Domain visitor.
+ *
+ * @author chatellier
+ * @version $Revision: 1.0 $
+ *
+ * Last update : $Date: 5 mars 2009 $
+ * By : $Author: chatellier $
+ */
+public interface SensitivityScenariosVisitor {
+
+ /**
+ * Start.
+ *
+ * @param scenarios scenarios
+ */
+ void start(SensitivityScenarios scenarios);
+
+ /**
+ * Visit domain value or property.
+ *
+ * @param scenarios scenarios
+ * @param scenario scenario
+ */
+ void visit(SensitivityScenarios scenarios, Scenario scenario);
+
+ /**
+ * End.
+ *
+ * @param scenarios scenarios
+ */
+ void end(SensitivityScenarios scenarios);
+}
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-03-13 11:55:40 UTC (rev 1962)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/mexico/MexicoHelperTest.java 2009-03-13 16:05:51 UTC (rev 1963)
@@ -28,12 +28,15 @@
import org.codelutin.math.matrix.MatrixFactory;
import org.codelutin.math.matrix.MatrixND;
import org.codelutin.util.FileUtil;
-import org.junit.Ignore;
import org.junit.Test;
import fr.ifremer.TestUtils;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculatorRandomMock;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain;
@@ -53,13 +56,9 @@
/** Commons logging log. */
private static Log log = LogFactory.getLog(MexicoHelperTest.class);
- /**
- * Test method {@link MexicoHelper#getDesignPlanAsXML(DesignPlan)}.
- * @throws IOException
- */
- @Test
- public void testGetDesignPlanAsXML() throws IOException {
-
+ protected DesignPlan getTestDesignPlan() {
+ DesignPlan designPlan = new DesignPlan();
+
// matrix 1
MatrixND matrix1 = MatrixFactory.getInstance().create("test1",
new int[] { 3, 2 }, new String[] { "col1", "col2" });
@@ -69,8 +68,6 @@
matrix1.setValue(new int[] { 1, 1 }, 2);
matrix1.setValue(new int[] { 2, 0 }, 12);
matrix1.setValue(new int[] { 2, 1 }, -1);
-
- DesignPlan designPlan = new DesignPlan();
// factor 1
Factor<Double> factorContinuous = new Factor<Double>("factor 1 (double)");
@@ -124,9 +121,22 @@
designPlan.getFactors().add(factorContinuous2);
designPlan.getFactors().add(factorMatrixContinuous);
designPlan.getFactors().add(factorEquationContinuous);
+
+ return designPlan;
+ }
+
+ /**
+ * Test method {@link MexicoHelper#getDesignPlanAsXML(DesignPlan)}.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testGetDesignPlanAsXML() throws IOException {
+ DesignPlan testDesignPlan = getTestDesignPlan();
+
// test xml export
- String xml = MexicoHelper.getDesignPlanAsXML(designPlan);
+ String xml = MexicoHelper.getDesignPlanAsXML(testDesignPlan);
Assert.assertTrue(xml.indexOf("<factor name=\"factor 2 (double)\"") != -1);
//Assert.assertTrue(xml.indexOf("<range min=\"12.0\" max=\"99.0\" />") != -1);
@@ -134,8 +144,72 @@
if (log.isDebugEnabled()) {
xml = xml.replaceAll(">", ">\n");
- FileUtil.writeString(new File(TestUtils.getTargetdir(),"mexicohelper_factors.xml"), xml);
+ FileUtil.writeString(new File(TestUtils.getTargetdir(),"mexicohelper_designplan.xml"), xml);
log.info("Designplan xml = " + xml);
}
}
+
+ /**
+ * Test method {@link MexicoHelper#getSensitivityScenarionsAsXML(SensitivityScenarios)}.
+ *
+ * @throws IOException
+ * @throws SensitivityException
+ */
+ @Test
+ public void testGetSensitivityScenariosAsXML() throws IOException, SensitivityException {
+
+ DesignPlan testDesignPlan = getTestDesignPlan();
+ SensitivityCalculator testCalculator = new SensitivityCalculatorRandomMock();
+ SensitivityScenarios testScenario = testCalculator.compute(testDesignPlan);
+
+ // test xml export
+ String xml = MexicoHelper.getSensitivityScenarionsAsXML(testScenario);
+
+ //Assert.assertTrue(xml.indexOf("<factor name=\"factor 2 (double)\"") != -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(TestUtils.getTargetdir(),"mexicohelper_scenarios.xml"), xml);
+ log.info("SensitivityScenarios xml = " + xml);
+ }
+ }
+
+ /**
+ * Test method {@link MexicoHelper#getDesignPlanFromXML(String)}.
+ * @throws IOException
+ */
+ @Test
+ public void getDesignPlanFromXML() throws IOException {
+
+ DesignPlan plan = MexicoHelper.getDesignPlanFromXML("src/test/resources/mexico/mexicohelper_designplan.xml");
+
+ Assert.assertEquals(4, plan.getFactors().size());
+ // FIXME should be : Assert.assertEquals(5, plan.getFactors().size());
+
+ String xml = MexicoHelper.getDesignPlanAsXML(plan);
+ xml = xml.replaceAll(">", ">\n");
+ log.info("getDesignPlanFromXML xml = " + xml);
+ }
+
+ /**
+ * Test method {@link MexicoHelper#getSensitivityScenariosFromXML(String)}.
+ * @throws IOException
+ */
+ @Test
+ public void getSensitivityScenariosFromXML() throws IOException {
+
+ SensitivityScenarios scenario = MexicoHelper.getSensitivityScenariosFromXML("src/test/resources/mexico/mexicohelper_scenarios.xml");
+
+ Assert.assertEquals(10, scenario.getScenarios().size());
+ Assert.assertEquals(5, scenario.getScenarios().get(0).getFactors().size());
+ Assert.assertEquals(2, scenario.getScenarios().get(1).getFactors().size());
+ Assert.assertEquals(2, scenario.getScenarios().get(2).getFactors().size());
+ Assert.assertEquals(2, scenario.getScenarios().get(3).getFactors().size());
+
+ String xml = MexicoHelper.getSensitivityScenarionsAsXML(scenario);
+ xml = xml.replaceAll(">", ">\n");
+ log.info("getSensitivityScenariosFromXML xml = " + xml);
+ }
}
Added: isis-fish/trunk/src/test/resources/mexico/mexicohelper_designplan.xml
===================================================================
--- isis-fish/trunk/src/test/resources/mexico/mexicohelper_designplan.xml (rev 0)
+++ isis-fish/trunk/src/test/resources/mexico/mexicohelper_designplan.xml 2009-03-13 16:05:51 UTC (rev 1963)
@@ -0,0 +1,57 @@
+<experimentalDesign>
+ <factors>
+ <factor name="factor 1 (double)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>
+ fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>
+ 3.0</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 3 (discrete matrix)" property="discrete">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <domain>
+ <fixed cardinality="1">
+ <enumeration>
+ <value>test1 matrix2D [
+ 13.0,21.0,12.0,
+ -14.0,2.0,-1.0,]</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 4 (MatrixContinuous)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <domain>
+ <fixed cardinality="0">
+ <range min="1.0" max="2.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 5 (EquationContinuous)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#maxLength</target>
+ <domain>
+ <fixed cardinality="0">
+ <range min="1.0" max="2.0" />
+ </fixed>
+ </domain>
+ </factor>
+ </factors>
+</experimentalDesign>
Added: isis-fish/trunk/src/test/resources/mexico/mexicohelper_scenarios.xml
===================================================================
--- isis-fish/trunk/src/test/resources/mexico/mexicohelper_scenarios.xml (rev 0)
+++ isis-fish/trunk/src/test/resources/mexico/mexicohelper_scenarios.xml 2009-03-13 16:05:51 UTC (rev 1963)
@@ -0,0 +1,319 @@
+<experimentalScenarios>
+ <scenarios>
+ <scenario>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>12.3</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>70.9</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>21.0</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>-12.1</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>-8.45</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 4 (MatrixContinuous)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <value>1.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="1.0" max="2.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 4 (MatrixContinuous)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <value>2.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="1.0" max="2.0" />
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 4 (MatrixContinuous)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <value>1.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="1.0" max="2.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 4 (MatrixContinuous)" property="continuous"
+ type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <value>2.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="1.0" max="2.0" />
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 1 (double)" property="continuous"
+ type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <value>0.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 1 (double)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <value>50.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 1 (double)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <value>0.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 1 (double)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <value>50.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 3 (discrete matrix)" property="discrete">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <value>test1 matrix2D [
+ 13.0,21.0,12.0,
+ -14.0,2.0,-1.0,]</value>
+ <domain>
+ <fixed cardinality="1">
+ <enumeration>
+ <value>test1 matrix2D [
+ 13.0,21.0,12.0,
+ -14.0,2.0,-1.0,]</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 1 (double)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <value>0.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 1 (double)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <value>50.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>12.3</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>
+ 70.9</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>21.0</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>
+ fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>-12.1</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 2 (double)" property="discrete" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength</target>
+ <value>-8.45</value>
+ <domain>
+ <fixed cardinality="5">
+ <enumeration>
+ <value>12.3</value>
+ <value>70.9</value>
+ <value>21.0</value>
+ <value>-12.1</value>
+ <value>-8.45</value>
+ </enumeration>
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 4 (MatrixContinuous)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <value>1.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="1.0" max="2.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 4 (MatrixContinuous)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength</target>
+ <value>2.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="1.0" max="2.0" />
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ <scenario>
+ <factor name="factor 1 (double)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <value>0.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ <factor name="factor 1 (double)" property="continuous" type="real">
+ <target>fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength</target>
+ <value>50.0</value>
+ <domain>
+ <fixed cardinality="0">
+ <range min="0.0" max="50.0" />
+ </fixed>
+ </domain>
+ </factor>
+ </scenario>
+ </scenarios>
+</experimentalScenarios>
1
0
r1962 - isis-fish/trunk/src/main/resources/templates/prescript
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
13 Mar '09
Author: chatellier
Date: 2009-03-13 11:55:40 +0000 (Fri, 13 Mar 2009)
New Revision: 1962
Modified:
isis-fish/trunk/src/main/resources/templates/prescript/factorprescript.ftl
Log:
Update prescript
Modified: isis-fish/trunk/src/main/resources/templates/prescript/factorprescript.ftl
===================================================================
--- isis-fish/trunk/src/main/resources/templates/prescript/factorprescript.ftl 2009-03-13 11:20:11 UTC (rev 1961)
+++ isis-fish/trunk/src/main/resources/templates/prescript/factorprescript.ftl 2009-03-13 11:55:40 UTC (rev 1962)
@@ -29,11 +29,9 @@
context.setValue("K1", 2, "-");
-->
-
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtilsBean;
import fr.ifremer.isisfish.util.ConverterUtil;
-
ConvertUtilsBean beanUtils = ConverterUtil.getConverter(null);
<#list scenario.factors as factor>
1
0
r1961 - isis-fish/trunk/src/test/resources/test-database/exports
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
13 Mar '09
Author: chatellier
Date: 2009-03-13 11:20:11 +0000 (Fri, 13 Mar 2009)
New Revision: 1961
Modified:
isis-fish/trunk/src/test/resources/test-database/exports/RejetsNombre.java
Log:
Fix test compilation
Modified: isis-fish/trunk/src/test/resources/test-database/exports/RejetsNombre.java
===================================================================
--- isis-fish/trunk/src/test/resources/test-database/exports/RejetsNombre.java 2009-03-13 11:17:39 UTC (rev 1960)
+++ isis-fish/trunk/src/test/resources/test-database/exports/RejetsNombre.java 2009-03-13 11:20:11 UTC (rev 1961)
@@ -37,7 +37,7 @@
static private Log log = LogFactory.getLog(RejetsNombre.class);
protected String [] necessaryResult = {
- ResultName.MATRIX_DISCARDS_PER_STR_MET
+ ResultName.MATRIX_DISCARDS_PER_STR_MET_PER_ZONE_POP
};
public String[] getNecessaryResult() {
@@ -61,7 +61,7 @@
for (Population pop : simulation.getParameter().getPopulations()) {
for (Date date = new Date(0); !date.after(lastDate); date = date.next() ) {
- MatrixND mat = simulation.getResultStorage().getMatrix(date, pop, ResultName.MATRIX_DISCARDS_PER_STR_MET);
+ MatrixND mat = simulation.getResultStorage().getMatrix(date, pop, ResultName.MATRIX_DISCARDS_PER_STR_MET_PER_ZONE_POP);
if (mat != null) { // can be null if simulation is stopped before last year simulation
mat = mat.sumOverDim(0); //sum on strategy
for (MatrixIterator i=mat.iterator(); i.hasNext();) {
1
0
13 Mar '09
Author: chatellier
Date: 2009-03-13 11:17:39 +0000 (Fri, 13 Mar 2009)
New Revision: 1960
Modified:
isis-fish/trunk/src/main/resources/log4j.properties
Log:
Add sensitivity log level
Modified: isis-fish/trunk/src/main/resources/log4j.properties
===================================================================
--- isis-fish/trunk/src/main/resources/log4j.properties 2009-03-13 11:16:31 UTC (rev 1959)
+++ isis-fish/trunk/src/main/resources/log4j.properties 2009-03-13 11:17:39 UTC (rev 1960)
@@ -13,4 +13,5 @@
log4j.logger.formules=INFO
log4j.logger.rules=INFO
log4j.logger.scripts=INFO
-log4j.logger.simulators=INFO
\ No newline at end of file
+log4j.logger.sensitivity=INFO
+log4j.logger.simulators=INFO
1
0
r1959 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/simulator/launcher main/resources/templates/ssh test/java/fr/ifremer/isisfish/simulator/launcher
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
13 Mar '09
Author: chatellier
Date: 2009-03-13 11:16:31 +0000 (Fri, 13 Mar 2009)
New Revision: 1959
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq
isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq
isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SshSimulatorLauncherTest.java
Log:
Gere les prescript pour les simulations SSH
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-03-13 09:58:41 UTC (rev 1958)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-03-13 11:16:31 UTC (rev 1959)
@@ -30,6 +30,7 @@
import java.util.Map;
import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codelutin.util.FileUtil;
@@ -76,8 +77,9 @@
protected Configuration freemarkerConfiguration;
/** Freemarker qsub template. */
- protected static final String SQUB_SCRIPT_TEMPLATE = "templates/ssh/launch-isis-qsub.seq";
-
+ protected static final String QSUB_SCRIPT_TEMPLATE = "templates/ssh/launch-isis-qsub.seq";
+ //protected static final String QSUB_SCRIPT_TEMPLATE = "templates/ssh/launch-isis-cron.seq";
+
/**
* Opened session.
* Stored in static context to not reask passphrase
@@ -194,10 +196,13 @@
// build du contenu du script
message(control,
_("isisfish.simulation.remote.message.waitingstart"));
+ String simulationPreScriptPath = uploadPreScriptIfNecessary(sshSession,
+ control.getId(), simulationPrescript);
File simulationScript = getSimulationScriptFile(control.getId(),
- simulationRemotePath);
+ simulationRemotePath, simulationPreScriptPath);
String scriptRemotePath = uploadSimulationScript(sshSession,
simulationScript);
+
addScriptToQsubQueue(sshSession, scriptRemotePath);
} catch (Exception e) {
@@ -561,7 +566,7 @@
String remotePath = IsisFish.config.getSimulatorSshTmpPath();
// remote temp directory should have been created
- // by #downloadResults(Session, String)
+ // by #uploadSimulation(Session, String)
// upload directory in that dir
if (!remotePath.endsWith("/")) {
@@ -580,7 +585,52 @@
return remotePath;
}
+
+ /**
+ * Upload pre script on remote server.
+ *
+ * Return path if uploaded or null if no upload needed.
+ *
+ * @param session valid opened ssh session
+ * @param simulationPreScript script content
+ *
+ * @throws SSHException if upload fail
+ * @throws IOException if upload fail
+ */
+ protected String uploadPreScriptIfNecessary(Session session,
+ String simulationId, String simulationPreScript) throws SSHException, IOException {
+ // if there is no pre script, do nothings
+ if (StringUtils.isEmpty(simulationPreScript)) {
+ return null;
+ }
+
+ File tempPreScriptFile = File.createTempFile("isis-" + simulationId + "-", ".prescript");
+ FileUtil.writeString(tempPreScriptFile, simulationPreScript);
+ String localPath = tempPreScriptFile.getAbsolutePath();
+
+ String remotePath = IsisFish.config.getSimulatorSshTmpPath();
+ // remote temp directory should have been created
+ // by #uploadSimulation(Session, String)
+
+ // upload directory in that dir
+ if (!remotePath.endsWith("/")) {
+ remotePath += "/";
+ }
+
+ if (localPath.lastIndexOf("/") > 0) {
+ remotePath += localPath.substring(localPath.lastIndexOf("/") + 1);
+ } else if (localPath.lastIndexOf("\\") > 0) { // windows
+ remotePath += localPath.substring(localPath.lastIndexOf("\\") + 1);
+ } else {
+ remotePath += localPath;
+ }
+
+ SSHUtils.scpTo(session, tempPreScriptFile, remotePath);
+
+ return remotePath;
+ }
+
/**
* Retourne un fichier temporaire contenant le script de lancement
* de simulation.
@@ -589,23 +639,20 @@
*
* @param simuationId id de la simulation
* @param simulationZip zip de la simulation
+ * @param preScriptPath simulation pre script path (can be null)
*
* @return un Fichier temporaire ou <tt>null</tt> en cas d'exception
*
* @throws IOException if can't build script
*/
protected File getSimulationScriptFile(String simuationId,
- String simulationZip) throws IOException {
+ String simulationZip, String preScriptPath) throws IOException {
File tempScript = File.createTempFile("launch-isis", ".seq");
tempScript.deleteOnExit(); // auto delete
- // uncomment this to test on a cron server
- //String scriptName = "ssh/launch-isis-cron.seq";
- // uncomment this to test on a qsub server
-
String fileContent = getSimulationScriptLaunchContent(
- SQUB_SCRIPT_TEMPLATE, simuationId, simulationZip);
+ QSUB_SCRIPT_TEMPLATE, simuationId, simulationZip, preScriptPath);
FileUtil.writeString(tempScript, fileContent);
return tempScript;
@@ -620,14 +667,21 @@
* @param templateName url du template
* @param simuationId id de la simulation
* @param simulationZip zip de la simulation
+ * @param preScriptPath simulation pre script path (can be null)
*
* @throws IOException if can't get script content
*/
protected String getSimulationScriptLaunchContent(String templateName,
- String simuationId, String simulationZip) throws IOException {
+ String simuationId, String simulationZip, String preScriptPath) throws IOException {
String scriptContent = null;
+ // test null values for prescript
+ String localPreScript = preScriptPath;
+ if (localPreScript == null) {
+ localPreScript = "";
+ }
+
try {
// get template
Template template = freemarkerConfiguration
@@ -638,6 +692,7 @@
root.put("isishome", IsisFish.config.getSimulatorSshIsisHome());
root.put("simulationid", simuationId);
root.put("simulationzip", simulationZip);
+ root.put("simulationprescript", localPreScript);
// process template
Writer out = new StringWriter();
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-03-13 09:58:41 UTC (rev 1958)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationMonitor.java 2009-03-13 11:16:31 UTC (rev 1959)
@@ -50,7 +50,6 @@
import fr.ifremer.isisfish.simulator.launcher.SimulationJob.PostAction;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator;
import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios;
/**
* Moniteur singleton pour pouvoir sauvegarder
Modified: isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq
===================================================================
--- isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq 2009-03-13 09:58:41 UTC (rev 1958)
+++ isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-cron.seq 2009-03-13 11:16:31 UTC (rev 1959)
@@ -1,7 +1,9 @@
#!/bin/bash
cd "${isishome}"
-#source /usr/share/modules/init/csh
-#module load java/1.6.0
+<#if simulationprescript?length > 0>
+java -jar isis-fish*.jar --option launch.ui false --simulateWithSimulationAndScript "${simulationid}" "${simulationzip}" "${simulationprescript}"
+<#else>
java -jar isis-fish*.jar --option launch.ui false --simulateWithSimulation "${simulationid}" "${simulationzip}"
+</#if>
\ No newline at end of file
Modified: isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq
===================================================================
--- isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq 2009-03-13 09:58:41 UTC (rev 1958)
+++ isis-fish/trunk/src/main/resources/templates/ssh/launch-isis-qsub.seq 2009-03-13 11:16:31 UTC (rev 1959)
@@ -6,4 +6,8 @@
source /usr/share/modules/init/csh
module load java/1.6.0
+<#if simulationprescript?length > 0>
+java -jar isis-fish*.jar --option launch.ui false --simulateWithSimulationAndScript "${simulationid}" "${simulationzip}" "${simulationprescript}"
+<#else>
java -jar isis-fish*.jar --option launch.ui false --simulateWithSimulation "${simulationid}" "${simulationzip}"
+</#if>
\ No newline at end of file
Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SshSimulatorLauncherTest.java
===================================================================
--- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SshSimulatorLauncherTest.java 2009-03-13 09:58:41 UTC (rev 1958)
+++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SshSimulatorLauncherTest.java 2009-03-13 11:16:31 UTC (rev 1959)
@@ -22,8 +22,10 @@
import junit.framework.Assert;
+import org.junit.BeforeClass;
import org.junit.Test;
+import fr.ifremer.TestUtils;
import fr.ifremer.isisfish.IsisFish;
import freemarker.template.TemplateException;
@@ -39,6 +41,11 @@
*/
public class SshSimulatorLauncherTest {
+ @BeforeClass
+ public static void init() throws Exception {
+ TestUtils.init();
+ }
+
/**
* Test l'instantiation du script qsub (caparmor).
*
@@ -49,16 +56,18 @@
* @throws TemplateException when freemarker throws it
*/
@Test
- public void testFreemarkerTemplate() throws IOException, TemplateException {
+ public void testFreemarkerTemplateWithScript() throws IOException,
+ TemplateException {
final String SIMULATIONID = "testid";
final String SIMULATIONZIP = "test.zip";
+ final String SIMULATIONPRESCRIPT = "prescript-1234567890.txt";
final String ISISHOME = IsisFish.config.getSimulatorSshIsisHome();
SSHSimulatorLauncher launcher = new SSHSimulatorLauncher();
String content = launcher.getSimulationScriptLaunchContent(
- SSHSimulatorLauncher.SQUB_SCRIPT_TEMPLATE, SIMULATIONID,
- SIMULATIONZIP);
+ SSHSimulatorLauncher.QSUB_SCRIPT_TEMPLATE, SIMULATIONID,
+ SIMULATIONZIP, SIMULATIONPRESCRIPT);
// simulation parameters
Assert.assertTrue("String \"" + SIMULATIONID
@@ -67,9 +76,74 @@
Assert.assertTrue("String \"" + SIMULATIONZIP
+ "\" not found in template",
content.indexOf(SIMULATIONZIP) > 0);
+ Assert.assertTrue("String \"" + SIMULATIONPRESCRIPT
+ + "\" not found in template", content
+ .indexOf(SIMULATIONPRESCRIPT) > 0);
+ Assert.assertTrue(
+ "Action --simulateWithSimulationAndScript not on script",
+ content.indexOf(" --simulateWithSimulationAndScript ") > 0);
// isis location
Assert.assertTrue("String \"" + ISISHOME + "\" not found in template",
content.indexOf(ISISHOME) > 0);
}
+
+ /**
+ * Test l'instantiation du script qsub (caparmor).
+ *
+ * Test sans script de pre simu.
+ *
+ * Le script contient une variable $simulation qui
+ * doit être remplacée.
+ *
+ * @throws IOException when freemarker throws it
+ * @throws TemplateException when freemarker throws it
+ */
+ @Test
+ public void testFreemarkerTemplateWithoutScript() throws IOException,
+ TemplateException {
+
+ final String SIMULATIONID = "testid";
+ final String SIMULATIONZIP = "test.zip";
+ final String SIMULATIONPRESCRIPT = null;
+ final String ISISHOME = IsisFish.config.getSimulatorSshIsisHome();
+
+ SSHSimulatorLauncher launcher = new SSHSimulatorLauncher();
+ String content = launcher.getSimulationScriptLaunchContent(
+ SSHSimulatorLauncher.QSUB_SCRIPT_TEMPLATE, SIMULATIONID,
+ SIMULATIONZIP, SIMULATIONPRESCRIPT);
+
+ // simulation parameters
+ Assert.assertTrue("String \"" + SIMULATIONID
+ + "\" not found in template", content
+ .indexOf(SIMULATIONID) > 0);
+ Assert.assertTrue("String \"" + SIMULATIONZIP
+ + "\" not found in template",
+ content.indexOf(SIMULATIONZIP) > 0);
+ Assert.assertTrue("Action --simulateWithSimulation not on script",
+ content.indexOf(" --simulateWithSimulation ") > 0);
+
+ // isis location
+ Assert.assertTrue("String \"" + ISISHOME + "\" not found in template",
+ content.indexOf(ISISHOME) > 0);
+ }
+
+ /**
+ * Pour tester, un autre script est present, mais
+ * celui ci ne doit jamais être utilisé hors des tests.
+ *
+ * Test que le script contient "!/bin/csh".
+ * @throws IOException
+ */
+ @Test
+ public void testValidQsubScript() throws IOException {
+ SSHSimulatorLauncher launcher = new SSHSimulatorLauncher();
+ String content = launcher.getSimulationScriptLaunchContent(
+ SSHSimulatorLauncher.QSUB_SCRIPT_TEMPLATE, "",
+ "", "");
+
+ // simulation parameters
+ Assert.assertTrue("Invalid qsub script is used", content
+ .indexOf("!/bin/csh") > 0);
+ }
}
\ No newline at end of file
1
0
r1958 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: . actions simulator/launcher
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
13 Mar '09
Author: chatellier
Date: 2009-03-13 09:58:41 +0000 (Fri, 13 Mar 2009)
New Revision: 1958
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
Log:
Add simulationWithSimulationAndScript action.
Fix subprocess launcher.
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-03-13 09:02:57 UTC (rev 1957)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/IsisConfig.java 2009-03-13 09:58:41 UTC (rev 1958)
@@ -782,6 +782,7 @@
SIMULATE_WITH_REGION(_(""), SimulationAction.class.getName() + "#simulateWithRegion", "--simulateWithRegion"),
SIMULATE_WITH_SIMULATION(_(""), SimulationAction.class.getName() + "#simulateWithSimulation", "--simulateWithSimulation"),
+ SIMULATE_WITH_SIMULATION_AND_SCRIPT(_(""), SimulationAction.class.getName() + "#simulateWithSimulationAndScript", "--simulateWithSimulationAndScript"),
;
public String description;
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-03-13 09:02:57 UTC (rev 1957)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/SimulationAction.java 2009-03-13 09:58:41 UTC (rev 1958)
@@ -27,6 +27,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.FileUtil;
import fr.ifremer.isisfish.IsisConfig;
import fr.ifremer.isisfish.IsisFish;
@@ -103,7 +104,7 @@
public static void simulateWithSimulation(String simulationId, File simulationZip)
throws Exception {
// just call with null pre script
- simulateWithSimulation(simulationId, simulationZip, null);
+ simulateWithSimulationAndScript(simulationId, simulationZip, null);
}
/**
@@ -115,7 +116,7 @@
* @param simulationPrescript simulation prescript
* @throws Exception
*/
- public static void simulateWithSimulation(String simulationId, File simulationZip, String simulationPrescript)
+ public static void simulateWithSimulationAndScript(String simulationId, File simulationZip, File simulationPrescript)
throws Exception {
if (log.isInfoEnabled()) {
@@ -135,8 +136,11 @@
//SimulationStorage simulation = launcher.simulate(null, control, simulationZip);
//simulation.getStorage().closeContext();
- // FIXME simulation prescript to get from parameters !!!
- launcher.simulate(null, control, simulationZip, null);
+ String simulationPrescriptContent = null;
+ if (simulationPrescript != null && simulationPrescript.canRead()) {
+ simulationPrescriptContent = FileUtil.readAsString(simulationPrescript);
+ }
+ launcher.simulate(null, control, simulationZip, simulationPrescriptContent);
SimulationStorage simulation = launcher.getSimulationStorage(SimulationService.getService(), control);
simulation.getStorage().closeContext();
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-03-13 09:02:57 UTC (rev 1957)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SubProcessSimulationLauncher.java 2009-03-13 09:58:41 UTC (rev 1958)
@@ -30,8 +30,10 @@
import java.net.URLClassLoader;
import java.net.URL;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.codelutin.util.FileUtil;
import fr.ifremer.isisfish.IsisFish;
import fr.ifremer.isisfish.datastore.SimulationStorage;
@@ -71,7 +73,7 @@
try {
// simulation = SimulationStorage.importAndRenameZip(
// simulationZip, simulationId);
- simulation = subProcessSimulate(control, simulationZip);
+ simulation = subProcessSimulate(control, simulationZip, simulationPrescript);
} catch (Exception eee) {
if (log.isErrorEnabled()) {
log.error(_("Can't do simulation %s", simulationId), eee);
@@ -123,7 +125,7 @@
}
public SimulationStorage subProcessSimulate(SimulationControl control,
- File simulationZip) throws Exception {
+ File simulationZip, String simulationPrescript) throws Exception {
message(control, _("isisfish.message.simulation.prepare"));
@@ -131,6 +133,14 @@
// on ferme le SimulationStorage pour ne pas interferer avec le process
//simulation.closeStorage();
+ // write prescript in a temporary file
+ File tempPrescriptFile = null;
+ if (!StringUtils.isEmpty(simulationPrescript)) {
+ tempPrescriptFile = File.createTempFile("isis", ".prescript");
+ tempPrescriptFile.deleteOnExit();
+ FileUtil.writeString(tempPrescriptFile, simulationPrescript);
+ }
+
String java = System.getProperty("java.home") + File.separator + "bin"
+ File.separator + "java";
String classpath = System.getProperty("java.class.path");
@@ -155,10 +165,19 @@
log.debug("classpath to use : " + classpath);
}
// prepare le process
- ProcessBuilder processBuilder = new ProcessBuilder(java, "-classpath",
+ ProcessBuilder processBuilder = null;
+ if (tempPrescriptFile != null) {
+ processBuilder = new ProcessBuilder(java, "-classpath",
classpath, IsisFish.class.getName(), "--option", "launch.ui",
+ "false", "--simulateWithSimulationAndScript", simulationId,
+ simulationZip.getAbsolutePath(), tempPrescriptFile.getAbsolutePath());
+ }
+ else {
+ processBuilder = new ProcessBuilder(java, "-classpath",
+ classpath, IsisFish.class.getName(), "--option", "launch.ui",
"false", "--simulateWithSimulation", simulationId,
simulationZip.getAbsolutePath());
+ }
processBuilder.redirectErrorStream(true);
// demarrage du process
1
0
r1957 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator: . launcher
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
by chatellier@users.labs.libre-entreprise.org 13 Mar '09
13 Mar '09
Author: chatellier
Date: 2009-03-13 09:02:57 +0000 (Fri, 13 Mar 2009)
New Revision: 1957
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
Log:
Temp fix for sensitivity export names
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-03-13 08:56:41 UTC (rev 1956)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2009-03-13 09:02:57 UTC (rev 1957)
@@ -290,7 +290,7 @@
}
// number of sensitivity simulation
String sensitivityExportList = "";
- for (String export : getExportNames()) {
+ for (String export : getSensitivityExportNames()) {
sensitivityExportList += export + ",";
}
result.setProperty("sensitivityexports", sensitivityExportList);
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-03-13 08:56:41 UTC (rev 1956)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2009-03-13 09:02:57 UTC (rev 1957)
@@ -63,6 +63,8 @@
import fr.ifremer.isisfish.datastore.ScriptStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.datastore.SimulatorStorage;
+import fr.ifremer.isisfish.export.Export;
+import fr.ifremer.isisfish.export.SensitivityExport;
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.simulator.AnalysePlan;
import fr.ifremer.isisfish.simulator.AnalysePlanContext;
@@ -405,6 +407,17 @@
param.setSensitivityCalculator(sensitivitycalculator);
param.setNumberOfSensitivitySimulation(sensitivityScenarios.getScenarios().size());
+ // FIXME to remove when available in UI
+ List<String> names = ExportStorage.getExportNames();
+ List<String> ASName = new ArrayList<String>();
+ for (String name : names) {
+ Export export = ExportStorage.getExport(name).getNewExportInstance();
+ if (export instanceof SensitivityExport) {
+ ASName.add(name);
+ }
+ }
+ param.setSensitivityExportNames(ASName);
+
// on l'ajoute tout de suite a la liste des simulations demandee
// init with default "id" must been changed for designPlan
// simulation
1
0
13 Mar '09
Author: bpoussin
Date: 2009-03-13 08:56:41 +0000 (Fri, 13 Mar 2009)
New Revision: 1956
Modified:
isis-fish/trunk/src/main/resources/sensitivity.properties
Log:
modification sur StrategyMonthInfo des facteurs possibles
Modified: isis-fish/trunk/src/main/resources/sensitivity.properties
===================================================================
--- isis-fish/trunk/src/main/resources/sensitivity.properties 2009-03-13 08:39:04 UTC (rev 1955)
+++ isis-fish/trunk/src/main/resources/sensitivity.properties 2009-03-13 08:56:41 UTC (rev 1956)
@@ -64,7 +64,7 @@
Species.AgeGroupType
Species.AgeGroupType
Species.Comment
-StrategyMonthInfo.NumberOfTrips
+StrategyMonthInfo.MinInactivityDays
StrategyMonthInfo.ProportionMetier
Strategy.Name
Strategy.ProportionSetOfVessels
1
0
r1955 - isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities
by bpoussin@users.labs.libre-entreprise.org 13 Mar '09
by bpoussin@users.labs.libre-entreprise.org 13 Mar '09
13 Mar '09
Author: bpoussin
Date: 2009-03-13 08:39:04 +0000 (Fri, 13 Mar 2009)
New Revision: 1955
Modified:
isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
Log:
modification de la valeur par default (1 au lieu de 0) pour TechnicalEfficiency
Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java
===================================================================
--- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2009-03-13 08:33:52 UTC (rev 1954)
+++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/entities/SetOfVesselsImpl.java 2009-03-13 08:39:04 UTC (rev 1955)
@@ -57,7 +57,7 @@
*/
@Override
public double getTechnicalEfficiency(Date date, Metier metier) {
- double result = 0;
+ double result = 1;
try {
Gear gear = metier.getGear();
1
0