From: <de...@us...> - 2014-06-10 22:27:25
|
Revision: 8762 http://sourceforge.net/p/fudaa/svn/8762 Author: deniger Date: 2014-06-10 22:27:20 +0000 (Tue, 10 Jun 2014) Log Message: ----------- CRUE-648 Modified Paths: -------------- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioRunCleaner.java trunk/soft/fudaa-crue/crue-validation/src/main/java/org/fudaa/dodico/crue/validation/ValidateAndRebuildProfilSection.java trunk/soft/fudaa-crue/crue-validation/src/test/java/org/fudaa/dodico/crue/validation/ValidateAndRebuildProfilSectionTest.java trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ScenarioLoaderServiceAbstract.java trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiUiController.java Added Paths: ----------- trunk/soft/fudaa-crue/crue-validation/src/test/resources/ trunk/soft/fudaa-crue/crue-validation/src/test/resources/KiPlantePas_c9.dc trunk/soft/fudaa-crue/crue-validation/src/test/resources/KiPlantePas_c9.dh Modified: trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioRunCleaner.java =================================================================== --- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioRunCleaner.java 2014-06-09 21:22:31 UTC (rev 8761) +++ trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/projet/ScenarioRunCleaner.java 2014-06-10 22:27:20 UTC (rev 8762) @@ -49,7 +49,13 @@ return toDelete; } File dirOfRuns = projet.getInfos().getDirOfRuns(); + if (dirOfRuns == null) { + return toDelete; + } File[] listFilesScenarios = dirOfRuns.listFiles(); + if (listFilesScenarios == null) { + return toDelete; + } for (File scenarioFile : listFilesScenarios) { if (scenarioFile.isDirectory()) { if (expectedScenarioDir.contains(scenarioFile.getAbsolutePath())) { Modified: trunk/soft/fudaa-crue/crue-validation/src/main/java/org/fudaa/dodico/crue/validation/ValidateAndRebuildProfilSection.java =================================================================== --- trunk/soft/fudaa-crue/crue-validation/src/main/java/org/fudaa/dodico/crue/validation/ValidateAndRebuildProfilSection.java 2014-06-09 21:22:31 UTC (rev 8761) +++ trunk/soft/fudaa-crue/crue-validation/src/main/java/org/fudaa/dodico/crue/validation/ValidateAndRebuildProfilSection.java 2014-06-10 22:27:20 UTC (rev 8762) @@ -590,7 +590,7 @@ // tous les lits actifs sont parcourus dans l'ordre et le dernier point rencontré avec la cote la plus basse est choisi. CrueConfigMetierLitNomme litNomme = props.getLitNomme(); for (LitNommeIndexed litNommeIndexed : litNommes) { - if (litNomme.isActif(litNommeIndexed.getLitNomme())) { + if (litNommeIndexed.getLitNumerotesSize() > 0 && litNomme.isActif(litNommeIndexed.getLitNomme())) { for (int i = litNommeIndexed.getFirstIdx(); i <= litNommeIndexed.getlastIdx(); i++) { double z = section.getPtProfil().get(i).getZ(); if (foundIdx < 0 || z <= minZ) { Modified: trunk/soft/fudaa-crue/crue-validation/src/test/java/org/fudaa/dodico/crue/validation/ValidateAndRebuildProfilSectionTest.java =================================================================== --- trunk/soft/fudaa-crue/crue-validation/src/test/java/org/fudaa/dodico/crue/validation/ValidateAndRebuildProfilSectionTest.java 2014-06-09 21:22:31 UTC (rev 8761) +++ trunk/soft/fudaa-crue/crue-validation/src/test/java/org/fudaa/dodico/crue/validation/ValidateAndRebuildProfilSectionTest.java 2014-06-10 22:27:20 UTC (rev 8762) @@ -24,6 +24,8 @@ import org.fudaa.dodico.crue.metier.emh.LitNumerote; import org.fudaa.dodico.crue.metier.helper.DonPrtHelper; import org.fudaa.dodico.crue.metier.helper.EtiquetteIndexed; +import org.fudaa.dodico.crue.metier.helper.LitNommeIndexed; +import org.fudaa.dodico.crue.metier.helper.LitNumeroteIndex; import org.fudaa.dodico.crue.test.AbstractTestCase; /** @@ -81,11 +83,13 @@ assertDoubleEquals(66d, axeHyd.getPoint().getXt()); assertDoubleEquals(0.5d, axeHyd.getPoint().getZ()); ScenarioAutoModifiedState modifiedState = new ScenarioAutoModifiedState(); - CrueIOResu<List<EtiquetteIndexed>> etiquettesAsIndexed = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, modifiedState).getEtiquettesAsIndexed(profilSection); + CrueIOResu<List<EtiquetteIndexed>> etiquettesAsIndexed = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, + modifiedState).getEtiquettesAsIndexed(profilSection); assertTrue(etiquettesAsIndexed.getAnalyse().isEmpty()); List<EtiquetteIndexed> etiquettesList = etiquettesAsIndexed.getMetier(); assertEquals(2, etiquettesList.size()); - assertEquals(CrueConfigMetierLoaderDefaultTest.DEFAULT.getLitNomme().getEtiquetteThalweg(), etiquettesList.get(0).getEtiquette().getTypeEtiquette()); + assertEquals(CrueConfigMetierLoaderDefaultTest.DEFAULT.getLitNomme().getEtiquetteThalweg(), etiquettesList.get(0).getEtiquette(). + getTypeEtiquette()); assertEquals(5, etiquettesList.get(0).getIdx()); assertEquals(CrueConfigMetierLoaderDefaultTest.DEFAULT.getLitNomme().getEtiquetteAxeHyd(), etiquettesList.get(1).getEtiquette().getTypeEtiquette()); assertEquals(4, etiquettesList.get(1).getIdx()); @@ -99,7 +103,8 @@ thalweg.setPoint(profilSection.getPtProfil().get(0)); profilSection.setEtiquettes(Arrays.asList(thalweg)); ScenarioAutoModifiedState modifiedState = new ScenarioAutoModifiedState(); - CtuluLog log = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, modifiedState).validateAndRebuildDonPrtGeoProfilSection(profilSection); + CtuluLog log = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, modifiedState). + validateAndRebuildDonPrtGeoProfilSection(profilSection); assertTrue(log.containsSevereError()); CtuluLogRecord record = log.getRecords().get(0); assertEquals("validate.thalweg.NotInLitMineur.Fente", record.getMsg()); @@ -108,7 +113,8 @@ axeHyd.setTypeEtiquette(CrueConfigMetierLoaderDefaultTest.DEFAULT.getLitNomme().getEtiquetteAxeHyd()); axeHyd.setPoint(profilSection.getPtProfil().get(0)); profilSection.setEtiquettes(Arrays.asList(thalweg, axeHyd)); - log = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, modifiedState).validateAndRebuildDonPrtGeoProfilSection(profilSection); + log = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, modifiedState).validateAndRebuildDonPrtGeoProfilSection( + profilSection); assertTrue(log.containsSevereError()); assertEquals(2, log.getRecords().size()); record = log.getRecords().get(0); @@ -126,13 +132,28 @@ etiquettes.add(etiquettes.get(0));//on definit l'étiquette thalweg 2 fois. profilSection.setEtiquettes(etiquettes); ScenarioAutoModifiedState modifiedState = new ScenarioAutoModifiedState(); - CtuluLog log = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, modifiedState).validateAndRebuildDonPrtGeoProfilSection(profilSection); + CtuluLog log = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, modifiedState). + validateAndRebuildDonPrtGeoProfilSection(profilSection); assertTrue(log.containsSevereError()); CtuluLogRecord record = log.getRecords().get(0); assertEquals("validate.etiquette.definedSeveralTimes", record.getMsg()); assertEquals(CrueConfigMetierLoaderDefaultTest.DEFAULT.getLitNomme().getEtiquetteThalweg().geti18n(), record.getArgs()[0]); assertEquals(Integer.toString(2), record.getArgs()[1]); + } + public void testJIRA648KiPlantePas() { + final EMHSectionProfil sectionProfil = getSectionProfil("PCC2", "/KiPlantePas_c9.dc", "/KiPlantePas_c9.dh"); + assertNotNull(sectionProfil); + ScenarioAutoModifiedState modifiedState = new ScenarioAutoModifiedState(); + ValidateAndRebuildProfilSection rebuilder = new ValidateAndRebuildProfilSection(CrueConfigMetierLoaderDefaultTest.DEFAULT, modifiedState); + List<LitNommeIndexed> asIndexedData = rebuilder.getAsIndexedData(DonPrtHelper.getProfilSection(sectionProfil)).getMetier(); + final LitNommeIndexed first = asIndexedData.get(0); + final LitNumeroteIndex litNumeroteIndex = first.getLitNumeroteIndex(0); + assertEquals("FkSto_K0", litNumeroteIndex.getLitNumerote().getFrotId()); + int idxStart = litNumeroteIndex.getIdxStart(); + int idxEnd = litNumeroteIndex.getIdxEnd(); + assertEquals(0, idxStart); + assertEquals(0, idxEnd); } protected EMHSectionProfil getSectionProfil() { @@ -143,9 +164,14 @@ return getSectionProfil("St_PROF2"); } - private EMHSectionProfil getSectionProfil(final String sectionName) { + private static EMHSectionProfil getSectionProfil(final String sectionName) { + return getSectionProfil(sectionName, "/crue9/201.dc", "/crue9/201.dh"); + + } + + private static EMHSectionProfil getSectionProfil(final String sectionName, String dc, String dh) { CtuluLog log = new CtuluLog(); - CrueIOResu<CrueData> read = ReadHelper.readModeleAndDefaultORES(log, "/crue9/201.dc", "/crue9/201.dh"); + CrueIOResu<CrueData> read = ReadHelper.readModeleAndDefaultORES(log, dc, dh); assertFalse(log.containsErrorOrSevereError()); EMHScenario scenario = read.getMetier().getScenarioData(); assertNotNull(scenario); Added: trunk/soft/fudaa-crue/crue-validation/src/test/resources/KiPlantePas_c9.dc =================================================================== --- trunk/soft/fudaa-crue/crue-validation/src/test/resources/KiPlantePas_c9.dc (rev 0) +++ trunk/soft/fudaa-crue/crue-validation/src/test/resources/KiPlantePas_c9.dc 2014-06-10 22:27:20 UTC (rev 8762) @@ -0,0 +1,103 @@ +* +TITRE CrueX - Structuration des donn\xE9es +TITRE +TITRE Mod\xE8le de test utilisant une unique branche de Saint-Venant +TITRE +TITRE NJB +* +* +* Configuration generale +ZREF 0.0 +COEFF 1.0 0.75 1 +* DECAL +R_DECAL 0.2 +* LARG_SEUIL +R_SLARGE 100.0 +* PDX_MAX +R_DXMAX 200.0 +* PENTE_MAX +R_PENMAX 1.0 +* PENTE_RUPTURE +R_RUPENT 1.0E-5 +* PROF_PLAT +R_PRPLAT 0.01 +* REB_DEB +R_REBDEB +* VAR_PDX_MAX +R_VDXMAX 1 +* +* +* Definition des Noeuds +NOEUD Nd_N1 Nd_N2 +* +* +* Definition des Branches +* +BRANCHE Br_B1 Nd_N1 Nd_N2 20 +*PROF St_PROF1 St_PROF2 St_PROF3 +PROF PCC1 PCC2 +DISTANCE 100.0 100.0 +CPOND 0.5 0.5 +CDIV 0.0 0.0 +CCONV 0.0 0.0 +RUIS 1.0 +* Coeff SINUO DPTG CRUE 10: 1.0. Ce coef vaut 'longeur Lit Mineur/Longueur Lit Majeur' avec Longueur Mineur= longueur branche +SINUO 200.0 200.0 +* +* +* Definition des Frottements +STRIREF FkSto_K0 0.0 +* +STRIREFZ PCC1MAJ 0.00 10 50.00 15 +STRIREFZ PCC1MIN 0.00 10 50.00 15 +* +STRIREFZ PCC2MAJ 0.00 10 50.00 15 +STRIREFZ PCC2MIN 0.00 10 50.00 15 +* +* +* +* Definition des Profils +* +PROFIL PCC1 +LIMITEJ 1 1 1 4 4 4 +STRIC FkSto_K0 PCC1MAJ PCC1MIN PCC1MAJ FkSto_K0 +X/Z 0.00 30.00 0.01 17.15 5.35 17.15 5.36 30.00 +ACTIF 3 +LIT MINEUR 3 +* +PROFIL PCC2 +LIMITEJ 1 1 2 3 4 4 +STRIC FkSto_K0 PCC2MAJ pcc2MIN PCC2MIN FkSto_K0 +X/Z 0.00 30.00 0.01 17.15 5.35 17.15 5.36 30.00 +ACTIF 3 +LIT MINEUR 3 +* +* Avec FCv1.1, la conversion c9 de PCC2 donne le r\xE9sultat ci-dessous : +*PROFIL St_PCC2 +*LIMITEJ 1 2 2 3 3 4 +*STRIC Fk_PCC2MAJ FkSto_K0 Fk_PCC2MIN FkSto_K0 Fk_PCC2MIN +*X/Z 0.0 30.0 0.01 17.15 5.35 17.15 +*X/Z 5.36 30.0 +*ACTIF 2 3 4 +*LIT Lt_MajD 2 +*LIT Lt_MajG 4 +*LIT Lt_Mineur 3 +*LIT Lt_StoD 1 +*LIT Lt_StoG 5 +* +* Elle devrait donner le r\xE9sultat ci-dessous, tout en produisant \xE0 chaque chargement des erreurs non bloquantes (frottements non-nuls sur des lits de stockage). +* FCv1.1 d\xE9place tr\xE8s bizarrement les frottements et rend actives des portions du profil qui ne l'\xE9taient pas dans la d\xE9finition initiale de l'utilisateur, ce qu'il ne faut surtout pas faire. +* Il faut en fait r\xE9soudre le probl\xE8me en ajoutant des lits vides dans le lit actif pour Lt_MajD et Lt_MajG. +*PROFIL St_PCC2 +*LIMITEJ 1 1 2 2 3 3 4 4 +*STRIC FkSto_K0 Fk_PCC2MAJ Fk_PCC2MIN Fk_PCC2MIN Fk_PCC2MIN Fk_PCC2MAJ FkSto_K0 +*X/Z 0.0 30.0 0.01 17.15 5.35 17.15 +*X/Z 5.36 30.0 +*ACTIF 3 4 5 +*LIT Lt_MajD 3 +*LIT Lt_MajG 5 +*LIT Lt_Mineur 4 +*LIT Lt_StoD 1 2 +*LIT Lt_StoG 6 7 +* +* Definition des Casiers Added: trunk/soft/fudaa-crue/crue-validation/src/test/resources/KiPlantePas_c9.dh =================================================================== --- trunk/soft/fudaa-crue/crue-validation/src/test/resources/KiPlantePas_c9.dh (rev 0) +++ trunk/soft/fudaa-crue/crue-validation/src/test/resources/KiPlantePas_c9.dh 2014-06-10 22:27:20 UTC (rev 8762) @@ -0,0 +1,38 @@ +* +* Donnees generales +* +CrueX - Structuration des donn\xE9es + +Mod\xE8le de test utilisant les \xE9l\xE9ments de mod\xE9lisation hydraulique les plus courants + +NJB +* +SEUIL_FROUDE 1E+30 1.0 +COEFF_RELAX_DQ 1.0 +COEFF_RELAX_DZ 1.0 +NB_COURANT_MAX 1E+30 1E+30 +* +* ical cru cofqrq isorti ile trepr +1 0.0 0 1 1 0 0 0 0 +* +* Debits initiaux dans les branches +Br_B1 125.0 +FIN +* +* Niveaux initiaux aux noeuds +Nd_N1 3.68 Nd_N2 3.67 +FIN +* +* Donnees pseudo-permanentes +* +* dtperm tolz tolq icalmx iprint ndecou +0 1 0 0 0.0010 0.01 40 0 1 +* +* Definition des types des conditions aux limites +Nd_N1 2 +Nd_N2 1 +FIN +* +* Valeurs des conditions aux limites (regimes pseudo-permanents) +125.0 3.5 +FIN Modified: trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ScenarioLoaderServiceAbstract.java =================================================================== --- trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ScenarioLoaderServiceAbstract.java 2014-06-09 21:22:31 UTC (rev 8761) +++ trunk/soft/fudaa-crue/ui-loader/src/main/java/org/fudaa/fudaa/crue/loader/ScenarioLoaderServiceAbstract.java 2014-06-10 22:27:20 UTC (rev 8762) @@ -103,7 +103,7 @@ EventQueue.invokeLater(new Runnable() { @Override public void run() { - final EMHScenario result = load.getResult(); + final EMHScenario result = load == null ? null : load.getResult(); if (result != null) { service.activePerspective(perspectiveToActive); unloadScenario(); Modified: trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiUiController.java =================================================================== --- trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiUiController.java 2014-06-09 21:22:31 UTC (rev 8761) +++ trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiUiController.java 2014-06-10 22:27:20 UTC (rev 8762) @@ -361,6 +361,9 @@ int limiteIdx = 0; model.getLoiLine(litNommes.get(0).getFirstIdx()).addEtiquette(etiquettesByLimites.get(limites.get(limiteIdx++))); for (LitNommeIndexed litNommeIndexed : litNommes) { + if (litNommeIndexed.getLitNumerotesSize() == 0) { + continue; + } int last = litNommeIndexed.getlastIdx(); ProfilSectionEtiquette litNommeEtiquette = etiquettesByLimites.get(limites.get(limiteIdx++)); model.getLoiLine(last).addEtiquette(litNommeEtiquette); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |