|
From: <de...@us...> - 2012-10-15 10:16:16
|
Revision: 7743
http://fudaa.svn.sourceforge.net/fudaa/?rev=7743&view=rev
Author: deniger
Date: 2012-10-15 10:16:05 +0000 (Mon, 15 Oct 2012)
Log Message:
-----------
Ajout test unitaire pour CRUE-317
Modified Paths:
--------------
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/ScenarioLoaderCrue10.java
trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoaderCrue10Result.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/metier/helper/TestEMHHelper.java
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-10-15 09:39:38 UTC (rev 7742)
+++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoader.java 2012-10-15 10:16:05 UTC (rev 7743)
@@ -109,8 +109,8 @@
emhScenario = new ScenarioLoaderCrue9(scenario, readFileBilan, coeur, prevalidation).compute(files, resFiles, modifiedState);
} else {
File runDir = run == null ? null : projet.getDirForRun(scenario, run);
- emhScenario = new ScenarioLoaderCrue10(scenario, readFileBilan, coeur, prevalidation).compute(files, resFiles,
- runDir);
+ emhScenario = new ScenarioLoaderCrue10(projet, scenario, readFileBilan, prevalidation).compute(files, resFiles,
+ runDir, run);
}
}
if (emhScenario == null) {
Modified: trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoaderCrue10.java
===================================================================
--- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoaderCrue10.java 2012-10-15 09:39:38 UTC (rev 7742)
+++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoaderCrue10.java 2012-10-15 10:16:05 UTC (rev 7743)
@@ -31,6 +31,8 @@
import org.fudaa.dodico.crue.metier.emh.EMHNoeudFactory;
import org.fudaa.dodico.crue.metier.emh.EMHScenario;
import org.fudaa.dodico.crue.metier.emh.EMHSousModele;
+import org.fudaa.dodico.crue.metier.etude.EMHProjet;
+import org.fudaa.dodico.crue.metier.etude.EMHRun;
import org.fudaa.dodico.crue.metier.etude.FichierCrue;
import org.fudaa.dodico.crue.metier.etude.ManagerEMHContainerBase;
import org.fudaa.dodico.crue.metier.etude.ManagerEMHModeleBase;
@@ -53,26 +55,36 @@
private final OrdonnanceurCrue10 ordonnanceurCrue10 = new OrdonnanceurCrue10();
private final CoeurConfigContrat coeur;
private final ManagerEMHScenario scenario;
+ private final EMHProjet projet;
/**
* @param scenario
* @param errorMng
* @param analyzer
*/
- protected ScenarioLoaderCrue10(final ManagerEMHScenario scenario, final CtuluLogGroup errorMng, final CoeurConfigContrat coeur,
+ protected ScenarioLoaderCrue10(EMHProjet projet, final ManagerEMHScenario scenario, final CtuluLogGroup errorMng,
final CtuluLog analyzer) {
super();
this.scenario = scenario;
- this.coeur = coeur;
+ this.projet = projet;
+ this.coeur = projet.getCoeurConfig();
this.errorMng = errorMng;
this.analyzer = analyzer;
}
+ protected EMHProjet getProjet() {
+ return projet;
+ }
+
+ protected ManagerEMHScenario getScenario() {
+ return scenario;
+ }
+
public CoeurConfigContrat getCoeur() {
return coeur;
}
- protected EMHScenario compute(final Map<String, File> files, Map<String, File> resFiles, File runDir) {
+ protected EMHScenario compute(final Map<String, File> files, Map<String, File> resFiles, File runDir, EMHRun run) {
Collection<File> values = files.values();
for (File file : values) {
VersionResult findVersion = Crue10FileFormatFactory.findVersion(file);
@@ -93,34 +105,15 @@
}
EMHScenario emhScenario = ordonnanceChargementCrue10(files, coeur.getXsdVersion());
if (emhScenario != null && !analyzer.containsSevereError() && MapUtils.isNotEmpty(resFiles)) {
- loadResFiles(resFiles, emhScenario, runDir);
+ loadResFiles(resFiles, emhScenario, runDir, run);
}
return emhScenario;
}
- public long getLastModification(EMHModeleBase modele) {
- return getLastModification(scenario.getManagerFils(modele.getId()));
-
- }
-
- public long getLastModification(ManagerEMHModeleBase modele) {
- long lastModification = lastModificationByEMHId.get(modele.getId()).longValue();
- final List<ManagerEMHSousModele> fils = modele.getFils();
- for (ManagerEMHSousModele managerEMHSousModele : fils) {
- if (managerEMHSousModele.isActive()) {
- long lastModificationInSousModele = lastModificationByEMHId.get(managerEMHSousModele.getId());
- if (lastModificationInSousModele > lastModification) {
- lastModification = lastModificationInSousModele;
- }
- }
- }
- return lastModification;
- }
-
- private void loadResFiles(Map<String, File> resFiles, EMHScenario emhScenario, File runDir) {
+ private void loadResFiles(Map<String, File> resFiles, EMHScenario emhScenario, File runDir, EMHRun run) {
// chargement de rptr et rpti par modele
final CtuluLogGroup logs = errorMng.createGroup("load.resFile");
- ScenarioLoaderCrue10Result crue10ResultLoader = new ScenarioLoaderCrue10Result(this, emhScenario, logs, resFiles);
+ ScenarioLoaderCrue10Result crue10ResultLoader = new ScenarioLoaderCrue10Result(this, emhScenario, logs, resFiles, run);
for (EMHModeleBase modele : emhScenario.getModeles()) {
if (modele.getActuallyActive()) {
crue10ResultLoader.loadResultats(modele);
Modified: trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoaderCrue10Result.java
===================================================================
--- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoaderCrue10Result.java 2012-10-15 09:39:38 UTC (rev 7742)
+++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/ScenarioLoaderCrue10Result.java 2012-10-15 10:16:05 UTC (rev 7743)
@@ -6,6 +6,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.collections.CollectionUtils;
@@ -42,8 +43,11 @@
import org.fudaa.dodico.crue.metier.emh.ResultatCalcul;
import org.fudaa.dodico.crue.metier.emh.ResultatKey;
import org.fudaa.dodico.crue.metier.emh.ResultatPasDeTemps;
+import org.fudaa.dodico.crue.metier.etude.EMHRun;
import org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario;
+import org.fudaa.dodico.crue.metier.etude.RunFile;
import org.fudaa.dodico.crue.projet.coeur.CoeurConfigContrat;
+import org.fudaa.dodico.crue.projet.create.RunPredecessorFileFinder;
import org.fudaa.dodico.crue.validation.ValidatorResultatCrue10BinaryFile;
import org.fudaa.dodico.crue.validation.ValidatorResultatCrue10CalculInactif;
import org.fudaa.dodico.crue.validation.ValidatorResultatCrue10EMHActive;
@@ -60,33 +64,59 @@
private final EMHScenario emhScenario;
private final CoeurConfigContrat coeur;
private final ScenarioLoaderCrue10 crue10Loader;
+ private final RunPredecessorFileFinder predecessorFinder;
+ private final Map<String, RunFile> runFileById;
+ private final Map<String, File> inputFiles;
public static final String STDOUTCSV_NAME = "stdout.csv";
final CtuluLog prevalidationLog;
public ScenarioLoaderCrue10Result(ScenarioLoaderCrue10 crue10Loader, EMHScenario emhScenario,
- CtuluLogGroup logsGroup, Map<String, File> resFiles) {
+ CtuluLogGroup logsGroup, Map<String, File> resFiles, EMHRun run) {
this.logsGroup = logsGroup;
prevalidationLog = logsGroup.createNewLog("load.crue10.resultFiles.prevalidation");
this.resFiles = resFiles;
this.emhScenario = emhScenario;
this.coeur = crue10Loader.getCoeur();
this.crue10Loader = crue10Loader;
+ runFileById = crue10Loader.getProjet().getRunFilesResultat(crue10Loader.getScenario(), run);
+ inputFiles = crue10Loader.getProjet().getInputFiles(crue10Loader.getScenario(), run);
+ predecessorFinder = new RunPredecessorFileFinder(crue10Loader.getScenario(), runFileById.values());
}
public void loadResultats(EMHModeleBase modele) {
- long lastModification = crue10Loader.getLastModification(modele);
CrueData crueData = CrueDataImpl.buildConcatFor(emhScenario, modele, coeur.getCrueConfigMetier());
- loadRPTR(modele, crueData, lastModification);
- loadRPTG(modele, crueData, lastModification);
- loadRPTI(modele, crueData, lastModification);
- loadRCAL(modele, crueData, lastModification);
+
+ loadRPTR(modele, crueData);
+ loadRPTG(modele, crueData);
+ loadRPTI(modele, crueData);
+ loadRCAL(modele, crueData);
loadLogs(modele);
}
- void loadRPTR(EMHModeleBase modele, CrueData crueData, long lastModification) {
- File rptr = resFiles.get(ManagerEMHScenario.getResKey(modele, CrueFileType.RPTR));
+ private long getLastModifiedPredecessor(EMHModeleBase modele, CrueFileType type) {
+ final String resKey = ManagerEMHScenario.getResKey(modele, type);
+ RunFile runFile = runFileById.get(resKey);
+ Set<String> predecessorFile = predecessorFinder.getPredecessorFile(runFile);
+ long res = -1;
+ for (String fileId : predecessorFile) {
+ File file = inputFiles.get(fileId);
+ if (file != null && file.exists()) {
+ res = Math.max(res, file.lastModified());
+ }
+ RunFile inputRunFile = predecessorFinder.getRunFile(fileId);
+ if (inputRunFile != null && inputRunFile.getFile() != null && inputRunFile.getFile().exists()) {
+ res = Math.max(res, inputRunFile.getFile().lastModified());
+ }
+ }
+ return res;
+ }
+
+ void loadRPTR(EMHModeleBase modele, CrueData crueData) {
+ final String resKey = ManagerEMHScenario.getResKey(modele, CrueFileType.RPTR);
+ File rptr = resFiles.get(resKey);
if (CtuluLibFile.exists(rptr)) {
+ long lastModification = getLastModifiedPredecessor(modele, CrueFileType.RPTR);
if (rptr.lastModified() < lastModification) {
prevalidationLog.addSevereError("load.rptrFile.cancelledBecauseTooOld");
} else {
@@ -96,9 +126,10 @@
}
}
- void loadRCAL(EMHModeleBase modele, CrueData crueData, long lastModification) {
+ void loadRCAL(EMHModeleBase modele, CrueData crueData) {
File rcal = resFiles.get(ManagerEMHScenario.getResKey(modele, CrueFileType.RCAL));
if (CtuluLibFile.exists(rcal)) {
+ long lastModification = getLastModifiedPredecessor(modele, CrueFileType.RCAL);
if (rcal.lastModified() < lastModification) {
prevalidationLog.addSevereError("load.rcalFile.cancelledBecauseTooOld");
} else {
@@ -131,13 +162,13 @@
//toutes les EMHS actives doivent être présentes dans RCAL
ValidatorResultatCrue10EMHActive validatorEMHActive = new ValidatorResultatCrue10EMHActive();
CtuluLog validOnlyEMHActiveAreActiveLog = validatorEMHActive.validActiveEMHPresentInRes(categories, modele,
- CtuluLogLevel.SEVERE);
+ CtuluLogLevel.SEVERE);
addLog(validOnlyEMHActiveAreActiveLog, rcalGroup);
ValidatorResultatCrue10BinaryFile validatorBinaryFile = new ValidatorResultatCrue10BinaryFile();
Crue10ResultatPasDeTempsDelegate timeDelegate = new Crue10ResultatPasDeTempsDelegate(timeStepExtracted.getOrderedKey(),
- timeStepExtracted.getEntries());
+ timeStepExtracted.getEntries());
CtuluLog validBinaryFile = validatorBinaryFile.validBinaryFile(timeDelegate.getEntries().values(), categories,
- timeStepExtracted.getDelimiteurs());
+ timeStepExtracted.getDelimiteurs());
addLog(validBinaryFile, logsGroup);
CtuluLog logAssociation = new CtuluLog(BusinessMessages.RESOURCE_BUNDLE);
@@ -160,7 +191,7 @@
String emhType = emh.getEmhType();
String typeDefined = type.getEmhType();
logAssociation.addSevereError("load.rcal.emhTypeNonCompatible.error", emhType,
- typeDefined);
+ typeDefined);
continue;
}
if (!emh.getActuallyActive()) {
@@ -174,8 +205,8 @@
}
int length = emhDef.getNbrMot() * res.getParametrage().getNbrOctetMot();
ResultatCalculCrue10 resultatCalcul = new ResultatCalculCrue10(type.getItemPositionInBytes(nom),
- length, emhVariables, timeDelegate,
- emh.getEmhType(), emh.getId());
+ length, emhVariables, timeDelegate,
+ emh.getEmhType(), emh.getId());
emh.addInfosEMH(new ResultatCalcul(emh, resultatCalcul));
}
}
@@ -210,9 +241,10 @@
}
- void loadRPTG(EMHModeleBase modele, CrueData crueData, long lastModification) {
+ void loadRPTG(EMHModeleBase modele, CrueData crueData) {
File rptg = resFiles.get(ManagerEMHScenario.getResKey(modele, CrueFileType.RPTG));
if (CtuluLibFile.exists(rptg)) {
+ long lastModification = getLastModifiedPredecessor(modele, CrueFileType.RPTG);
if (rptg.lastModified() < lastModification) {//TODO à vérifier
prevalidationLog.addSevereError("load.rptgFile.cancelledBecauseTooOld");
} else {
@@ -254,11 +286,11 @@
ValidatorResultatCrue10EMHActive validatorEMHActive = new ValidatorResultatCrue10EMHActive();
//toutes les EMHs doivent être déclarées dans le fichier RPTR:
CtuluLog validOnlyEMHActiveAreActiveLog = validatorEMHActive.validAllEMHPresentInRes(categories, modele,
- CtuluLogLevel.SEVERE);
+ CtuluLogLevel.SEVERE);
addLog(validOnlyEMHActiveAreActiveLog, rptgGroup);
ValidatorResultatCrue10BinaryFile validatorBinaryFile = new ValidatorResultatCrue10BinaryFile();
CtuluLog validBinaryFile = validatorBinaryFile.validBinaryFile(Arrays.asList(entry), categories,
- delimiteurs);
+ delimiteurs);
addLog(validBinaryFile, logsGroup);
CtuluLog logAssociation = new CtuluLog(BusinessMessages.RESOURCE_BUNDLE);
logAssociation.setDesc("load.rptg.associationEMH");
@@ -280,7 +312,7 @@
String emhType = emh.getEmhType();
String typeDefined = type.getEmhType();
logAssociation.addSevereError("load.emhTypeNonCompatible.error", emh.getNom(), emhType,
- typeDefined);
+ typeDefined);
continue;
}
ResVariablesContent emhVariables = typeVariables;
@@ -291,8 +323,8 @@
int length = emhDef.getNbrMot() * res.getParametrage().getNbrOctetMot();
ResultatCalculCrue10 resultatCalcul = new ResultatCalculCrue10(type.getItemPositionInBytes(nom),
- length, emhVariables, rptgPasDeTemps,
- emh.getEmhType(), emh.getId());
+ length, emhVariables, rptgPasDeTemps,
+ emh.getEmhType(), emh.getId());
Map<String, Object> readData = null;
try {
readData = resultatCalcul.read(key);
@@ -319,9 +351,10 @@
}
}
- private CrueData loadRPTI(EMHModeleBase modele, CrueData crueData, long lastModification) {
+ private CrueData loadRPTI(EMHModeleBase modele, CrueData crueData) {
File rpti = resFiles.get(ManagerEMHScenario.getResKey(modele, CrueFileType.RPTI));
if (CtuluLibFile.exists(rpti)) {
+ long lastModification = getLastModifiedPredecessor(modele, CrueFileType.RPTI);
if (rpti.lastModified() < lastModification) {
prevalidationLog.addError("load.rptiFile.cancelledBecauseTooOld");
} else {
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-10-15 09:39:38 UTC (rev 7742)
+++ trunk/soft/fudaa-crue/crue-server/src/main/resources/org/fudaa/dodico/crue/common/businessMessages.properties 2012-10-15 10:16:05 UTC (rev 7743)
@@ -468,10 +468,10 @@
load.resFile = Lecture des fichiers de r\u00e9sultats
load.stoFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier STO est plus ancien que le fichier DC
load.strFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier STR est plus ancien que le fichier DC
-load.rptiFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier RPTI est plus ancien que les fichiers du mod\u00e8le
-load.rptrFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier RPTR est plus ancien que les fichiers du mod\u00e8le
-load.rcalFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier RCAL est plus ancien que les fichiers du mod\u00e8le
-load.rptgFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier RPTG est plus ancien que les fichiers du mod\u00e8le
+load.rptiFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier RPTI est plus ancien que ses fichiers pr\u00e9d\u00e9cesseurs
+load.rptrFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier RPTR est plus ancien que ses fichiers pr\u00e9d\u00e9cesseurs
+load.rcalFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier RCAL est plus ancien que ses fichiers pr\u00e9d\u00e9cesseurs
+load.rptgFile.cancelledBecauseTooOld = Le chargement des fichiers de r\u00e9sultats n'a pas \u00e9t\u00e9 effectu\u00e9 car le fichier RPTG est plus ancien que ses fichiers pr\u00e9d\u00e9cesseurs
load.strFile.notDone = Le chargement du fichier STR n'a pas \u00e9t\u00e9 effectu\u00e9. Les donn\u00e9es ne seront pas charg\u00e9es en m\u00e9moire.
load.strFile.noExist = Le fichier STR {0} n''existe pas
Modified: trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/metier/helper/TestEMHHelper.java
===================================================================
--- trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/metier/helper/TestEMHHelper.java 2012-10-15 09:39:38 UTC (rev 7742)
+++ trunk/soft/fudaa-crue/crue-server/src/test/java/org/fudaa/dodico/crue/metier/helper/TestEMHHelper.java 2012-10-15 10:16:05 UTC (rev 7743)
@@ -50,7 +50,7 @@
relationSectionExpected.add(createRelationBranche(0.3, EnumPosSection.AVAL));
// la liste qui sera retrié avec le comparateur:
final List<RelationEMHSectionDansBranche> relationSectionRetrie = new ArrayList<RelationEMHSectionDansBranche>(
- relationSectionExpected);
+ relationSectionExpected);
Collections.shuffle(relationSectionRetrie);
// cas tordu ou le shuffle ne fonctionne pas correctement et renvoie la meme liste.
if (relationSectionExpected.equals(relationSectionRetrie)) {
@@ -60,12 +60,13 @@
}
// avant le tri, les 2 collections ne sont pas égales
assertFalse(relationSectionRetrie.equals(relationSectionExpected));
- Collections.sort(relationSectionRetrie, new ComparatorRelationEMHSectionDansBranche(new PropertyEpsilon(.001,.001)));
+ Collections.sort(relationSectionRetrie, new ComparatorRelationEMHSectionDansBranche(new PropertyEpsilon(.001, .001)));
// le tri remet le tout dans l'ordre attendu:
assertTrue(relationSectionRetrie.equals(relationSectionExpected));
}
+
private RelationEMHSectionDansBranche createRelationBranche(final double xp, final EnumPosSection position) {
final RelationEMHSectionDansBranche res = new RelationEMHSectionDansBranche();
res.setXp(xp);
@@ -73,5 +74,4 @@
return res;
}
-
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|