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
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>
participants (1)
-
chatellier@users.labs.libre-entreprise.org