From: <de...@us...> - 2010-03-01 22:27:47
|
Revision: 5699 http://fudaa.svn.sourceforge.net/fudaa/?rev=5699&view=rev Author: deniger Date: 2010-03-01 22:27:37 +0000 (Mon, 01 Mar 2010) Log Message: ----------- Modified Paths: -------------- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/common/CrueData.java trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/common/CrueDataImpl.java trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/AbstractDaoLoi.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/CrueConverterOPTG.java trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DHReader.java trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DHWriter.java trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalc.java trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalcPerm.java trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalcTrans.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/validation/ValidateEMHProperties.java trunk/soft/fudaa-crue/dodico/src/test/java/org/fudaa/dodico/crue/io/common/TestCrueDataImpl.java trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/builder/EMHManagerBuilder.java trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/explorer/CrueLauncher.java Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/common/CrueData.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/common/CrueData.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/common/CrueData.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -262,4 +262,14 @@ public void sort(); + /** + * @param casierProfil un casier définit dans le fichiert dptg en tant que bibliothèque + */ + public void registerDefinedCasierProfil(DonPrtGeoProfilCasier casierProfil); + + /** + * @param sectionProfil + */ + public void registerDefinedSectionProfil(DonPrtGeoProfilSection sectionProfil); + } \ No newline at end of file Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/common/CrueDataImpl.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/common/CrueDataImpl.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/common/CrueDataImpl.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -357,6 +357,20 @@ } + /** + * @param casierProfil un casier définit dans le fichiert dptg en tant que bibliothèque + */ + public void registerDefinedCasierProfil(DonPrtGeoProfilCasier casierProfil) { + idProfilCasierUse.put(casierProfil.getId(), casierProfil); + } + + /** + * @param sectionProfil + */ + public void registerDefinedSectionProfil(DonPrtGeoProfilSection sectionProfil) { + idProfilSectionUse.put(sectionProfil.getId(), sectionProfil); + } + public void registerUseCasierProfil(final EMH emh, final String profilId) { DonPrtGeoProfilCasier casier = getUsedProfilCasier(profilId); if (casier == null) { @@ -364,7 +378,9 @@ casier.setNom(profilId); idProfilCasierUse.put(profilId, casier); } - emh.addInfosEMH(casier); + if (emh != null) { + emh.addInfosEMH(casier); + } } @@ -375,7 +391,9 @@ section.setNom(profilId); idProfilSectionUse.put(profilId, section); } - emh.addInfosEMH(section); + if (emh != null) { + emh.addInfosEMH(section); + } } Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/AbstractDaoLoi.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/AbstractDaoLoi.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/AbstractDaoLoi.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -1,5 +1,8 @@ package org.fudaa.dodico.crue.io.dao; +import com.thoughtworks.xstream.XStream; + +import org.apache.commons.lang.StringUtils; import org.fudaa.dodico.crue.io.common.AbstractSingleConverter; import org.fudaa.dodico.crue.metier.emh.EnumTypeLoi; import org.fudaa.dodico.crue.metier.emh.EvolutionFF; @@ -9,8 +12,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.thoughtworks.xstream.XStream; - /** * Classe abstraite qui permet de factoriser les attributs communs de toutes les lois */ @@ -97,7 +98,7 @@ */ protected static void metierToDaoLoi(final AbstractDaoLoi outLoi, final Loi inLoi) { outLoi.Nom = inLoi.getNom(); - outLoi.Description = inLoi.getDescription(); + outLoi.Description = StringUtils.defaultString(inLoi.getDescription()); outLoi.Type = inLoi.getType(); outLoi.EvolutionFF = inLoi.getEvolutionFF(); } 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-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterDPTG.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -69,7 +69,8 @@ final CrueDaoDPTG res = new CrueDaoDPTG(); // -- liste qui assure d'ajouter une seule référence de profil: car un meme profil peut etre referencé plusieurs // fois - final Set<DonPrtGeoProfilSection> listeProfilUniqueReference = new HashSet<DonPrtGeoProfilSection>(); + final Set<String> doneCasierId = new HashSet<String>(); + final Set<String> doneSectionId = new HashSet<String>(); res.DonPrtGeoProfilSections = new ArrayList<CrueDaoStructureDPTG.ProfilSection>(); res.DonPrtGeoCasiers = new ArrayList<CrueDaoStructureDPTG.AbstractCasier>(); @@ -87,11 +88,11 @@ // -- c'est un profil if (donnee instanceof DonPrtGeoProfilSection) { final DonPrtGeoProfilSection donPrtGeoProfilSection = (DonPrtGeoProfilSection) donnee; - saveDonPrtGeoProfilSection(analyser, res, listeProfilUniqueReference, donPrtGeoProfilSection); + convertMetierToDaoSectionsProfils(donPrtGeoProfilSection, res, analyser, doneSectionId); } else if (donnee instanceof DonPrtGeoProfilCasier) { + convertMetierToDaoCasiersProfils((DonPrtGeoProfilCasier) donnee, res.DonPrtGeoCasiers, analyser, + doneCasierId); - convertMetierToDaoCasiersProfils(res.DonPrtGeoCasiers, (DonPrtGeoProfilCasier) donnee, analyser); - } else if (donnee instanceof DonPrtGeoBatiCasier) { final DonPrtGeoBatiCasier bati = (DonPrtGeoBatiCasier) donnee; final CrueDaoStructureDPTG.BatiCasier batiCasier = new CrueDaoStructureDPTG.BatiCasier(); @@ -113,9 +114,14 @@ List<InfosEMH> infosEMH = metier.getSousModele().getInfosEMH(); final List<DonPrtGeoProfilSection> selectClass = EMHHelper.collectClass(infosEMH, DonPrtGeoProfilSection.class); for (final DonPrtGeoProfilSection donPrtGeoProfilSection : selectClass) { - saveDonPrtGeoProfilSection(analyser, res, listeProfilUniqueReference, donPrtGeoProfilSection); + convertMetierToDaoSectionsProfils(donPrtGeoProfilSection, res, analyser, doneSectionId); } + final List<DonPrtGeoProfilCasier> selectCasier = EMHHelper.collectClass(infosEMH, DonPrtGeoProfilCasier.class); + for (final DonPrtGeoProfilCasier profilCasier : selectCasier) { + convertMetierToDaoCasiersProfils(profilCasier, res.DonPrtGeoCasiers, analyser, doneCasierId); + + } Collections.sort(res.DonPrtGeoBranches, ObjetNommeComparator.INSTANCE); Collections.sort(res.DonPrtGeoCasiers, ObjetNommeComparator.INSTANCE); Collections.sort(res.DonPrtGeoProfilSections, ObjetNommeComparator.INSTANCE); @@ -124,17 +130,17 @@ } /** + * @param in l'objet metier a transformer en dao. + * @param out l'endroit ou sont stockés les DAO * @param analyser le receveur de log - * @param res l'endroit ou sont stockés les DAO * @param uniqueRef la liste permettant d'eviter de restocker 2 fois le meme objets - * @param toSave l'objet metier a transformer en dao. */ - private void saveDonPrtGeoProfilSection(final CtuluAnalyze analyser, final CrueDaoDPTG res, - final Set<DonPrtGeoProfilSection> uniqueRef, final DonPrtGeoProfilSection toSave) { - if (!uniqueRef.contains(toSave)) { - convertMetierToDaoSectionsProfils(res.DonPrtGeoProfilSections, toSave, analyser); + private void convertMetierToDaoSectionsProfils(final DonPrtGeoProfilSection in, final CrueDaoDPTG out, + final CtuluAnalyze analyser, final Set<String> uniqueRef) { + if (!uniqueRef.contains(in.getId())) { + convertMetierToDaoSectionsProfils(in, out.DonPrtGeoProfilSections, analyser); // -- on enregistre la reference --// - uniqueRef.add(toSave); + uniqueRef.add(in.getId()); } } @@ -142,26 +148,25 @@ /** * Remplit la premiere partie du fichier DPTG avec le type d'objet: sections profils. * - * @param listePersistante - * @param prtgeo + * @param in + * @param out * @param analyser */ - private static void convertMetierToDaoSectionsProfils( - final List<CrueDaoStructureDPTG.ProfilSection> listePersistante, final DonPrtGeoProfilSection prtgeo, - final CtuluAnalyze analyser) { + private static void convertMetierToDaoSectionsProfils(final DonPrtGeoProfilSection in, + final List<CrueDaoStructureDPTG.ProfilSection> out, final CtuluAnalyze analyser) { final CrueDaoStructureDPTG.ProfilSection profilPersistant = new CrueDaoStructureDPTG.ProfilSection(); - profilPersistant.Nom = prtgeo.getNom(); - if (prtgeo.getFente() != null) { - profilPersistant.LargeurFente = prtgeo.getFente().getLargeurFente(); - profilPersistant.ProfondeurFente = prtgeo.getFente().getProfondeurFente(); + profilPersistant.Nom = in.getNom(); + if (in.getFente() != null) { + profilPersistant.LargeurFente = in.getFente().getLargeurFente(); + profilPersistant.ProfondeurFente = in.getFente().getProfondeurFente(); } // -- Ecriture des lits numerotes --// - if (prtgeo.getLitNumerote() != null && prtgeo.getLitNumerote().size() > 0) { + if (in.getLitNumerote() != null && in.getLitNumerote().size() > 0) { profilPersistant.LitNumerotes = new ArrayList<CrueDaoStructureDPTG.Lit>(); - for (final LitNumerote litMetier : prtgeo.getLitNumerote()) { + for (final LitNumerote litMetier : in.getLitNumerote()) { final CrueDaoStructureDPTG.Lit litPersist = new CrueDaoStructureDPTG.Lit(); litPersist.IsLitActif = litMetier.getIsLitActif(); litPersist.IsLitMineur = litMetier.getIsLitMineur(); @@ -177,7 +182,7 @@ // -- on ajoute le nom avec un suffixe --// litPersist.Frot.NomRef = litMetier.getFrot().getNom(); } else { - analyser.addInfo("io.dptg.frotForLitNotFound.error", prtgeo.getNom()); + analyser.addInfo("io.dptg.frotForLitNotFound.error", in.getNom()); } // -- ajout du lit persistant --// @@ -185,68 +190,75 @@ } } else { - analyser.addInfo("io.dptg.convert.noLit.error", prtgeo.getNom()); + analyser.addInfo("io.dptg.convert.noLit.error", in.getNom()); } // -- ecriture des series pt --// - if (CollectionUtils.isNotEmpty(prtgeo.getPtProfil())) { + if (CollectionUtils.isNotEmpty(in.getPtProfil())) { profilPersistant.EvolutionFF = new EvolutionFF(); - final List<PtEvolutionFF> pts = new ArrayList<PtEvolutionFF>(prtgeo.getPtProfil().size()); + final List<PtEvolutionFF> pts = new ArrayList<PtEvolutionFF>(in.getPtProfil().size()); profilPersistant.EvolutionFF.setPtEvolutionFF(pts); - for (final PtProfil serie : prtgeo.getPtProfil()) { + for (final PtProfil serie : in.getPtProfil()) { pts.add(new PtEvolutionFF(serie.getYp(), serie.getZ())); } } else { - analyser.addInfo("io.dptg.convert.noProfil.error", prtgeo.getNom()); + analyser.addInfo("io.dptg.convert.noProfil.error", in.getNom()); } // -- ajout du profil persistant --// - listePersistante.add(profilPersistant); + out.add(profilPersistant); } + private static void convertMetierToDaoCasiersProfils(final DonPrtGeoProfilCasier in, + final List<CrueDaoStructureDPTG.AbstractCasier> out, final CtuluAnalyze analyser, Set<String> idDone) { + if (!idDone.contains(in.getId())) { + idDone.add(in.getId()); + convertMetierToDaoCasiersProfils(in, out, analyser); + } + } + /** * Remplit la deuxieme partie du fichier DPTG avec le type d'objet: casiers profils * - * @param listePersistante - * @param prtgeo + * @param in + * @param out * @param analyser */ - private static void convertMetierToDaoCasiersProfils( - final List<CrueDaoStructureDPTG.AbstractCasier> listePersistante, final DonPrtGeoProfilCasier prtgeo, - final CtuluAnalyze analyser) { + private static void convertMetierToDaoCasiersProfils(final DonPrtGeoProfilCasier in, + final List<CrueDaoStructureDPTG.AbstractCasier> out, final CtuluAnalyze analyser) { final CrueDaoStructureDPTG.ProfilCasier profilPersistant = new CrueDaoStructureDPTG.ProfilCasier(); // -- donneee specifique pour le profil casier --// - profilPersistant.Longueur = prtgeo.getLongueur(); + profilPersistant.Longueur = in.getLongueur(); - profilPersistant.Nom = prtgeo.getNom(); + profilPersistant.Nom = in.getNom(); // -- Ecriture du lit utile dans le profil casier --// - if (prtgeo.getLitUtile() != null) { + if (in.getLitUtile() != null) { profilPersistant.LitUtile = new CrueDaoStructureDPTG.LitUtile(); - final org.fudaa.dodico.crue.metier.emh.LitUtile litMetier = prtgeo.getLitUtile(); + final org.fudaa.dodico.crue.metier.emh.LitUtile litMetier = in.getLitUtile(); profilPersistant.LitUtile.LimDeb = litMetier.getLimDeb(); profilPersistant.LitUtile.LimFin = litMetier.getLimFin(); } else { - analyser.addInfo("io.dptg.convert.noLit.error", prtgeo.getNom()); + analyser.addInfo("io.dptg.convert.noLit.error", in.getNom()); } // -- ecriture des series pt --// - if (CollectionUtils.isNotEmpty(prtgeo.getPtProfil())) { + if (CollectionUtils.isNotEmpty(in.getPtProfil())) { profilPersistant.EvolutionFF = new EvolutionFF(); - final List<PtEvolutionFF> pts = new ArrayList<PtEvolutionFF>(prtgeo.getPtProfil().size()); + final List<PtEvolutionFF> pts = new ArrayList<PtEvolutionFF>(in.getPtProfil().size()); profilPersistant.EvolutionFF.setPtEvolutionFF(pts); - for (final PtProfil serie : prtgeo.getPtProfil()) { + for (final PtProfil serie : in.getPtProfil()) { pts.add(new PtEvolutionFF(serie.getYp(), serie.getZ())); } } else { - analyser.addInfo("io.dptg.convert.noProfil.error", prtgeo.getNom()); + analyser.addInfo("io.dptg.convert.noProfil.error", in.getNom()); } // -- ajout du profil persistant --// - listePersistante.add(profilPersistant); + out.add(profilPersistant); } private static void convertMetierToDaoSectionsIdem(final List<CrueDaoStructureDPTG.SectionIdem> listePersistante, @@ -285,6 +297,7 @@ if (profilGeo == null) { profilGeo = new DonPrtGeoProfilSection(); + crueData.registerDefinedSectionProfil(profilGeo); crueData.getSousModele().addInfosEMH(profilGeo); } // else { @@ -379,52 +392,54 @@ // -- on recupere la branche qu'il faut --// final String nomProfil = profilPersist.Nom; // -- on tente de trouver tous les objets referencé par ce profil --// - final DonPrtGeoProfilCasier profilGeo = crueData.getUsedProfilCasier(nomProfil); - if (profilGeo == null) { - analyser.addInfo("io.convert.dptg.profilNotFound.error", nomProfil); - } else { + DonPrtGeoProfilCasier profilCasier = crueData.getUsedProfilCasier(nomProfil); + if (profilCasier == null) { + profilCasier = new DonPrtGeoProfilCasier(crueData.getCruePropertyDefinitionContainer()); + profilCasier.setNom(nomProfil); + crueData.registerDefinedCasierProfil(profilCasier); + crueData.getSousModele().addInfosEMH(profilCasier); + } - // -- on récupére le casier ou le profil et on le stocke dans le emh --// - // final DonPrtGeoProfilCasier profilGeo = new DonPrtGeoProfilCasier(); - // -- donnee particulieres a ProfilCasier --// - profilGeo.setLongueur(profilPersist.Longueur); + // -- on récupére le casier ou le profil et on le stocke dans le emh --// + // final DonPrtGeoProfilCasier profilGeo = new DonPrtGeoProfilCasier(); + // -- donnee particulieres a ProfilCasier --// + profilCasier.setLongueur(profilPersist.Longueur); - // -- on remplit son contenu --// - profilGeo.setNom(profilPersist.Nom); + // -- on remplit son contenu --// + profilCasier.setNom(profilPersist.Nom); - // -- on remplit les litsNommes --// - if (profilPersist.LitUtile != null) { - // final List<LitNumerote> listeLits = new ArrayList<LitNumerote>(); - final CrueDaoStructureDPTG.LitUtile litPersist = profilPersist.LitUtile; + // -- on remplit les litsNommes --// + if (profilPersist.LitUtile != null) { + // final List<LitNumerote> listeLits = new ArrayList<LitNumerote>(); + final CrueDaoStructureDPTG.LitUtile litPersist = profilPersist.LitUtile; - final org.fudaa.dodico.crue.metier.emh.LitUtile litUtileMetier = new org.fudaa.dodico.crue.metier.emh.LitUtile(); - litUtileMetier.setLimDeb(litPersist.LimDeb); - litUtileMetier.setLimFin(litPersist.LimFin); + final org.fudaa.dodico.crue.metier.emh.LitUtile litUtileMetier = new org.fudaa.dodico.crue.metier.emh.LitUtile(); + litUtileMetier.setLimDeb(litPersist.LimDeb); + litUtileMetier.setLimFin(litPersist.LimFin); - // -- ajout de la liste de litNum dans donprtgeo --// - // listeLits.add(litNum); - profilGeo.setLitUtile(litUtileMetier); + // -- ajout de la liste de litNum dans donprtgeo --// + // listeLits.add(litNum); + profilCasier.setLitUtile(litUtileMetier); - } else { - analyser.addInfo("io.dptg.profil.no.lit.num.error", profilPersist.Nom); - } + } else { + analyser.addInfo("io.dptg.profil.no.lit.num.error", profilPersist.Nom); + } - // -- on remplit les séries --// - if (profilPersist.EvolutionFF != null && profilPersist.EvolutionFF.getPtEvolutionFF() != null) { - final List<PtProfil> listeProfils = new ArrayList<PtProfil>(); + // -- on remplit les séries --// + if (profilPersist.EvolutionFF != null && profilPersist.EvolutionFF.getPtEvolutionFF() != null) { + final List<PtProfil> listeProfils = new ArrayList<PtProfil>(); - for (final PtEvolutionFF buff : profilPersist.EvolutionFF.getPtEvolutionFF()) { - listeProfils.add(new PtProfil(buff.getX(), buff.getY())); - } + for (final PtEvolutionFF buff : profilPersist.EvolutionFF.getPtEvolutionFF()) { + listeProfils.add(new PtProfil(buff.getX(), buff.getY())); + } - // -- ajout de la liste de profils dans le donprtgeo --// - profilGeo.setPtProfil(listeProfils); + // -- ajout de la liste de profils dans le donprtgeo --// + profilCasier.setPtProfil(listeProfils); - } else { - analyser.addInfo("io.dptg.convert.noProfil.error", nomProfil); - } + } else { + analyser.addInfo("io.dptg.convert.noProfil.error", nomProfil); + } - } } else if (casier instanceof CrueDaoStructureDPTG.BatiCasier) { final CrueDaoStructureDPTG.BatiCasier bati = (CrueDaoStructureDPTG.BatiCasier) casier; // -- on recupere la branche qu'il faut --// Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterOPTG.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterOPTG.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/dao/CrueConverterOPTG.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -4,6 +4,8 @@ package org.fudaa.dodico.crue.io.dao; import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Map; import org.apache.commons.collections.BidiMap; @@ -22,6 +24,7 @@ import org.fudaa.dodico.crue.metier.emh.Regle; import org.fudaa.dodico.crue.metier.emh.ValParamDouble; import org.fudaa.dodico.crue.metier.emh.ValParamEntier; +import org.fudaa.dodico.crue.metier.helper.RegleTypeComparator; import org.fudaa.dodico.crue.validation.CruePrefix; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,7 +99,9 @@ dao.Regles = new ArrayList<RegleDAO>(); final BidiMap classToEnum = getCorrespondance(); - for (final Regle regleMetier : metier.getRegle()) { + List<Regle> rgs = new ArrayList<Regle>(metier.getRegle()); + Collections.sort(rgs, RegleTypeComparator.INSTANCE); + for (final Regle regleMetier : rgs) { final Class daoClass = (Class) classToEnum.getKey(regleMetier.getType()); RegleDAO reglePersist = null; try { @@ -123,5 +128,4 @@ return dao; } - } Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DHReader.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DHReader.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DHReader.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -887,10 +887,10 @@ int nbEtatPermanent = 0; final int nbColExpected = nbConlim + (dhContainsRuis ? 1 : 0); - DonCLimMScenario scenario = res.getConditionsLim(); - if (scenario == null) { - scenario = new DonCLimMScenario(); - res.setConditionsLim(scenario); + DonCLimMScenario dclmScenario = res.getConditionsLim(); + if (dclmScenario == null) { + dclmScenario = new DonCLimMScenario(); + res.setConditionsLim(dclmScenario); } final List<CalcPseudoPerm> calculsPermanents = new ArrayList<CalcPseudoPerm>(); @@ -1072,7 +1072,7 @@ // reader.readLine(); if (CollectionUtils.isNotEmpty(calculsPermanents)) { - scenario.setCalcPseudoPerm(calculsPermanents); + dclmScenario.setCalcPseudoPerm(calculsPermanents); } if (isFine()) { Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DHWriter.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DHWriter.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/io/neuf/DHWriter.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -37,7 +37,6 @@ import org.fudaa.dodico.crue.metier.emh.CatEMHCasier; import org.fudaa.dodico.crue.metier.emh.CatEMHNoeud; import org.fudaa.dodico.crue.metier.emh.DefaultValues; -import org.fudaa.dodico.crue.metier.emh.DonCLimMScenario; import org.fudaa.dodico.crue.metier.emh.DonCalcSansPrtBrancheSaintVenant; import org.fudaa.dodico.crue.metier.emh.DonCalcSansPrtCasierProfil; import org.fudaa.dodico.crue.metier.emh.DonPrtCIni; @@ -57,6 +56,7 @@ import org.fudaa.dodico.crue.metier.emh.Loi; import org.fudaa.dodico.crue.metier.emh.LoiDF; import org.fudaa.dodico.crue.metier.emh.LoiFF; +import org.fudaa.dodico.crue.metier.emh.OrdCalc; import org.fudaa.dodico.crue.metier.emh.OrdCalcPseudoPermIniCalcReprise; import org.fudaa.dodico.crue.metier.emh.OrdCalcScenario; import org.fudaa.dodico.crue.metier.emh.OrdPrtCIniModeleBase; @@ -187,20 +187,19 @@ final List<CatEMHBranche> branches = EMHHelper.collectEMHActivable(data.getBranches()); final boolean aDonneesGen = containsDPTI(branches); - // On a des données permanentes si au moins un calcul permanent existe dans DCLM - // On a des données transitoires si au moins un calcul transitoire existe dans DCLM - final DonCLimMScenario dclm = data.getConditionsLim(); + // On a des données permanentes si au moins un calcul permanent existe dans OCAL + // On a des données transitoires si au moins un calcul transitoire existe dans OCAL + final OrdCalcScenario ocal = data.getOrdCalc(); boolean modru = false; - if (dclm != null) { - final List<CalcPseudoPerm> calcPseudoPerm = dclm.getCalcPseudoPerm(); - aDonneesPerm = CollectionUtils.isNotEmpty(calcPseudoPerm); - final List<CalcTrans> calcTrans = dclm.getCalcTrans(); - aDonneesTrans = CollectionUtils.isNotEmpty(calcTrans); + if (ocal != null) { + final List<OrdCalc> ordCalc = ocal.getOrdCalc(); + aDonneesPerm = EMHHelper.containsPermanent(ordCalc); + aDonneesTrans = EMHHelper.containsTransitoire(ordCalc); boolean modeLateral = isModeLateral(data); // cru if (modeLateral - && !computeQruisIdentique(coeffsRuisParCalcPerm, calcPseudoPerm, data.getCruePropertyDefinitionContainer())) { return; } + && !computeQruisIdentique(coeffsRuisParCalcPerm, ordCalc, data.getCruePropertyDefinitionContainer())) { return; } // S'il existe au moins un débit de ruissellement pour un calcul permanent on met cru à 1/idem pour cofqrq if (modeLateral && MapUtils.isNotEmpty(coeffsRuisParCalcPerm)) { @@ -244,7 +243,6 @@ } // trepr - final OrdCalcScenario ocal = data.getOrdCalc(); if (ocal != null) { final OrdCalcPseudoPermIniCalcReprise reprise = EMHHelper.selectFirstOfClass(ocal.getOrdCalc(), OrdCalcPseudoPermIniCalcReprise.class); @@ -579,8 +577,9 @@ return res; } - private boolean computeQruisIdentique(final Map<String, Double> coeffsRuisParCalcPerm, - final List<CalcPseudoPerm> calcPseudoPerm, CrueProperties props) { + private boolean computeQruisIdentique(final Map<String, Double> coeffsRuisParCalcPerm, final List<OrdCalc> ordCalcs, + CrueProperties props) { + List<CalcPseudoPerm> calcPseudoPerm = EMHHelper.collectCalcPseudoPerm(ordCalcs); // Pour déterminer s'il existe un coefficient de ruissellement commun pour un calcul permanent, il faut que le // coefficient de chaque branche Saint Venant de ce calcul soit le même. for (int i = 0, imax = calcPseudoPerm.size(); i < imax; i++) { @@ -697,9 +696,9 @@ writeCom(""); writeCom(" Definition des types des conditions aux limites "); - final DonCLimMScenario dclm = data.getConditionsLim(); - if (dclm != null) { - final List<CalcPseudoPerm> calcsPerms = dclm.getCalcPseudoPerm(); + final OrdCalcScenario ocal = data.getOrdCalc(); + if (ocal != null) { + final List<CalcPseudoPerm> calcsPerms = EMHHelper.collectCalcPseudoPerm(ocal.getOrdCalc()); if (CollectionUtils.isNotEmpty(calcsPerms)) { // Hashtable typesCL = new Hashtable(); @@ -944,8 +943,8 @@ writeCom(""); writeCom(" Definition des types des conditions aux limites "); - final DonCLimMScenario dclm = data.getConditionsLim(); - final List<CalcTrans> calcsTrans = dclm.getCalcTrans(); + // final DonCLimMScenario dclm = data.getConditionsLim(); + final List<CalcTrans> calcsTrans = EMHHelper.collectCalcTrans(data.getOrdCalc().getOrdCalc()); if (CollectionUtils.isEmpty(calcsTrans)) { return; } if (calcsTrans.size() > 1) { Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalc.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalc.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalc.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -7,6 +7,15 @@ /** @pdOid 2d1a78e8-7a6f-4820-a7d7-042905bb9e2e */ public abstract class OrdCalc { + /** + * @return true si transitoire + */ + public abstract boolean isTransitoire(); + + public final boolean isPermanent() { + return !isTransitoire(); + } + public abstract Calc getCalc(); public final String getType() { Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalcPerm.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalcPerm.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalcPerm.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -1,10 +1,17 @@ /*********************************************************************** - * Module: OrdCalcPerm.java - * Author: deniger - * Purpose: Defines the Class OrdCalcPerm + * Module: OrdCalcPerm.java Author: deniger Purpose: Defines the Class OrdCalcPerm ***********************************************************************/ package org.fudaa.dodico.crue.metier.emh; /** @pdOid c4f5488c-2bd2-42d0-80f8-bf4c880d7839 */ -public abstract class OrdCalcPerm extends OrdCalc {} \ No newline at end of file +public abstract class OrdCalcPerm extends OrdCalc { + /** + * @return true si transitoire + */ + @Override + public boolean isTransitoire() { + return false; + } + +} \ No newline at end of file Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalcTrans.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalcTrans.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/emh/OrdCalcTrans.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -1,7 +1,5 @@ /*********************************************************************** - * Module: OrdCalcTrans.java - * Author: deniger - * Purpose: Defines the Class OrdCalcTrans + * Module: OrdCalcTrans.java Author: deniger Purpose: Defines the Class OrdCalcTrans ***********************************************************************/ package org.fudaa.dodico.crue.metier.emh; @@ -11,6 +9,14 @@ /** @pdRoleInfo migr=no name=CalcTrans assc=association96 mult=1..1 */ private CalcTrans calcTrans; + /** + * @return true si transitoire + */ + @Override + public boolean isTransitoire() { + return true; + } + /** @pdGenerated default parent getter */ public CalcTrans getCalcTrans() { return calcTrans; Modified: 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/metier/helper/EMHHelper.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/metier/helper/EMHHelper.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -15,6 +15,7 @@ import org.fudaa.dodico.crue.metier.emh.CalcPseudoPerm; import org.fudaa.dodico.crue.metier.emh.CalcPseudoPermBrancheSaintVenantQruis; import org.fudaa.dodico.crue.metier.emh.CalcPseudoPermCasierProfilQruis; +import org.fudaa.dodico.crue.metier.emh.CalcTrans; import org.fudaa.dodico.crue.metier.emh.CatEMHActivable; import org.fudaa.dodico.crue.metier.emh.CatEMHBranche; import org.fudaa.dodico.crue.metier.emh.CatEMHCasier; @@ -27,6 +28,7 @@ import org.fudaa.dodico.crue.metier.emh.DonPrtCIni; import org.fudaa.dodico.crue.metier.emh.DonPrtGeo; import org.fudaa.dodico.crue.metier.emh.DonPrtGeoNomme; +import org.fudaa.dodico.crue.metier.emh.DonPrtGeoProfilCasier; import org.fudaa.dodico.crue.metier.emh.DonPrtGeoProfilSection; import org.fudaa.dodico.crue.metier.emh.EMH; import org.fudaa.dodico.crue.metier.emh.EMHModeleBase; @@ -38,6 +40,7 @@ import org.fudaa.dodico.crue.metier.emh.EnumTypeEMH; import org.fudaa.dodico.crue.metier.emh.InfosEMH; import org.fudaa.dodico.crue.metier.emh.ObjetNomme; +import org.fudaa.dodico.crue.metier.emh.OrdCalc; import org.fudaa.dodico.crue.metier.emh.RelationEMH; import org.fudaa.dodico.crue.metier.emh.RelationEMHBrancheContientNoeud; import org.fudaa.dodico.crue.metier.emh.RelationEMHCasierDansNoeud; @@ -73,7 +76,81 @@ } } + public static final class OrdCalToCalc implements Transformer { + public Object transform(final Object input) { + return ((OrdCalc) input).getCalc(); + } + } + + public static final class OrdCalcIsTransitoire implements Predicate { + + public boolean evaluate(final Object object) { + return ((OrdCalc) object).isTransitoire(); + } + } + + public static final class OrdCalcIsPermanent implements Predicate { + public boolean evaluate(final Object object) { + return ((OrdCalc) object).isPermanent(); + } + } + + public static final class OrdCalcIsPseudoPermanent implements Predicate { + public boolean evaluate(final Object object) { + return ((OrdCalc) object).isPermanent() && ((OrdCalc) object).getCalc() instanceof CalcPseudoPerm; + } + } + /** + * @author deniger return true si l'ordCalc possede un calcul de type CalcTrans. + */ + public static final class OrdCalcIsCalcTrans implements Predicate { + public boolean evaluate(final Object object) { + return ((OrdCalc) object).isTransitoire() && ((OrdCalc) object).getCalc() instanceof CalcTrans; + } + } + + /** + * @param in + * @return true si la collection contient au moins un ordre de calcul transitoire + */ + public static boolean containsTransitoire(final Collection<OrdCalc> in) { + return CollectionUtils.exists(in, new OrdCalcIsTransitoire()); + } + + /** + * @param in + * @return true si la collection contient au moins un ordre de calcul transitoire + */ + public static List<CalcPseudoPerm> collectCalcPseudoPerm(final Collection<OrdCalc> in) { + if (in == null) { return null; } + final Collection select = CollectionUtils.select(in, new OrdCalcIsPseudoPermanent()); + final List<CalcPseudoPerm> res = new ArrayList<CalcPseudoPerm>(select.size()); + CollectionUtils.collect(select, new OrdCalToCalc(), res); + return res; + } + + /** + * @param in + * @return true si la collection contient au moins un ordre de calcul transitoire + */ + public static List<CalcTrans> collectCalcTrans(final Collection<OrdCalc> in) { + if (in == null) { return null; } + final Collection select = CollectionUtils.select(in, new OrdCalcIsCalcTrans()); + final List<CalcTrans> res = new ArrayList<CalcTrans>(select.size()); + CollectionUtils.collect(select, new OrdCalToCalc(), res); + return res; + } + + /** + * @param in + * @return true si la collection contient au moins un ordre de calcul permanent + */ + public static boolean containsPermanent(final Collection<OrdCalc> in) { + return CollectionUtils.exists(in, new OrdCalcIsPermanent()); + } + + /** * @author deniger */ public static final class TransformerRelationToEMH implements Transformer { @@ -508,7 +585,8 @@ * @return le noeud associe */ public static CatEMHNoeud getNoeudCasier(final CatEMHCasier emh) { - RelationEMHNoeudContientCasier rel = selectFirstOfClass(emh.getRelationEMH(), RelationEMHNoeudContientCasier.class); + final RelationEMHNoeudContientCasier rel = selectFirstOfClass(emh.getRelationEMH(), + RelationEMHNoeudContientCasier.class); return rel == null ? null : rel.getEmh(); } @@ -536,11 +614,11 @@ * @param classOfRelation la classe de la relation cherchée * @return la collection voulue. */ - public static <T extends RelationEMH> Collection<T> selectRelationOfType(final EMH emh, Class<T> classOfRelation) { + public static <T extends RelationEMH> Collection<T> selectRelationOfType(final EMH emh, final Class<T> classOfRelation) { if (CollectionUtils.isEmpty(emh.getRelationEMH())) { return Collections.emptyList(); } final EMHHelperPredicate.PredicateRelationEMHContientId pred = new EMHHelperPredicate.PredicateRelationEMHContientId( null, classOfRelation, null); - Collection<T> res = new ArrayList<T>(emh.getRelationEMH().size()); + final Collection<T> res = new ArrayList<T>(emh.getRelationEMH().size()); CollectionUtils.select(emh.getRelationEMH(), pred, res); return res; } @@ -608,10 +686,8 @@ res.addAllRelations(collectClass(sousModele.getRelationEMH(), RelationEMHContient.class)); res.getFrtConteneur().addAllFrt(sousModele.getFrtConteneur().getListFrt()); - // on ajoute les DonPrtGeoProfilSection stockées dans le sous-modele ( le non-utilises). - final List<DonPrtGeoProfilSection> selectClass = EMHHelper.collectClass(sousModele.getInfosEMH(), - DonPrtGeoProfilSection.class); - res.addAllInfos(selectClass); + res.addAllInfos(EMHHelper.collectClass(sousModele.getInfosEMH(), DonPrtGeoProfilSection.class)); + res.addAllInfos(EMHHelper.collectClass(sousModele.getInfosEMH(), DonPrtGeoProfilCasier.class)); } res.sort(); @@ -649,7 +725,7 @@ * @param distance la distance actuelle * @return l'entier a utiliser pour diviser la distance afin de créer des profils distancés de moins de distmax. */ - public static int getDistDiviseurForDistMax(final double distmax, double distance) { + public static int getDistDiviseurForDistMax(final double distmax, final double distance) { return (int) Math.ceil(distance / distmax); } @@ -658,10 +734,10 @@ * @param props * @return null si different ou si pas de CalcPseudoPerm*Qruis */ - public static Double isQruisConstant(final CalcPseudoPerm calcPerm, CrueProperties props) { + public static Double isQruisConstant(final CalcPseudoPerm calcPerm, final CrueProperties props) { final List<CalcPseudoPermBrancheSaintVenantQruis> calcQruis = calcPerm.getCalcPseudoPermBrancheSaintVenantQruis(); final List<CalcPseudoPermCasierProfilQruis> calcCasierQruis = calcPerm.getCalcPseudoPermCasierProfilQruis(); - double eps = props.getEpsilon("qRuis"); + final double eps = props.getEpsilon("qRuis"); if (CollectionUtils.isNotEmpty(calcQruis) || CollectionUtils.isNotEmpty(calcCasierQruis)) { double qruis = 0; boolean qruisSet = false; Modified: trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/validation/ValidateEMHProperties.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/validation/ValidateEMHProperties.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/main/java/org/fudaa/dodico/crue/validation/ValidateEMHProperties.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -24,7 +24,6 @@ import org.fudaa.dodico.crue.metier.emh.CatEMHBranche; import org.fudaa.dodico.crue.metier.emh.CatEMHNoeud; import org.fudaa.dodico.crue.metier.emh.CatEMHSection; -import org.fudaa.dodico.crue.metier.emh.DonCLimMScenario; import org.fudaa.dodico.crue.metier.emh.DonCalcSansPrtBrancheBarrageFilEau; import org.fudaa.dodico.crue.metier.emh.DonCalcSansPrtBrancheBarrageGenerique; import org.fudaa.dodico.crue.metier.emh.DonCalcSansPrtBrancheNiveauxAssocies; @@ -72,6 +71,7 @@ import org.fudaa.dodico.crue.metier.emh.LoiDF; import org.fudaa.dodico.crue.metier.emh.LoiFF; import org.fudaa.dodico.crue.metier.emh.ObjetNomme; +import org.fudaa.dodico.crue.metier.emh.OrdCalcScenario; import org.fudaa.dodico.crue.metier.emh.OrdPrtGeoModeleBase; import org.fudaa.dodico.crue.metier.emh.OrdResScenario; import org.fudaa.dodico.crue.metier.emh.ParamCalcScenario; @@ -207,9 +207,9 @@ } private void computeQruis(final Object o) { - if (!(o instanceof DonCLimMScenario)) { return; } - final DonCLimMScenario clim = (DonCLimMScenario) o; - final List<CalcPseudoPerm> calcPseudoPerm = clim.getCalcPseudoPerm(); + if (!(o instanceof OrdCalcScenario)) { return; } + final OrdCalcScenario ocal = (OrdCalcScenario) o; + final List<CalcPseudoPerm> calcPseudoPerm = EMHHelper.collectCalcPseudoPerm(ocal.getOrdCalc()); for (final CalcPseudoPerm calcPerm : calcPseudoPerm) { // Il faut au moins une branche saint venant pour considérer qu'il y a un débit de ruissellement (identique) final List<CalcPseudoPermBrancheSaintVenantQruis> calcQruis = calcPerm Modified: trunk/soft/fudaa-crue/dodico/src/test/java/org/fudaa/dodico/crue/io/common/TestCrueDataImpl.java =================================================================== --- trunk/soft/fudaa-crue/dodico/src/test/java/org/fudaa/dodico/crue/io/common/TestCrueDataImpl.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/dodico/src/test/java/org/fudaa/dodico/crue/io/common/TestCrueDataImpl.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -20,7 +20,7 @@ * Test du conteneur de lois. */ public void testAddLoi() { - final CrueDataImpl impl = new CrueDataImpl(CrueLoaderPropertiesDefault.DEFAULT); + final CrueData impl = new CrueDataImpl(CrueLoaderPropertiesDefault.DEFAULT); final List<Loi> lois = new ArrayList<Loi>(); lois.add(new LoiDF()); impl.getLoiConteneur().addAllLois(lois); Modified: trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/builder/EMHManagerBuilder.java =================================================================== --- trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/builder/EMHManagerBuilder.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/builder/EMHManagerBuilder.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -71,7 +71,7 @@ final Object entryValue = entry.getValue(); final boolean isLitNumerote = "litNumerote".equals(name); - final boolean isFente = "fente".equals(name); + final boolean isFente = "fente".equals(name) && entryValue != null; final boolean isPtProfil = "ptProfil".equals(name); final boolean isOrdCalc = "ordCalc".equals(name); final boolean isRegle = "regle".equals(name); @@ -96,9 +96,6 @@ && !isFente && !isParamNumCalc && isCollectOrIterator(entryValue)) { continue; } - if (entryValue instanceof Iterator) { - System.err.println("stop"); - } final boolean isObjetNomme = entryValue instanceof ObjetNomme; String value = null; if (isPtProfil) { Modified: 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/explorer/CrueLauncher.java 2010-03-01 00:33:40 UTC (rev 5698) +++ trunk/soft/fudaa-crue/fudaa/src/main/java/org/fudaa/fudaa/crue/explorer/CrueLauncher.java 2010-03-01 22:27:37 UTC (rev 5699) @@ -76,8 +76,8 @@ infoCrue_.banner = new BuIcon(pathLogo); // infoCrue_.logo = new BuIcon(pathLogo); infoCrue_.name = "Fudaa-Crue"; - infoCrue_.version = "0.17"; - infoCrue_.date = "26-Fevrier-2010"; + infoCrue_.version = "0.18"; + infoCrue_.date = "01-Mars-2010"; infoCrue_.rights = ""; infoCrue_.contact = "fu...@ge..."; infoCrue_.license = "GPL2"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |