|
From: <de...@us...> - 2010-01-29 00:09:53
|
Revision: 5655
http://fudaa.svn.sourceforge.net/fudaa/?rev=5655&view=rev
Author: deniger
Date: 2010-01-29 00:09:41 +0000 (Fri, 29 Jan 2010)
Log Message:
-----------
Modified Paths:
--------------
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/ConvertCompare.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/ExecuteCompareActionOnObject.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/FactoryEqualsTester.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterDPTG.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterETU.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterORES.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueDaoStructureETU.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueDaoStructureORES.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/CrueIODico.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DCFileReader.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBReader.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBSequentialReader.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBValueObject.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/STOReader.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/STRFactory.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/STRSequentialReader.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/EMHProjet.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/EMHRun.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/ManagerEMHScenario.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/CatEMHCasier.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/CatEMHSection.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/EMH.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/EMHScenario.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/ElemSeuil.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/EnumInfosEMH.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/EvolutionFF.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdResSectionProfil.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/ResPrtReseau.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/helper/EMHHelper.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/projet/ScenarioExporterCrue9.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoaderCrue9.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/validation/ValidateEMHProperties.java
trunk/soft/fudaa-crue/dodico/src/main/resources/default.ores.xml
trunk/soft/fudaa-crue/dodico/src/main/resources/org/fudaa/dodico/crue/common/commonMessages.properties
trunk/soft/fudaa-crue/dodico/src/main/resources/org/fudaa/dodico/crue/comparaison/common/comparaisonMessages.properties
trunk/soft/fudaa-crue/dodico/src/main/resources/org/fudaa/dodico/crue/comparaison/io/default-comparaison.xml
trunk/soft/fudaa-crue/dodico/src/main/resources/org/fudaa/dodico/crue/io/ioMessages.properties
trunk/soft/fudaa-crue/dodico/src/main/resources/xsd/frag-ores-1.0.0.xsd
trunk/soft/fudaa-crue/dodico/src/test/java/org/fudaa/dodico/crue/io/TestCrueSTO.java
trunk/soft/fudaa-crue/dodico/src/test/java/org/fudaa/dodico/crue/io/TestCrueSTR.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/builder/CrueModeleBuilder.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/builder/EMHGeneralBuilder.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/common/CrueCommonImplementation.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/common/CrueEditorImplementation.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/common/UserPreferencesSaver.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/explorer/CrueLauncher.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/projet/CrueProjet.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/view/CrueFicheScenario.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/view/CrueFilleEMH.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/view/CrueFilleInfosGenerales.java
trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/view/CrueFilleScenarioManager.java
Added Paths:
-----------
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/common/DoubleComparator.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/EqualsTesterResultatCalcul.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/EqualsTesterResultatPasDeTemps.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/ResPrtReseauCrue9Adapter.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/AbstractResPrtGeoCasierContainer.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/AbstractResPrtGeoSectionContainer.java
Removed Paths:
-------------
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/Crue9ResPrtAdapter.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/ResPrtGeoCasierContainer.java
trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/ResPrtGeoSectionContainer.java
Added: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/common/DoubleComparator.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/common/DoubleComparator.java (rev 0)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/common/DoubleComparator.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -0,0 +1,32 @@
+/**
+ *
+ */
+package org.fudaa.dodico.crue.common;
+
+import java.util.Comparator;
+
+/**
+ * @author deniger
+ */
+public class DoubleComparator implements Comparator<Double> {
+
+ private final double epsPdt;
+
+ /**
+ * @param epsPdt
+ */
+ public DoubleComparator(double epsPdt) {
+ super();
+ this.epsPdt = epsPdt;
+ }
+
+ public int compare(Double o1, Double o2) {
+ if (o1 == o2) { return 0; }
+ if (o1 == null) { return -1; }
+ if (o2 == null) { return 1; }
+ double eps = o1.doubleValue() - o2.doubleValue();
+ if (Math.abs(eps) < epsPdt) { return 0; }
+ return eps > 0 ? 1 : -1;
+ }
+
+}
\ No newline at end of file
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/ConvertCompare.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/ConvertCompare.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/ConvertCompare.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -7,11 +7,12 @@
import org.fudaa.dodico.crue.comparaison.config.ConfCompare;
import org.fudaa.dodico.crue.comparaison.config.ConfCompareListe;
import org.fudaa.dodico.crue.comparaison.config.ConfCompareObject;
-import org.fudaa.dodico.crue.comparaison.tester.*;
+import org.fudaa.dodico.crue.comparaison.tester.EqualsTesterBean;
+import org.fudaa.dodico.crue.comparaison.tester.EqualsTesterIsIncludeCollection;
+import org.fudaa.dodico.crue.comparaison.tester.FactoryEqualsTester;
/**
* @author deniger
- *
*/
public class ConvertCompare {
@@ -40,13 +41,14 @@
final Class inClass = in.getClass();
if (ConfCompareObject.class.equals(inClass)) {
final ConfCompareObject inObject = (ConfCompareObject) in;
+
final EqualsTesterBean res = new EqualsTesterBean(factory);
res.getContextFactory().setMaxDeep(inObject.getDeep());
res.setPropToCompare(inObject.getAttributs());
if (CollectionUtils.isNotEmpty(inObject.getOptions())) {
analyze.addWarn("options.notManaged.forCompareObject");
}
- return new ExecuteCompareActionOnObject(res);
+ return new ExecuteCompareActionOnObject(res, factory);
} else if (ConfCompareListe.class.equals(inClass)) {
final ConfCompareListe inObject = (ConfCompareListe) in;
final EqualsTesterIsIncludeCollection res = new EqualsTesterIsIncludeCollection(inObject.getAttribut(), inObject
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/ExecuteCompareActionOnObject.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/ExecuteCompareActionOnObject.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/ExecuteCompareActionOnObject.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -8,14 +8,22 @@
import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.dodico.crue.comparaison.tester.EqualsTester;
import org.fudaa.dodico.crue.comparaison.tester.EqualsTesterCollection;
+import org.fudaa.dodico.crue.comparaison.tester.FactoryEqualsTester;
import org.fudaa.dodico.crue.comparaison.tester.ResultatTest;
import org.fudaa.dodico.crue.comparaison.tester.TesterContext;
public class ExecuteCompareActionOnObject implements CompareActionBuilder {
final EqualsTester tester;
+ final FactoryEqualsTester factory;
- public ExecuteCompareActionOnObject(EqualsTester tester) {
+ /**
+ * @param tester
+ * @param factory
+ */
+ public ExecuteCompareActionOnObject(EqualsTester tester, FactoryEqualsTester factory) {
+ super();
this.tester = tester;
+ this.factory = factory;
}
public boolean launch(ComparaisonNodeFinal target, ResultatTest parent, CtuluAnalyze collector) {
@@ -43,7 +51,15 @@
for (int i = 0; i < size; i++) {
TesterContext create = tester.getContextFactory().create();
create.setError(collector);
- res = res & tester.isSame(a.get(i), b.get(i), parent, create);
+ EqualsTester toUse = tester;
+ EqualsTester other = factory.getMainKnownTester(a.get(i));
+ if (other == null) {
+ other = factory.getMainKnownTester(b.get(i));
+ }
+ if (other != null) {
+ toUse = other;
+ }
+ res = res & toUse.isSame(a.get(i), b.get(i), parent, create);
}
} catch (Exception e) {
collector.manageException(e);
Added: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/EqualsTesterResultatCalcul.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/EqualsTesterResultatCalcul.java (rev 0)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/EqualsTesterResultatCalcul.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -0,0 +1,72 @@
+package org.fudaa.dodico.crue.comparaison.tester;
+
+import java.util.TreeMap;
+
+import org.fudaa.dodico.crue.common.DoubleComparator;
+import org.fudaa.dodico.crue.io.neuf.FCBSequentialReader.ResultatCalcul;
+import org.fudaa.dodico.crue.io.neuf.FCBSequentialReader.ResultatCalculPasDeTemps;
+import org.fudaa.dodico.crue.io.neuf.FCBValueObject.AbstractRes;
+
+/**
+ * @author denf01a
+ * @creation 22 juin 2009
+ * @version
+ */
+public class EqualsTesterResultatCalcul extends AbstractEqualsTester<ResultatCalcul> {
+
+ private final double epsPdt;
+ final EqualsTesterBean beanTester;
+
+ /**
+ * @param epsPdt
+ */
+ public EqualsTesterResultatCalcul(final double epsPdt, EqualsTesterBean beanTester) {
+ super();
+ this.epsPdt = epsPdt;
+ this.beanTester = beanTester;
+ }
+
+ @Override
+ protected boolean mustTestAlreadyDone() {
+ return false;
+ }
+
+ @Override
+ public boolean isSameSafe(final ResultatCalcul o1, final ResultatCalcul o2, final ResultatTest res,
+ final TesterContext context) {
+ boolean bool = true;
+ DoubleComparator cmp = new DoubleComparator(epsPdt);
+ TreeMap<Double, Integer> positionIn2 = new TreeMap<Double, Integer>(cmp);
+ ResultatCalculPasDeTemps pasDeTemps = o2.getPasDeTemps();
+ int nbPdt2 = pasDeTemps.getNbPdt();
+ for (int i = 0; i < nbPdt2; i++) {
+ positionIn2.put(pasDeTemps.getPdt(i), i);
+ }
+ int nbPdt1 = o1.getPasDeTemps().getNbPdt();
+ for (int i = 0; i < nbPdt1; i++) {
+ double pdt = o1.getPasDeTemps().getPdt(i);
+ Integer posFound = positionIn2.get(pdt);
+ if (posFound != null) {
+ res.incrementeObjectTested();
+ int pos1 = i;
+ int pos2 = posFound.intValue();
+ try {
+ AbstractRes read1 = o1.read(pos1);
+ AbstractRes read2 = o2.read(pos2);
+ ResultatTest resLocal = new ResultatTest("", "", "compare.resultat.diff", pdt);
+ if (!beanTester.isSame(read1, read2, resLocal, context)) {
+ res.addDiff(resLocal);
+ }
+
+ } catch (Exception e) {
+ context.addError(e.getMessage(), e);
+ }
+
+ }
+ }
+
+ return bool;
+ // return abs.isSameDouble(o1.getAbscisse(), o2.getAbscisse()) && ord.isSameDouble(o1.getOrdonnee(),
+ // o2.getOrdonnee());
+ }
+}
Added: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/EqualsTesterResultatPasDeTemps.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/EqualsTesterResultatPasDeTemps.java (rev 0)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/EqualsTesterResultatPasDeTemps.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -0,0 +1,113 @@
+package org.fudaa.dodico.crue.comparaison.tester;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import org.apache.commons.lang.StringUtils;
+import org.fudaa.dodico.crue.common.DoubleComparator;
+import org.fudaa.dodico.crue.io.neuf.FCBSequentialReader.ResultatCalculPasDeTemps;
+
+/**
+ * @author denf01a
+ * @creation 22 juin 2009
+ * @version
+ */
+public class EqualsTesterResultatPasDeTemps extends AbstractEqualsTester<ResultatCalculPasDeTemps> {
+
+ private final double epsPdt;
+ final EqualsTesterDouble ruinouTester;
+
+ /**
+ * @param epsPdt
+ */
+ public EqualsTesterResultatPasDeTemps(final double epsPdt, final EqualsTesterDouble ruinouTester) {
+ super();
+ this.epsPdt = epsPdt;
+ this.ruinouTester = ruinouTester;
+ }
+
+ @Override
+ protected boolean mustTestAlreadyDone() {
+ return false;
+ }
+
+ @Override
+ public boolean isSameSafe(final ResultatCalculPasDeTemps o1, final ResultatCalculPasDeTemps o2,
+ final ResultatTest res, final TesterContext context) {
+ boolean bool = true;
+ if (o1.getNbPdt() != o2.getNbPdt()) {
+ res.addDiff(new ResultatTest(o1.getNbPdt(), o2.getNbPdt(), "compare.nbPdt.diff"));
+ bool = false;
+ }
+ DoubleComparator cmp = new DoubleComparator(epsPdt);
+ TreeMap<Double, Integer> pdtIn1 = new TreeMap<Double, Integer>(cmp);
+ TreeSet<Double> pdtIn2 = new TreeSet<Double>(cmp);
+ int nbPdt1 = o1.getNbPdt();
+ int nbPdt2 = o2.getNbPdt();
+ for (int i = 0; i < nbPdt1; i++) {
+ pdtIn1.put(Double.valueOf(o1.getPdt(i)), Integer.valueOf(i));
+ }
+ for (int i = 0; i < nbPdt2; i++) {
+ pdtIn2.add(o2.getPdt(i));
+ }
+ List<String> pdtContainedBy2AndNotBy1 = new ArrayList<String>();
+ List<String> pdtContainedBy1AndNotBy2 = new ArrayList<String>();
+ for (Double pdt : pdtIn2) {
+ if (!pdtIn1.containsKey(pdt)) {
+ pdtContainedBy2AndNotBy1.add(Double.toString(pdt));
+ }
+ }
+ for (Double pdt : pdtIn1.keySet()) {
+ if (!pdtIn2.contains(pdt)) {
+ pdtContainedBy1AndNotBy2.add(Double.toString(pdt));
+ }
+ }
+
+ if (pdtContainedBy1AndNotBy2.size() > 0) {
+ bool = false;
+ res.addDiff(new ResultatTest(StringUtils.join(pdtContainedBy1AndNotBy2, ", "), StringUtils.EMPTY,
+ "compare.pdt.inA.diff"));
+
+ }
+ if (pdtContainedBy2AndNotBy1.size() > 0) {
+ bool = false;
+ res.addDiff(new ResultatTest(StringUtils.join(pdtContainedBy2AndNotBy1, ", "), StringUtils.EMPTY,
+ "compare.pdt.inB.diff"));
+ }
+ List<String> pdtWithDifferentRegul = new ArrayList<String>();
+ List<String> pdtWithDifferentRuinou = new ArrayList<String>();
+ for (int i = 0; i < nbPdt2; i++) {
+ double pdt = o2.getPdt(i);
+ Integer pos = pdtIn1.get(Double.valueOf(pdt));
+ if (pos != null) {
+ int pos1 = pos.intValue();
+ int pos2 = i;
+ boolean isRegu2 = o2.isRegulation(pos2);
+ boolean isRegu1 = o1.isRegulation(pos1);
+ if (isRegu1 != isRegu2) {
+ pdtWithDifferentRegul.add(Double.toString(pdt));
+ } else if (!isRegu1) {
+ double rui1 = o1.getRuinou(pos1);
+ double rui2 = o2.getRuinou(pos2);
+ if (!ruinouTester.isSameDouble(rui1, rui2)) {
+ pdtWithDifferentRuinou.add(Double.toString(pdt));
+ }
+ }
+ }
+ }
+ if (pdtWithDifferentRegul.size() > 0) {
+ res.addDiff(new ResultatTest(StringUtils.EMPTY, StringUtils.join(pdtWithDifferentRegul, ", "),
+ "compare.pdt.withDifferentRegu"));
+ }
+ if (pdtWithDifferentRuinou.size() > 0) {
+ res.addDiff(new ResultatTest(StringUtils.EMPTY, StringUtils.join(pdtWithDifferentRuinou, ", "),
+ "compare.pdt.withDifferentRuinou"));
+ }
+
+ return bool;
+ // return abs.isSameDouble(o1.getAbscisse(), o2.getAbscisse()) && ord.isSameDouble(o1.getOrdonnee(),
+ // o2.getOrdonnee());
+ }
+}
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/FactoryEqualsTester.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/FactoryEqualsTester.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/comparaison/tester/FactoryEqualsTester.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -4,6 +4,8 @@
import java.util.HashMap;
import java.util.Map;
+import org.fudaa.dodico.crue.io.neuf.FCBSequentialReader.ResultatCalcul;
+import org.fudaa.dodico.crue.io.neuf.FCBSequentialReader.ResultatCalculPasDeTemps;
import org.fudaa.dodico.crue.metier.emh.DonPrtGeoProfilSectionFenteData;
import org.fudaa.dodico.crue.metier.emh.LoiDF;
import org.fudaa.dodico.crue.metier.emh.LoiFF;
@@ -25,6 +27,7 @@
private final Map<Class, EqualsTesterItemBuilder> knownTesterBuilder;
private final Map<Class, EqualsTester> knownTester;
+ private final Map<Class, EqualsTester> mainKnownTester;
protected static final EqualsTesterObject BASIC_OBJECT_TESTER = new EqualsTesterObject();
@@ -36,6 +39,8 @@
this.propEps = propEps;
knownTesterBuilder = new HashMap<Class, EqualsTesterItemBuilder>();
knownTester = createKnownEqualsTester(this);
+ mainKnownTester = createMainKnownEqualsTester(this);
+ knownTester.putAll(mainKnownTester);
EqualsTesterItemBuilder.addDefault(knownTesterBuilder);
}
@@ -53,9 +58,28 @@
final EqualsTesterFente fente = new EqualsTesterFente(new EqualsTesterDouble(factory.getEpsFor("largeurFente")),
new EqualsTesterDouble(factory.getEpsFor("profondeurFente")));
res.put(DonPrtGeoProfilSectionFenteData.class, fente);
+ res.put(ResultatCalculPasDeTemps.class, new EqualsTesterResultatPasDeTemps(factory.getEpsFor("pdt"),
+ new EqualsTesterDouble(factory.getEpsFor("qruis"))));
+ res.put(ResultatCalcul.class, new EqualsTesterResultatCalcul(factory.getEpsFor("pdt"),
+ new EqualsTesterBean(factory)));
return res;
}
+ private static Map<Class, EqualsTester> createMainKnownEqualsTester(final FactoryEqualsTester factory) {
+ final Map<Class, EqualsTester> res = new HashMap<Class, EqualsTester>();
+ res.put(ResultatCalculPasDeTemps.class, new EqualsTesterResultatPasDeTemps(factory.getEpsFor("pdt"),
+ new EqualsTesterDouble(factory.getEpsFor("qruis"))));
+ res.put(ResultatCalcul.class, new EqualsTesterResultatCalcul(factory.getEpsFor("pdt"),
+ new EqualsTesterBean(factory)));
+ return res;
+ }
+
+ public EqualsTester getMainKnownTester(Object o) {
+ if (o == null) { return null; }
+ return mainKnownTester.get(o.getClass());
+
+ }
+
/**
* @param id l'identifiant du parametre
* @return l'epsilon cherche
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterDPTG.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterDPTG.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterDPTG.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -354,7 +354,7 @@
final CtuluAnalyze analyser) {
if (listePersistante == null || listePersistante.size() == 0) {
- analyser.addInfo("io.dptg.convert.noDataForProfil.error");
+ analyser.addInfo("io.dptg.convert.noDataForProfilCasier.error");
return;
}
for (final CrueDaoStructureDPTG.AbstractCasier casier : listePersistante) {
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterETU.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterETU.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterETU.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -221,7 +221,7 @@
// -- recherche du run courant si spécifié --//
if (scenarPersist.RunCourant != null && newScenar.existRunInScenario(scenarPersist.RunCourant.NomRef)) {
- final EMHRun runReference = newScenar.getRunFromScenar(scenarPersist.RunCourant.NomRef);
+ final EMHRun runReference = newScenar.getRunFromScenar(scenarPersist.RunCourant.NomRef.trim());
// -- gestion du run courant --//
newScenar.setRunCourant(runReference);
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterORES.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterORES.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterORES.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -78,7 +78,7 @@
eltMetier.setDdeVact(eltPersistCaste.DdeVact);
eltMetier.setDdeVtot(eltPersistCaste.DdeVtot);
eltMetier.setDdeVc(eltPersistCaste.DdeVc);
- eltMetier.setDdeF(eltPersistCaste.DdeF);
+ eltMetier.setDdeFr(eltPersistCaste.DdeFr);
eltMetier.setDdeLact(eltPersistCaste.DdeLact);
eltMetier.setDdeLtot(eltPersistCaste.DdeLtot);
eltMetier.setDdeSact(eltPersistCaste.DdeSact);
@@ -234,7 +234,7 @@
eltPersist.DdeVact = sectionProfil.getDdeVact();
eltPersist.DdeVtot = sectionProfil.getDdeVtot();
eltPersist.DdeVc = sectionProfil.getDdeVc();
- eltPersist.DdeF = sectionProfil.getDdeF();
+ eltPersist.DdeFr = sectionProfil.getDdeFr();
eltPersist.DdeLact = sectionProfil.getDdeLact();
eltPersist.DdeLtot = sectionProfil.getDdeLtot();
eltPersist.DdeSact = sectionProfil.getDdeSact();
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueDaoStructureETU.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueDaoStructureETU.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueDaoStructureETU.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -431,22 +431,6 @@
public FichRuns FichRuns;
}
- // public static class RunConverter implements SingleValueConverter {
- // public String toString(final Object obj) {
- // return ((Run) obj).Nom;
- // }
- //
- // public Object fromString(final String name) {
- // final Run pf = new Run();
- // pf.Nom = name;
- // return pf;
- // }
- //
- // public boolean canConvert(final Class type) {
- // return type.isInstance(Run.class);
- // }
- // }
-
public static class FichRuns {
public List<ModeleRun> Modeles;
}
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueDaoStructureORES.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueDaoStructureORES.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueDaoStructureORES.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -121,7 +121,7 @@
/** Représente la valeur de la balise portant le même nom dans le fichier XML */
public boolean DdeVc;
/** Représente la valeur de la balise portant le même nom dans le fichier XML */
- public boolean DdeF;
+ public boolean DdeFr;
/** Représente la valeur de la balise portant le même nom dans le fichier XML */
public boolean DdeLact;
/** Représente la valeur de la balise portant le même nom dans le fichier XML */
Deleted: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/Crue9ResPrtAdapter.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/Crue9ResPrtAdapter.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/Crue9ResPrtAdapter.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -1,116 +0,0 @@
-/**
- * Licence GPL
- * Copyright Genesis
- */
-package org.fudaa.dodico.crue.io.neuf;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.fudaa.dodico.crue.metier.emh.ResPrtGeoCasier;
-import org.fudaa.dodico.crue.metier.emh.ResPrtGeoCasierContainer;
-import org.fudaa.dodico.crue.metier.emh.ResPrtGeoSectionContainer;
-import org.fudaa.dodico.crue.metier.emh.ResPrtReseau;
-
-/**
- * @author deniger
- */
-public class Crue9ResPrtAdapter extends ResPrtReseau {
-
- protected class DefaultResOnCasier extends ResPrtGeoCasierContainer {
- public DefaultResOnCasier(final String nom, final ResPrtGeoCasier res) {
- super();
- this.nom = nom;
- this.res = res;
- }
-
- private final String nom;
- private final ResPrtGeoCasier res;
-
- @Override
- public String getId() {
- return nom;
- }
-
- @Override
- public ResPrtGeoCasier getResultat() {
- return res;
- }
-
- }
-
- private final Map<String, ResPrtGeoCasierContainer> resSto;
- private final List<String> listCasier;
-
- private STRSequentialReader reader;
-
- /**
- * @return the reader
- */
- public STRSequentialReader getReader() {
- return reader;
- }
-
- /**
- * @param reader the reader to set
- */
- protected void setReader(STRSequentialReader reader) {
- this.reader = reader;
- }
-
- /**
- * @param readSto les resultat issus de sto.
- */
- public Crue9ResPrtAdapter(final Map<String, ResPrtGeoCasier> readSto) {
- this.resSto = new HashMap<String, ResPrtGeoCasierContainer>(readSto.size());
- final List tmplistCasier = new ArrayList<String>();
- for (final Map.Entry<String, ResPrtGeoCasier> it : readSto.entrySet()) {
- tmplistCasier.add(it.getKey());
- resSto.put(it.getKey(), new DefaultResOnCasier(it.getKey(), it.getValue()));
- }
- listCasier = Collections.unmodifiableList(tmplistCasier);
-
- }
-
- @Override
- public void close() {
- if (reader != null) {
- reader.close();
- }
-
- }
-
- @Override
- public int getNbResOnCasier() {
- return resSto.size();
- }
-
- @Override
- public int getNbResOnProfil() {
- return reader.getNbProfil();
- }
-
- @Override
- public String getCasierNom(final int idx) {
- return listCasier.get(idx);
- }
-
- @Override
- public String getProfilNom(final int idx) {
- return reader.getProfilName(idx);
- }
-
- @Override
- public ResPrtGeoCasierContainer getResultatOnCasier(final String nomCasier) {
- return resSto.get(nomCasier);
- }
-
- @Override
- public ResPrtGeoSectionContainer getResultatOnProfil(final String nomProfil) {
- return reader.getResultatOnProfil(nomProfil);
- }
-
-}
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/CrueIODico.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/CrueIODico.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/CrueIODico.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -166,6 +166,7 @@
cartesBranche.add(BRANCHE_CCTRMAX);
cartesBranche.add(BRANCHE_CLAPET);
cartesBranche.add(BRANCHE_QMIN_QMAX);
+ cartesBranche.add(BRANCHE_ZAMZAV);
cartesBranche.add(BRANCHE_DZQ);
cartesBranche.add(BRANCHE_NOMREF);
cartesBranche.add(BRANCHE_PARAM);
@@ -350,11 +351,11 @@
protected static boolean appartientBrancheCarte(final String element) {
if (element == null) { return false; }
final String elt = element.toUpperCase();
- boolean ok = false;
for (final String carte : cartesBranche) {
- ok = ok || elt.contains(carte);
+
+ if (elt.contains(carte)) { return true; }
}
- return ok;
+ return false;
}
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DCFileReader.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DCFileReader.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DCFileReader.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -100,9 +100,9 @@
* @param in la chaine a tester
* @return si identifie un lit mineur
*/
- protected static boolean isLitMineur(String in) {
+ protected static boolean isLitMineur(final String in) {
if (CtuluLibString.isEmpty(in)) { return false; }
- String inUpper = in.toUpperCase();
+ final String inUpper = in.toUpperCase();
return inUpper.startsWith("LT_MINEUR") || inUpper.startsWith("MINEUR");
}
@@ -133,8 +133,8 @@
analyze_.addFatalError("dc.distance.intersection.null", idBranche);
return;
}
- double eps = dataLinked.getCruePropertyDefinitionContainer().getEpsilon("xp");
- for (Double dis : listeDistance) {
+ final double eps = dataLinked.getCruePropertyDefinitionContainer().getEpsilon("xp");
+ for (final Double dis : listeDistance) {
final double val = dis.doubleValue();
if (val < 0 || CtuluLib.isZero(val, eps)) {
analyze_.addFatalError("dc.distance.intersection.null", idBranche);
@@ -144,6 +144,27 @@
}
}
+ private void checkCasier(final CrueData crueData) {
+ final List<CatEMHCasier> casiers = crueData.getCasiers();
+ for (final CatEMHCasier catEMHCasier : casiers) {
+ final List<DonPrtGeoProfilCasier> profils = EMHHelper.collectInstanceOf(catEMHCasier.getInfosEMH(),
+ DonPrtGeoProfilCasier.class);
+ for (final DonPrtGeoProfilCasier profil : profils) {
+ final int size = profil.getPtProfil().size();
+ if (size < 2) {
+ analyze_.addError("io.dh.casier.tooSmall", catEMHCasier.getId(), profil.getId(), size);
+ }
+ if (profil.getLitUtile() == null && size > 1) {
+ final LitUtile lit = new LitUtile();
+ lit.setLimDeb(profil.getPtProfil().get(0));
+ lit.setLimFin(profil.getPtProfil().get(size - 1));
+ profil.setLitUtile(lit);
+ }
+ }
+
+ }
+ }
+
/**
* Complete la branche avec la liste des infos lues sur chaque branche spécifiques.
*
@@ -347,7 +368,7 @@
//
// }
- LitNumerote lastLit = listeLits.get(listeLits.size() - 1);
+ final LitNumerote lastLit = listeLits.get(listeLits.size() - 1);
// si pas de limite de définies, le lit est definit avec le premier et dernier point:
// question de fred: normalement listLits.size doit valoir 1 ici avec LimDeb null pour ce lit
// le cas limitX ( limites définies avec des X position et non pas desindices) est embetant
@@ -392,7 +413,7 @@
final double xpos1 = relation1.getXp();
final double xpos2 = relation2.getXp();
- double distance = Math.abs(xpos1 - xpos2);
+ final double distance = Math.abs(xpos1 - xpos2);
if (distmax < distance) {
// -- il faut ajouter des profils interpolées --//
@@ -455,13 +476,7 @@
final DonCalcSansPrtBrancheBarrageFilEau dataDCSP = new DonCalcSansPrtBrancheBarrageFilEau(metier
.getCruePropertyDefinitionContainer());
branche.addInfosEMH(dataDCSP);
- final EvolutionFF listeEvolution = new EvolutionFF();
- listeEvolution.setPtEvolutionFF(new ArrayList<PtEvolutionFF>());
- final LoiFF newLoi = new LoiFF();
- newLoi.setNom(CruePrefix.addPrefixIfNeeded(EnumTypeLoi.LoiQpilZam, idBranche));
- newLoi.setType(EnumTypeLoi.LoiQpilZam);
- newLoi.setEvolutionFF(listeEvolution);
- dataDCSP.setLoiQZam(newLoi);
+
dataDCSP.setElemSeuil(new ArrayList<ElemSeuil>());
String nomSectionPilote = null;
// -- la liste des sections branches --//
@@ -481,6 +496,12 @@
dataDCSP.setQLimSup(qmax);
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_ZQ)) {
+ LoiFF LoiQZam = dataDCSP.getLoiQZam();
+ if (LoiQZam == null) {
+ LoiQZam = createLoiQpilZam(idBranche);
+ dataDCSP.setLoiQZam(LoiQZam);
+ }
+ List<PtEvolutionFF> ptEvolutionFF = LoiQZam.getEvolutionFF().getPtEvolutionFF();
// ex: Z/Q(o) Z1 Q1 Z2 Q2… pour Denoye
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final PtEvolutionFF pointFF = new PtEvolutionFF();
@@ -489,13 +510,14 @@
// z en premier et q en second !
pointFF.setY(in_.doubleField(i++));
pointFF.setX(in_.doubleField(i));
- dataDCSP.getLoiQZam().getEvolutionFF().getPtEvolutionFF().add(pointFF);
+
+ ptEvolutionFF.add(pointFF);
}
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_PROF)) {
// -- peut y avoir 1 ou plusieurs coefficients --//
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final String nomSection = in_.stringField(i);
- CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
+ final CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
listeSectionBranche.add(profil);
}
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_NOMREF)) {
@@ -505,20 +527,18 @@
}
else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_PARAM)) {
- final ElemSeuil seuil = new ElemSeuil(metier.getCruePropertyDefinitionContainer());
- // ex PARAM(o, u) ? npas lpas zseuil cseuil
- // -- peut y avoir 1 ou plusieurs eleme du seuil --//
+ final int nbSeuil = (int) in_.doubleField(2);
+ double zseuil = in_.doubleField(4);
+ double coefD = in_.doubleField(1);
+ for (int i = 0; i < nbSeuil; i++) {
+ final ElemSeuil seuil = new ElemSeuil(metier.getCruePropertyDefinitionContainer());
+ final double largeur = in_.doubleField(3);
+ seuil.setZseuil(zseuil);
+ seuil.setCoefD(coefD);
+ seuil.setLargeur(largeur);
+ dataDCSP.addElemSeuil(seuil);
+ }
- final double npas = in_.doubleField(1);
- final double lpas = in_.doubleField(2);
- final double zseuil = in_.doubleField(3);
- final double cseuil = in_.doubleField(4);
-
- seuil.setZseuil(zseuil);
- seuil.setCoefD(cseuil * lpas);
- seuil.setLargeur(npas);
- dataDCSP.addElemSeuil(seuil);
-
} else {
errorCarteNotRecognized(typeLigne);
}
@@ -571,22 +591,7 @@
final DonCalcSansPrtBrancheBarrageGenerique dataDCSP = new DonCalcSansPrtBrancheBarrageGenerique(metier
.getCruePropertyDefinitionContainer());
branche.addInfosEMH(dataDCSP);
- EvolutionFF listeEvolution = new EvolutionFF();
- List<PtEvolutionFF> listePoints = new ArrayList<PtEvolutionFF>();
- listeEvolution.setPtEvolutionFF(listePoints);
- LoiFF newLoi = new LoiFF();
- newLoi.setNom(CruePrefix.changePrefix(idBranche, CruePrefix.P_BRANCHE, EnumTypeLoi.LoiQpilZam));
- newLoi.setType(EnumTypeLoi.LoiQpilZam);
- newLoi.setEvolutionFF(listeEvolution);
- dataDCSP.setLoiQZam(newLoi);
- listeEvolution = new EvolutionFF();
- listePoints = new ArrayList<PtEvolutionFF>();
- listeEvolution.setPtEvolutionFF(listePoints);
- newLoi = new LoiFF();
- newLoi.setNom(CruePrefix.changePrefix(idBranche, CruePrefix.P_BRANCHE, EnumTypeLoi.LoiQDz));
- newLoi.setType(EnumTypeLoi.LoiQDz);
- newLoi.setEvolutionFF(listeEvolution);
- dataDCSP.setLoiQDz(newLoi);
+
String nomSectionPilote = null;
// -- la liste des sections branches --//
final List<CatEMHSection> listeSectionBranche = new ArrayList<CatEMHSection>();
@@ -605,28 +610,32 @@
dataDCSP.setQLimSup(qmax);
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_ZQ)) {
+ List<PtEvolutionFF> ptEvolutionFF = getLoiQZam(idBranche, dataDCSP);
// ex: Z/Q(o) Z1 Q1 Z2 Q2… pour Denoye
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final PtEvolutionFF pointFF = new PtEvolutionFF();
// inversion normale
pointFF.setY(in_.doubleField(i++));
pointFF.setX(in_.doubleField(i));
- dataDCSP.getLoiQZam().getEvolutionFF().getPtEvolutionFF().add(pointFF);
+
+ ptEvolutionFF.add(pointFF);
}
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_DZQ)) {
+ List<PtEvolutionFF> ptEvolutionFF = getLoiQDz(idBranche, dataDCSP);
// ex: DZ/Q(o) dZ1 Q1 dZ2 Q2… pour Noye
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final PtEvolutionFF pointFF = new PtEvolutionFF();
// dz en premier alors que dz en ordonnee (QDz)
pointFF.setY(in_.doubleField(i++));
pointFF.setX(in_.doubleField(i));
- dataDCSP.getLoiQDz().getEvolutionFF().getPtEvolutionFF().add(pointFF);
+
+ ptEvolutionFF.add(pointFF);
}
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_PROF)) {
// -- peut y avoir 1 ou plusieurs coefficients --//
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final String nomSection = in_.stringField(i);
- CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
+ final CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
listeSectionBranche.add(profil);
}
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_NOMREF)) {
@@ -693,27 +702,20 @@
// -- remplissage des qmin qmax par rapport aux sections --//
// ex: QMIN/QMAX -11000.000 11000.000
if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_QMIN_QMAX)) {
- final EvolutionFF listeEvolution = new EvolutionFF();
- final List<PtEvolutionFF> listePoints = new ArrayList<PtEvolutionFF>();
- listeEvolution.setPtEvolutionFF(listePoints);
- final LoiFF newLoi = new LoiFF();
- newLoi.setNom(CruePrefix.addPrefixIfNeeded(EnumTypeLoi.LoiZavZam, idBranche));
- newLoi.setEvolutionFF(listeEvolution);
- newLoi.setType(EnumTypeLoi.LoiZavZam);
- dataDCSP.setLoiZavZam(newLoi);
final double qmin = in_.doubleField(1);
final double qmax = in_.doubleField(2);
dataDCSP.setQLimInf(qmin);
dataDCSP.setQLimSup(qmax);
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_ZAMZAV)) {
+ final List<PtEvolutionFF> ptEvolutionFF = getLoiZavZam(idBranche, dataDCSP);
// ex: ZAM/ZAV(o) zam1 zav1 zam2 zav2
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final PtEvolutionFF pointFF = new PtEvolutionFF();
// inversion normale
pointFF.setY(in_.doubleField(i++));
pointFF.setX(in_.doubleField(i));
- dataDCSP.getLoiZavZam().getEvolutionFF().getPtEvolutionFF().add(pointFF);
+ ptEvolutionFF.add(pointFF);
}
} else
@@ -731,6 +733,15 @@
return branche;
}
+ private List<PtEvolutionFF> getLoiZavZam(final String idBranche, final DonCalcSansPrtBrancheNiveauxAssocies dataDCSP) {
+ if (dataDCSP.getLoiZavZam() == null) {
+ final LoiFF newLoi = createLoiZavZam(idBranche);
+ dataDCSP.setLoiZavZam(newLoi);
+ }
+ final List<PtEvolutionFF> ptEvolutionFF = dataDCSP.getLoiZavZam().getEvolutionFF().getPtEvolutionFF();
+ return ptEvolutionFF;
+ }
+
/**
* branche orifice 5.
*
@@ -940,12 +951,12 @@
// -- peut y avoir 1 ou plusieurs coefficients --//
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final String nomSection = in_.stringField(i);
- CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
+ final CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
listeSectionBranche.add(profil);
}
// listeSectionBranche.add(sections);
} else if (typeLigne.toUpperCase().equals(CrueIODico.BRANCHE_NOMREF)) {
- String nomSectionPilote = in_.stringField(1);
+ final String nomSectionPilote = in_.stringField(1);
} else
@@ -1198,7 +1209,7 @@
// -- peut y avoir 1 ou plusieurs coefficients --//
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final String nomSection = in_.stringField(i);
- CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
+ final CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
listeSectionBranche.add(profil);
}
// listeSectionBranche.add(sections);
@@ -1234,38 +1245,27 @@
switch (typebranche) {
case CrueIODico.BrancheSaintVenant:
- // TODO Adrien bien géré
return createBrancheSaintVenant(metier, idBranche);
case CrueIODico.BrancheSeuilTransversal:
- // TODO Adrien bien géré
return createBrancheSeuilTransversal(metier, idBranche);
case CrueIODico.BrancheSeuilLongitudinale:
- // TODO Adrien bien géré
return createBrancheSeuilLateral(metier, idBranche);
case CrueIODico.branchePdc:
return createBranchePdc(metier, idBranche);
case CrueIODico.BrancheStrickler:
return createBrancheStrickler(metier, idBranche);
case CrueIODico.BrancheOrifice:
- // TODO Adrien Bien géré, mot clef a peaufiner retour CNR
return createBrancheOrifice(metier, idBranche);
case CrueIODico.BrancheBarrageGenerique:
- // TODO Adrien bien géré
return createBrancheGenerique(metier, idBranche);
case CrueIODico.BrancheNiveauAssocie:
- // TODO Adrien bien géré
return createBrancheNiveauAssocie(metier, idBranche);
case CrueIODico.BrancheBarrageFilEau:
- // TODO Adrien bien géré
return createBrancheBarrageFilEau(metier, idBranche);
default:
-
- // analyze_.addErrorFromFile("io.global.cantCreateBranche.error", CtuluAnalyze.createMap("idBranche", idBranche),
- // in_.getLineNumber());
analyze_.addErrorFromFile("io.global.cantCreateBranche.error", in_.getLineNumber(), idBranche);
throw new CrueNotSupportedException(idBranche, in_.getLineNumber());
- // return null;
}
}
@@ -1275,7 +1275,7 @@
*
* @param metier
* @param idBranche
- * @return
+ * @return la branche strickler
*/
public EMHBrancheStrickler createBrancheStrickler(final CrueData metier, final String idBranche) throws IOException {
final EMHBrancheStrickler branche = new EMHBrancheStrickler(idBranche);
@@ -1321,7 +1321,7 @@
// -- peut y avoir 1 ou plusieurs coefficients --//
for (int i = 1; i < in_.getNumberOfFields(); i++) {
final String nomSection = in_.stringField(i);
- CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
+ final CatEMHSection profil = createInitSectionForBranche(metier, nomSection);
listeSectionBranche.add(profil);
}
// listeSectionBranche.add(sections);
@@ -1346,7 +1346,6 @@
* @author Adrien Hadoux
* @param metier
* @param idNoeud
- * @return
* @throws IOException
* @throws CrueNotSupportedException
*/
@@ -1525,6 +1524,33 @@
return profil;
}
+ private LoiFF createLoiQDz(final String idBranche) {
+ LoiFF newLoi = new LoiFF();
+ newLoi.setNom(CruePrefix.changePrefix(idBranche, CruePrefix.P_BRANCHE, EnumTypeLoi.LoiQDz));
+ newLoi.setType(EnumTypeLoi.LoiQDz);
+ newLoi.setEvolutionFF(new EvolutionFF(new ArrayList<PtEvolutionFF>()));
+ dataLinked.getLoiConteneur().addLois(newLoi);
+ return newLoi;
+ }
+
+ private LoiFF createLoiQpilZam(final String idBranche) {
+ LoiFF newLoi = new LoiFF();
+ newLoi.setNom(CruePrefix.changePrefix(idBranche, CruePrefix.P_BRANCHE, EnumTypeLoi.LoiQpilZam));
+ newLoi.setType(EnumTypeLoi.LoiQpilZam);
+ newLoi.setEvolutionFF(new EvolutionFF(new ArrayList<PtEvolutionFF>()));
+ dataLinked.getLoiConteneur().addLois(newLoi);
+ return newLoi;
+ }
+
+ private LoiFF createLoiZavZam(final String idBranche) {
+ final LoiFF newLoi = new LoiFF();
+ newLoi.setNom(CruePrefix.addPrefixIfNeeded(EnumTypeLoi.LoiZavZam, idBranche));
+ newLoi.setEvolutionFF(new EvolutionFF(new ArrayList<PtEvolutionFF>()));
+ newLoi.setType(EnumTypeLoi.LoiZavZam);
+ dataLinked.getLoiConteneur().addLois(newLoi);
+ return newLoi;
+ }
+
private void createParamNum(final CrueData metier) {
if (metier.getParamNumModeleBase() == null) {
metier.setParamNumModeleBase(new ParamNumModeleBase(metier.getCruePropertyDefinitionContainer()));
@@ -1758,6 +1784,24 @@
return sectionProfil;
}
+ private List<PtEvolutionFF> getLoiQDz(final String idBranche, final DonCalcSansPrtBrancheBarrageGenerique dataDCSP) {
+ LoiFF loiQDZ = dataDCSP.getLoiQDz();
+ if (loiQDZ == null) {
+ loiQDZ = createLoiQDz(idBranche);
+ dataDCSP.setLoiQDz(loiQDZ);
+ }
+ return loiQDZ.getEvolutionFF().getPtEvolutionFF();
+ }
+
+ private List<PtEvolutionFF> getLoiQZam(final String idBranche, final DonCalcSansPrtBrancheBarrageGenerique dataDCSP) {
+ LoiFF loiQZam = dataDCSP.getLoiQZam();
+ if (loiQZam == null) {
+ loiQZam = createLoiQpilZam(idBranche);
+ dataDCSP.setLoiQZam(loiQZam);
+ }
+ return dataDCSP.getLoiQZam().getEvolutionFF().getPtEvolutionFF();
+ }
+
@Override
protected Object internalRead() {
enumSensOrificeMapCrue9 = EnumsConverter.createCrue9EnumConverter(EnumSensOrifice.class, analyze_);
@@ -1950,12 +1994,12 @@
}
// erreur si un profil utilisés n'est pas défini
- Collection usedButNotCreationProfils = ListUtils.removeAll(usedNomSection, createdNomSection);
+ final Collection usedButNotCreationProfils = ListUtils.removeAll(usedNomSection, createdNomSection);
if (!usedButNotCreationProfils.isEmpty()) {
analyze_.addFatalError(usedButNotCreationProfils.size() == 1 ? "io.dc.sectionUsedButNotExist.one"
: "io.dc.sectionUsedButNotExist.multi", StringUtils.join(usedButNotCreationProfils, ", "));
}
- Collection createdButNotUsed = ListUtils.removeAll(createdNomSection, usedNomSection);
+ final Collection createdButNotUsed = ListUtils.removeAll(createdNomSection, usedNomSection);
if (!createdButNotUsed.isEmpty()) {
analyze_.addWarn(createdButNotUsed.size() == 1 ? "io.dc.sectionCreatedButNotUsed.one"
: "io.dc.sectionCreatedButNotUsed.multi", StringUtils.join(createdButNotUsed, ", "));
@@ -1969,27 +2013,6 @@
}
- private void checkCasier(CrueData crueData) {
- List<CatEMHCasier> casiers = crueData.getCasiers();
- for (CatEMHCasier catEMHCasier : casiers) {
- List<DonPrtGeoProfilCasier> profils = EMHHelper.collectInstanceOf(catEMHCasier.getInfosEMH(),
- DonPrtGeoProfilCasier.class);
- for (DonPrtGeoProfilCasier profil : profils) {
- int size = profil.getPtProfil().size();
- if (size < 2) {
- analyze_.addError("io.dh.casier.tooSmall", catEMHCasier.getId(), profil.getId(), size);
- }
- if (profil.getLitUtile() == null && size > 1) {
- LitUtile lit = new LitUtile();
- lit.setLimDeb(profil.getPtProfil().get(0));
- lit.setLimFin(profil.getPtProfil().get(size - 1));
- profil.setLitUtile(lit);
- }
- }
-
- }
- }
-
/**
* Lit les frottements
*
@@ -2330,9 +2353,9 @@
}
}
// on met a jour les relations.
- Collection<RelationEMHBrancheContientSection> findRelationOfType = EMHHelper.selectRelationOfType(
+ final Collection<RelationEMHBrancheContientSection> findRelationOfType = EMHHelper.selectRelationOfType(
sectionToreplace, RelationEMHBrancheContientSection.class);
- for (RelationEMHBrancheContientSection relationToChange : findRelationOfType) {
+ for (final RelationEMHBrancheContientSection relationToChange : findRelationOfType) {
newSection.addRelationEMH(relationToChange);
}
// EMHBrancheHelper.replaceSectioninAllConnectedBranche(sectionToreplace, newSection, metier.getBranches());
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBReader.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBReader.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBReader.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -156,8 +156,9 @@
final TLongArrayList posNormal = new TLongArrayList();
final TDoubleArrayList pdtNormal = new TDoubleArrayList();
final TDoubleArrayList ruinouNormal = new TDoubleArrayList();
- final TLongArrayList posRegul = new TLongArrayList();
- final TDoubleArrayList pdtRegul = new TDoubleArrayList();
+ final List<Boolean> regul = new ArrayList<Boolean>();
+ // final TLongArrayList posRegul = new TLongArrayList();
+ // final TDoubleArrayList pdtRegul = new TDoubleArrayList();
while (helper.getAvailable() > 0) {
helper.readData();
@@ -166,23 +167,24 @@
// (ifi2) test,sngl(t),sngl(ruinou) pour un pas de temps normal
// ces 2 tableaux enregistrent les données: si regu on les modifie
- TLongArrayList posCurrent = posNormal;
- TDoubleArrayList pdtCurrent = pdtNormal;
final String id = helper.getStingFromBuffer(4);
final boolean isRegu = "REGU".equals(id);
// si regu, on switche les tableaux qui vont recevoir les donnees.
- if (isRegu) {
- posCurrent = posRegul;
- pdtCurrent = pdtRegul;
- }
+ // if (isRegu) {
+ // posCurrent = posRegul;
+ // pdtCurrent = pdtRegul;
+ // }
// on enregistre le pas de temps
- pdtCurrent.add(helper.getBuffer().getFloat());
+ pdtNormal.add(helper.getBuffer().getFloat());
// en mode normal, on enregistre ruinou
- if (!isRegu) {
+ regul.add(isRegu);
+ if (isRegu) {
+ ruinouNormal.add(0);
+ } else {
ruinouNormal.add(helper.getBuffer().getDouble());
}
// on enregistre la position intéressante: celle juste avant les donnéées
- posCurrent.add(helper.getCurrentPosition());
+ posNormal.add(helper.getCurrentPosition());
// on saute la ligne profil ou regul
helper.skipRecord();
// si pas regu
@@ -193,8 +195,7 @@
helper.skipRecord();
}
}
- infos.pdt = new FCBSequentialReader.PasDeTempsContainerNormal(posNormal, pdtNormal, ruinouNormal);
- infos.pdtRegulation = new FCBSequentialReader.PasDeTempsContainer(posRegul, pdtRegul);
+ infos.setPdt(new FCBSequentialReader.ResultatCalculPasDeTemps(posNormal, pdtNormal, regul, ruinouNormal));
}
Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBSequentialReader.java
===================================================================
--- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBSequentialReader.java 2010-01-28 14:37:32 UTC (rev 5654)
+++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/FCBSequentialReader.java 2010-01-29 00:09:41 UTC (rev 5655)
@@ -15,6 +15,7 @@
import org.apache.commons.lang.ArrayUtils;
import org.fudaa.ctulu.CtuluLibFile;
+import org.fudaa.dodico.crue.metier.emh.AbstractInfosEMH;
import org.fudaa.dodico.crue.metier.emh.EMH;
import org.fudaa.dodico.crue.metier.emh.EnumInfosEMH;
import org.fudaa.dodico.crue.metier.emh.InfosEMH;
@@ -37,6 +38,180 @@
}
/**
+ * @author denf01a
+ * @creation 27 mai 2009
+ * @version
+ * @param <T> l'entete
+ * @param <R> le resultat
+ */
+ public class EnteteContainer<T extends FCBValueObject.AbstractEntete, R extends FCBValueObject.AbstractRes> {
+ private final List<T> listData;
+ private final ResBuilder<R> resBuilder;
+ private final TObjectIntHashMap namePos;
+
+ private final int nb;
+
+ protected EnteteContainer(final List<T> struc, final ResBuilder<R> resBuilder) {
+ super();
+ this.listData = Collections.unmodifiableList(struc);
+ this.resBuilder = resBuilder;
+ namePos = new TObjectIntHashMap();
+ int idx = 0;
+ for (final T t : struc) {
+ namePos.put(t.getNom(), idx++);
+ }
+ nb = listData.size();
+ }
+
+ /**
+ * @param emh l'emh en question
+ * @return le resultat contenu dans une infoEMH
+ */
+ public ResultatCalcul createInfoEMH(EMH emh) {
+ return new ResultatCalcul<T, R>(emh, getPosition(emh.getId()), this);
+ }
+
+ /**
+ * @param nom le nom
+ * @return la position de lecture. -1 si non present
+ */
+ public T getData(final String nom) {
+ final int i = getPosition(nom);
+ return i < 0 ? null : getListData().get(i);
+ }
+
+ /**
+ * @param nom le nom
+ * @return la position de lecture. -1 si non present
+ */
+ public T getData(final int i) {
+ return (i < 0 || i >= getListData().size()) ? null : getListData().get(i);
+ }
+
+ /**
+ * @param idx l'indice
+ * @return le nom de la donnes
+ */
+ public String getDataName(final int idx) {
+ return listData.get(idx).getNom();
+ }
+
+ /**
+ * @return liste non modifiable des donnees.
+ */
+ public List<T> getListData() {
+ return listData;
+ }
+
+ /**
+ * @return le nombre de données
+ */
+ public int getNbData() {
+ return nb;
+ }
+
+ public ResultatCalculPasDeTemps getPasDeTemps() {
+ return FCBSequentialReader.this.getPdt();
+ }
+
+ /**
+ * @param nom le nom
+ * @return la position de lecture. -1 si non present
+ */
+ public int getPosition(final String nom) {
+ if (namePos.contains(nom)) { return namePos.get(nom); }
+ return -1;
+ }
+
+ protected ResBuilder<R> getResBuilder() {
+ return resBuilder;
+ }
+
+ /**
+ * @param idxPt
+ * @param nomEMH
+ * @param inout
+ * @return le resultat lu
+ * @throws IOException
+ */
+ public R read(final int idxPt, final String nomEMH, final R inout) throws IOException {
+ return getResultat(idxPt, nomEMH, inout, this);
+ }
+
+ /**
+ * @param idxPdt
+ * @param nomEMH
+ * @param inout
+ * @return le resultat lu
+ * @throws IOException
+ */
+ public R read(final int idxPdt, final int nomEMH, final R inout) throws IOException {
+ return getResultat(idxPdt, nomEMH, inout, this);
+ }
+
+ }
+
+ /**
+ * indice des positions de chaque pdt de crue, longueur variable
+ */
+ public static class ResultatCalculPasDeTemps extends AbstractInfosEMH {
+
+ public EnumInfosEMH getCatType() {
+ return EnumInfosEMH.RESULTAT_PAS_DE_TEMPS;
+ }
+
+ final protected long[] positions;
+ final protected double[] pdts;
+ final protected boolean[] isRegu;
+ final double[] ruinou;
+
+ /**
+ * @param idx le pas de temps demande.
+ * @return coefficient de ruissellement au pas de temps idx
+ */
+ public double getRuinou(final int idx) {
+ return ruinou[idx];
+ }
+
+ protected ResultatCalculPasDeTemps() {
+ positions = ArrayUtils.EMPTY_LONG_ARRAY;
+ pdts = ArrayUtils.EMPTY_DOUBLE_ARRAY;
+ isRegu = ArrayUtils.EMPTY_BOOLEAN_ARRAY;
+ ruinou = ArrayUtils.EMPTY_DOUBLE_ARRAY;
+ }
+
+ protected ResultatCalculPasDeTemps(final TLongArrayList tableauIndicesPdtCrue, final TDoubleArrayList pdt,
+ final List<Boolean> isRegu, TDoubleArrayList ruinou) {
+ positions = tableauIndicesPdtCrue.toNativeArray();
+ this.ruinou = ruinou.toNativeArray();
+ pdts = pdt.toNativeArray();
+ this.isRegu = ArrayUtils.toPrimitive(isRegu.toArray(new Boolean[isRegu.size()]), false);
+
+ }
+
+ public int getNbPdt() {
+ return pdts.length;
+ }
+
+ public boolean isRegulation(final int idxPdt) {
+ return isRegu[idxPdt];
+ }
+
+ public boolean containsRui(final int idxPdt) {
+ return !isRegu[idxPdt];
+ }
+
+ public double getPdt(final int idxPdt) {
+ return pdts[idxPdt];
+ }
+
+ public long getPosition(final int idxPdt) {
+ return positions[idxPdt];
+ }
+
+ }
+
+ /**
* Interface definissant un contrat permettant de construire un resultat
*
* @author denf01a
@@ -110,82 +285,33 @@
}
- /**
- * indice des positions de chaque pdt de crue, longueur variable
- */
- protected static class PasDeTempsContainer {
-
- final protected long[] positions;
- final protected double[] pdts;
-
- protected PasDeTempsContainer() {
- positions = ArrayUtils.EMPTY_LONG_ARRAY;
- pdts = ArrayUtils.EMPTY_DOUBLE_ARRAY;
- }
-
- protected PasDeTempsContainer(final TLongArrayList tableauIndicesPdtCrue, final TDoubleArrayList pdt) {
- positions = tableauIndicesPdtCrue.toNativeArray();
- pdts = pdt.toNativeArray();
- }
-
- public int getNbPdt() {
- return pdts.length;
- }
-
- public double getPdt(final int idxPdt) {
- return pdts[idxPdt];
- }
-
- public long getPosition(final int idxPdt) {
- return positions[idxPdt];
- }
-
- }
-
- protected static class PasDeTempsContainerNormal extends PasDeTempsContainer {
-
- /**
- * coefficient de ruissellement
- */
- private final double[] ruinou;
-
- protected PasDeTempsContainerNormal() {
- super();
- ruinou = ArrayUtils.EMPTY_DOUBLE_ARRAY;
- }
-
- protected PasDeTempsCon...
[truncated message content] |