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] |