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