Author: echatellier Date: 2012-03-19 17:12:45 +0100 (Mon, 19 Mar 2012) New Revision: 3661 Url: http://forge.codelutin.com/repositories/revision/isis-fish/3661 Log: Fix v3 import/export test Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java 2012-03-19 15:41:02 UTC (rev 3660) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/ContinuousDomainXMLVisitor.java 2012-03-19 16:12:45 UTC (rev 3661) @@ -71,7 +71,7 @@ xmlBuffer.append(" type=\"matrix\">"); xmlBuffer.append(MexicoHelper.getMatrixAsXML((MatrixND)value)); } else { - xmlBuffer.append(" type=\"double\">"); + xmlBuffer.append(" type=\"decimal\">"); xmlBuffer.append(value.toString()); } } Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java 2012-03-19 15:41:02 UTC (rev 3660) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DiscreteDomainXMLVisitor.java 2012-03-19 16:12:45 UTC (rev 3661) @@ -46,7 +46,7 @@ public void start(Domain domain) { // lorsque le facteur est catégoriel, la liste de ses niveaux, par une // liste ouverte d'éléments 'level', d'attributs 'value' et 'weight') - xmlBuffer.append("<domain distributionName=\"categorical\" type=\"todo\">"); + xmlBuffer.append("<domain distributionName=\"categorical\" type=\"discretetruc\">"); } /** Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2012-03-19 15:41:02 UTC (rev 3660) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/mexico/xml/DomXMLParser.java 2012-03-19 16:12:45 UTC (rev 3661) @@ -41,6 +41,7 @@ import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; import fr.ifremer.isisfish.simulator.sensitivity.Distribution; +import fr.ifremer.isisfish.simulator.sensitivity.Distribution.DistributionParam; import fr.ifremer.isisfish.simulator.sensitivity.Domain; import fr.ifremer.isisfish.simulator.sensitivity.Factor; import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup; @@ -612,6 +613,10 @@ if (groupTypeElement != null) { groupType = groupTypeElement.getTextTrim(); } + Element varNameElement = (Element)factorElement.selectSingleNode("child::feature[@name='equationVariableName']"); + if (varNameElement != null) { + factor.setEquationVariableName(varNameElement.getTextTrim()); + } // parse domain @@ -621,27 +626,36 @@ // facteur discret if ("categorical".equals(distributionName)) { - DiscreteDomain domain = new DiscreteDomain(); + DiscreteDomain domain; List<Element> levelElements = domainElement.elements("level"); if ("rule".equals(type)) { - int label = 0; + domain = new RuleDiscreteDomain(); for (Element levelElement : levelElements) { + String levelName = levelElement.attributeValue("name"); Element rulesElement = levelElement.element("rules"); List<Rule> rulesValue = MexicoHelper.getRulesFromXml(rulesElement, topiaContext); - domain.getValues().put(label, rulesValue); - ++label; + domain.getValues().put(levelName, rulesValue); } } else if ("string".equals(type)) { // topia entities ... + domain = new DiscreteDomain(); for (Element levelElement : levelElements) { String levelName = levelElement.attributeValue("name"); Object object = MexicoHelper.getObjectFromString(levelElement.getTextTrim(), topiaContext); domain.getValues().put(levelName, object); } + } else if ("integer".equals(type)) { + domain = new DiscreteDomain(); + for (Element levelElement : levelElements) { + String levelName = levelElement.attributeValue("name"); + Integer levelValue = Integer.valueOf(levelElement.getTextTrim()); + domain.getValues().put(levelName, levelValue); + } } else { + domain = new DiscreteDomain(); for (Element levelElement : levelElements) { String levelName = levelElement.attributeValue("name"); - Double levelValue = Double.parseDouble(levelElement.getTextTrim()); + Double levelValue = Double.valueOf(levelElement.getTextTrim()); domain.getValues().put(levelName, levelValue); } } @@ -667,8 +681,11 @@ ContinuousDomain domain = new ContinuousDomain(distribution); - List<Element> paramElements = domainElement.elements("distributionParameter"); - for (Element paramElement : paramElements) { + // ne tient pas compte de l'ordre des parametres + // dans le fichier xml + DistributionParam[] paramsDef = distribution.getDistibutionParams(); + for (DistributionParam paramDef : paramsDef) { + Element paramElement = (Element)domainElement.selectSingleNode("distributionParameter[@name='" + paramDef.getName() + "']"); String paramName = paramElement.attributeValue("name"); String paramType = paramElement.attributeValue("type");