From: <de...@us...> - 2012-06-14 21:12:21
|
Revision: 7340 http://fudaa.svn.sourceforge.net/fudaa/?rev=7340&view=rev Author: deniger Date: 2012-06-14 21:12:15 +0000 (Thu, 14 Jun 2012) Log Message: ----------- Modified Paths: -------------- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/io/neuf/DCFileReader.java trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java trunk/soft/fudaa-crue/crue-server/src/main/resources/org/fudaa/dodico/crue/common/businessMessages.properties trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/io/ReadHelper.java trunk/soft/fudaa-crue/ui-modelling/src/test/java/org/fudaa/fudaa/crue/modelling/ModellingTestHelper.java Added Paths: ----------- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/validation/ValidatorSousModeleContent.java trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/validation/TestValidatorSousModeleContent.java Modified: trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/io/neuf/DCFileReader.java =================================================================== --- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/io/neuf/DCFileReader.java 2012-06-14 19:21:35 UTC (rev 7339) +++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/io/neuf/DCFileReader.java 2012-06-14 21:12:15 UTC (rev 7340) @@ -92,6 +92,7 @@ import com.thoughtworks.xstream.converters.SingleValueConverter; import org.fudaa.dodico.crue.config.SeveriteManager; +import org.fudaa.dodico.crue.metier.emh.RelationEMHDansSousModele; /** * Reader pour le format DC crue 9. @@ -2438,6 +2439,7 @@ } } } + newSection.addRelationEMH(new RelationEMHDansSousModele(metier.getSousModele())); // on met a jour les relations. final Collection<RelationEMHBrancheContientSection> findRelationOfType = EMHHelper.selectRelationOfType( sectionToreplace, RelationEMHBrancheContientSection.class); Modified: trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java =================================================================== --- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java 2012-06-14 19:21:35 UTC (rev 7339) +++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java 2012-06-14 21:12:15 UTC (rev 7340) @@ -29,6 +29,7 @@ import org.fudaa.dodico.crue.validation.ValidatorForValuesAndContents; import org.fudaa.dodico.crue.validation.ValidationHelper; import org.fudaa.dodico.crue.validation.ValidatorNumberOfData; +import org.fudaa.dodico.crue.validation.ValidatorSousModeleContent; /** * Classe qui se charge de charger en memoire un scénario donné. @@ -147,6 +148,7 @@ } validators.add(new ValidatorForValuesAndContents(crueConfigMetier)); validators.add(new ValidatorNumberOfData(crueConfigMetier)); + validators.add(new ValidatorSousModeleContent()); ValidationHelper.validateAll(validationBilan, emhScenario, validators); return validationBilan; } Added: trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/validation/ValidatorSousModeleContent.java =================================================================== --- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/validation/ValidatorSousModeleContent.java (rev 0) +++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/validation/ValidatorSousModeleContent.java 2012-06-14 21:12:15 UTC (rev 7340) @@ -0,0 +1,137 @@ +package org.fudaa.dodico.crue.validation; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import org.apache.commons.lang.StringUtils; +import org.fudaa.ctulu.CtuluLog; +import org.fudaa.dodico.crue.common.BusinessMessages; +import org.fudaa.dodico.crue.metier.emh.CatEMHBranche; +import org.fudaa.dodico.crue.metier.emh.CatEMHCasier; +import org.fudaa.dodico.crue.metier.emh.CatEMHNoeud; +import org.fudaa.dodico.crue.metier.emh.CatEMHSection; +import org.fudaa.dodico.crue.metier.emh.EMH; +import org.fudaa.dodico.crue.metier.emh.EMHModeleBase; +import org.fudaa.dodico.crue.metier.emh.EMHScenario; +import org.fudaa.dodico.crue.metier.emh.EMHSousModele; +import org.fudaa.dodico.crue.metier.emh.RelationEMHSectionDansBranche; +import org.fudaa.dodico.crue.metier.transformer.TransformerHelper; + +/** + * + * @author deniger ( genesis) + */ +public class ValidatorSousModeleContent implements CrueValidator { + + @Override + public List<CtuluLog> getLogs() { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void validCasier(CatEMHCasier casier, + Set<String> nodesId, CtuluLog error) { + CatEMHNoeud noeud = casier.getNoeud(); + if (noeud != null && !nodesId.contains(noeud.getId())) { + error.addSevereError("validation.sousModeleContent.NoeudForCasierNotContained", casier.getNom(), noeud.getNom()); + } + } + + public void validSection(CatEMHSection section, + Set<String> branchesId, CtuluLog error) { + List<CatEMHBranche> branchesForSection = section.getBranches(); + for (CatEMHBranche catEMHBranche : branchesForSection) { + if (!branchesId.contains(catEMHBranche.getId())) { + error.addSevereError("validation.sousModeleContent.BrancheForSectionNotContained", section.getNom(), + catEMHBranche.getNom()); + } + } + } + + @Override + public void validate(Set<Object> childs, EMH emh, EMHModeleBase modeleBase) { + throw new UnsupportedOperationException("Not supported yet."); + } + + public void validateBranche(CatEMHBranche branche, + Set<String> nodesId, CtuluLog error) { + CatEMHNoeud noeudAmont = branche.getNoeudAmont(); + String noeudAmontId = noeudAmont.getId(); + if (!nodesId.contains(noeudAmontId)) { + error.addSevereError("validation.sousModeleContent.NoeudAmontNotContained", branche.getNom(), noeudAmont.getNom()); + } + CatEMHNoeud noeudAval = branche.getNoeudAval(); + String noeudAvalId = noeudAval.getId(); + if (!nodesId.contains(noeudAvalId)) { + error.addSevereError("validation.sousModeleContent.NoeudAvalNotContained", branche.getNom(), noeudAval.getNom()); + } + String sousModeleId = branche.getParent().getId(); + List<RelationEMHSectionDansBranche> sections = branche.getSections(); + for (RelationEMHSectionDansBranche relationEMHSectionDansBranche : sections) { + final CatEMHSection emh = relationEMHSectionDansBranche.getEmh(); + if (emh == null || emh.getParent() == null) { + System.err.println("aie"); + } + String sectionSousModeleId = emh.getParent().getId(); + if (!StringUtils.equals(sousModeleId, sectionSousModeleId)) { + error.addSevereError("validation.sousModeleContent.sectionNotContained", branche.getNom(), + relationEMHSectionDansBranche.getEmh().getNom()); + } + + } + } + + @Override + public List<CtuluLog> validateScenario(EMHScenario scenario) { + List<CtuluLog> res = new ArrayList<CtuluLog>(); + List<EMHSousModele> sousModeles = scenario.getSousModeles(); + for (EMHSousModele sousModele : sousModeles) { + CtuluLog log = validateSousModele(sousModele); + if (log != null) { + res.add(log); + } + } + return res; + } + + private CtuluLog validateSousModele(EMHSousModele sousModele) { + CtuluLog error = new CtuluLog(BusinessMessages.RESOURCE_BUNDLE); + error.setDesc("validation.sousModeleContent"); + error.setDescriptionArgs(sousModele.getNom()); + final List<CatEMHNoeud> noeuds = sousModele.getNoeuds(); + Set<String> nodesId = TransformerHelper.toSetOfId(noeuds); + List<CatEMHBranche> branches = sousModele.getBranches(); + for (CatEMHBranche branche : branches) { + validateBranche(branche, nodesId, error); + } + List<CatEMHCasier> casiers = sousModele.getCasiers(); + for (CatEMHCasier casier : casiers) { + validCasier(casier, nodesId, error); + } + List<CatEMHSection> sections = sousModele.getSections(); + Set<String> branchesId = TransformerHelper.toSetOfId(branches); + for (CatEMHSection section : sections) { + validSection(section, branchesId, error); + } + for (CatEMHNoeud noeud : noeuds) { + Set<String> parentIds = TransformerHelper.toSetOfId(noeud.getParents()); + List<CatEMHBranche> branchesOfNode = noeud.getBranches(); + for (CatEMHBranche branche : branchesOfNode) { + if (!parentIds.contains(branche.getParent().getId())) { + error.addSevereError("validation.sousModeleContent.BrancheForNodeNotContained", noeud.getNom(), branche.getNom()); + } + } + CatEMHCasier casier = noeud.getCasier(); + if (casier != null && !parentIds.contains(casier.getParent().getId())) { + error.addSevereError("validation.sousModeleContent.CasierForNodeNotContained", noeud.getNom(), casier.getNom()); + } + + + } + + if (error.isNotEmpty()) { + return error; + } + return null; + + } +} Modified: trunk/soft/fudaa-crue/crue-server/src/main/resources/org/fudaa/dodico/crue/common/businessMessages.properties =================================================================== --- trunk/soft/fudaa-crue/crue-server/src/main/resources/org/fudaa/dodico/crue/common/businessMessages.properties 2012-06-14 19:21:35 UTC (rev 7339) +++ trunk/soft/fudaa-crue/crue-server/src/main/resources/org/fudaa/dodico/crue/common/businessMessages.properties 2012-06-14 21:12:15 UTC (rev 7340) @@ -334,6 +334,15 @@ validation.ord.NotNormal = L''ordonn\u00e9e du point {0} n''est pas normale. validation.ord.NotValid = L''ordonn\u00e9e du point {0} n''est pas valide. +validation.sousModeleContent=Validation contenu du contenu du sous-mod\u00e8le {0} +validation.sousModeleContent.NoeudAmontNotContained=Branche {0}: le noeud amont {1} n''appartient pas au sous-mod\u00e8le +validation.sousModeleContent.NoeudAvalNotContained=Branche {0}: le noeud aval {1} n''appartient pas au sous-mod\u00e8le +validation.sousModeleContent.sectionNotContained=Branche {0}: la section {1} n''appartient pas au sous-mod\u00e8le +validation.sousModeleContent.NoeudForCasierNotContained=Casier {0}: le noeud {1} n''appartient pas au sous-mod\u00e8le +validation.sousModeleContent.BrancheForSectionNotContained=Section {0}: la branche {1} n''appartient pas au sous-mod\u00e8le +validation.sousModeleContent.BrancheForNodeNotContained=Noeud {0}: la branche {1} n''appartient pas au(x) sous-mod\u00e9le(s) du noeud +validation.sousModeleContent.CasierForNodeNotContained=Noeud {0}: le casier {1} n''appartient pas au(x) sous-mod\u00e9le(s) du noeud + valide.relation = RelationEMH avec {0} valid.validationNumberOfData=Validation du nombre de donn\u00e9es valid.noLois=La liste de lois est vide. Modified: trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/io/ReadHelper.java =================================================================== --- trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/io/ReadHelper.java 2012-06-14 19:21:35 UTC (rev 7339) +++ trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/io/ReadHelper.java 2012-06-14 21:12:15 UTC (rev 7340) @@ -32,6 +32,18 @@ EMHRelationFactory.addRelationContientEMH(modele, ioData.getMetier().getSousModele()); } + public static EMHScenario readModeleAnsSetRelation(final CtuluLog analyzer, final String dcPath, final String dhPath) { + final CrueData res = readModele(analyzer, dcPath, dhPath).getMetier(); + res.getScenarioData().setNom("Sc_Test"); + res.getModele().setNom("Mo_Toto"); + res.getSousModele().setNom(CruePrefix.changePrefix(res.getModele().getNom(), CruePrefix.P_MODELE, CruePrefix.P_SS_MODELE)); + EMHScenario emhScenario = res.getScenarioData(); + EMHRelationFactory.addRelationContientEMH(emhScenario, res.getModele()); + EMHRelationFactory.addRelationContientEMH(res.getModele(), res.getSousModele()); + return emhScenario; + + } + public static CrueIOResu<CrueData> readModele(final CtuluLog analyzer, final String dcPath, final String dhPath) { final CrueData data = TestCrueDC.readModeleCrue9(analyzer, dcPath); final CrueIOResu<CrueData> read = Crue9FileFormatFactory.getDHFileFormat().read(dhPath, analyzer, data); Added: trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/validation/TestValidatorSousModeleContent.java =================================================================== --- trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/validation/TestValidatorSousModeleContent.java (rev 0) +++ trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/validation/TestValidatorSousModeleContent.java 2012-06-14 21:12:15 UTC (rev 7340) @@ -0,0 +1,55 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.fudaa.dodico.crue.validation; + +import java.util.Arrays; +import java.util.List; +import org.fudaa.ctulu.CtuluLog; +import org.fudaa.dodico.crue.io.ReadHelper; +import org.fudaa.dodico.crue.io.TestCrueDC; +import org.fudaa.dodico.crue.io.TestCrueDH; +import org.fudaa.dodico.crue.metier.emh.EMHScenario; +import org.fudaa.dodico.crue.metier.emh.EMHSectionIdem; +import org.fudaa.dodico.crue.metier.emh.EMHSousModele; +import org.fudaa.dodico.crue.metier.emh.RelationEMHSectionDansBranche; +import org.fudaa.dodico.crue.metier.factory.EMHRelationFactory; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * + * @author deniger ( genesis) + */ +public class TestValidatorSousModeleContent { + + public TestValidatorSousModeleContent() { + } + + @Test + public void testIsValid() { + EMHScenario scenario = ReadHelper.readModeleAnsSetRelation(new CtuluLog(), TestCrueDC.FICHIER_TEST_MODELE3_DC, + TestCrueDH.FICHIER_TEST_MODELE3_DH); + ValidatorSousModeleContent validator = new ValidatorSousModeleContent(); + List<CtuluLog> validateScenario = validator.validateScenario(scenario); + assertTrue(validateScenario.isEmpty()); + } + + @Test + public void testSectionOut() { + EMHScenario scenario = ReadHelper.readModeleAnsSetRelation(new CtuluLog(), TestCrueDC.FICHIER_TEST_MODELE3_DC, + TestCrueDH.FICHIER_TEST_MODELE3_DH); + EMHSectionIdem id = new EMHSectionIdem("test"); + EMHSousModele sousModele = new EMHSousModele(null); + RelationEMHSectionDansBranche relationSection = new RelationEMHSectionDansBranche(); + relationSection.setEmh(id); + EMHRelationFactory.addRelationContientEMH(sousModele, id); + scenario.getBranches().get(0).addListeSections(Arrays.asList(relationSection)); + ValidatorSousModeleContent validator = new ValidatorSousModeleContent(); + List<CtuluLog> validateScenario = validator.validateScenario(scenario); + assertEquals(1, validateScenario.size()); + assertEquals(1, validateScenario.get(0).getRecords().size()); + assertEquals("validation.sousModeleContent.sectionNotContained", validateScenario.get(0).getRecords().get(0).getMsg()); + } +} Modified: trunk/soft/fudaa-crue/ui-modelling/src/test/java/org/fudaa/fudaa/crue/modelling/ModellingTestHelper.java =================================================================== --- trunk/soft/fudaa-crue/ui-modelling/src/test/java/org/fudaa/fudaa/crue/modelling/ModellingTestHelper.java 2012-06-14 19:21:35 UTC (rev 7339) +++ trunk/soft/fudaa-crue/ui-modelling/src/test/java/org/fudaa/fudaa/crue/modelling/ModellingTestHelper.java 2012-06-14 21:12:15 UTC (rev 7340) @@ -6,16 +6,11 @@ import org.fudaa.dodico.crue.io.ReadHelper; import org.fudaa.dodico.crue.io.TestCrueDC; import org.fudaa.dodico.crue.io.TestCrueDH; -import org.fudaa.dodico.crue.io.common.CrueData; -import org.fudaa.dodico.crue.io.common.CrueIOResu; import org.fudaa.dodico.crue.metier.emh.EMHScenario; import org.fudaa.dodico.crue.metier.emh.EMHSousModele; import org.fudaa.dodico.crue.metier.emh.IdRegistry; import org.fudaa.dodico.crue.metier.etude.EMHProjet; -import org.fudaa.dodico.crue.metier.factory.CruePrefix; -import org.fudaa.dodico.crue.metier.factory.EMHRelationFactory; import org.fudaa.dodico.crue.projet.coeur.TestCoeurConfig; -import org.fudaa.fudaa.crue.common.services.ModellingScenarioService; import org.fudaa.fudaa.crue.modelling.services.ModellingScenarioServiceImpl; import org.openide.util.Lookup; @@ -28,15 +23,8 @@ public static EMHScenario readScenario() { ModellingScenarioServiceImpl modellingScenarioService = Lookup.getDefault().lookup(ModellingScenarioServiceImpl.class); - CrueIOResu<CrueData> readModele = ReadHelper.readModele(new CtuluLog(), TestCrueDC.FICHIER_TEST_MODELE3_DC, - TestCrueDH.FICHIER_TEST_MODELE3_DH); - final CrueData res = readModele.getMetier(); - res.getScenarioData().setNom("Sc_Test"); - res.getModele().setNom("Mo_Toto"); - res.getSousModele().setNom(CruePrefix.changePrefix(res.getModele().getNom(), CruePrefix.P_MODELE, CruePrefix.P_SS_MODELE)); - EMHScenario emhScenario = res.getScenarioData(); - EMHRelationFactory.addRelationContientEMH(emhScenario, res.getModele()); - EMHRelationFactory.addRelationContientEMH(res.getModele(), res.getSousModele()); + EMHScenario emhScenario = ReadHelper.readModeleAnsSetRelation(new CtuluLog(), TestCrueDC.FICHIER_TEST_MODELE3_DC, + TestCrueDH.FICHIER_TEST_MODELE3_DH); IdRegistry registry = new IdRegistry(); registry.registerAll(emhScenario); emhScenario.setIdRegistry(registry); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |