|
From: <de...@us...> - 2012-05-02 22:16:44
|
Revision: 7143
http://fudaa.svn.sourceforge.net/fudaa/?rev=7143&view=rev
Author: deniger
Date: 2012-05-02 22:16:37 +0000 (Wed, 02 May 2012)
Log Message:
-----------
CRUE-117
Modified Paths:
--------------
trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/metier/etude/EMHProjet.java
trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/calcul/Crue9Exec.java
trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreator.java
trunk/soft/fudaa-crue/crue-server/src/main/resources/org/fudaa/dodico/crue/common/businessMessages.properties
trunk/soft/fudaa-crue/ui-post/src/main/java/org/fudaa/fudaa/crue/post/services/CrueRunLauncherServiceImpl.java
Modified: trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/metier/etude/EMHProjet.java
===================================================================
--- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/metier/etude/EMHProjet.java 2012-05-02 21:54:07 UTC (rev 7142)
+++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/metier/etude/EMHProjet.java 2012-05-02 22:16:37 UTC (rev 7143)
@@ -138,6 +138,11 @@
return new File(dirOfRun, modele.getNom());
}
+ public File getDirForRunModele(final ManagerEMHScenario scenarioCrue, ManagerEMHModeleBase modele, final EMHRun run) {
+ final File dirOfRun = getDirForRun(scenarioCrue, run);
+ return new File(dirOfRun, modele.getNom());
+ }
+
/**
* @return l'association idFichier->File pour les fichier d'etude
*/
Modified: trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/calcul/Crue9Exec.java
===================================================================
--- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/calcul/Crue9Exec.java 2012-05-02 21:54:07 UTC (rev 7142)
+++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/calcul/Crue9Exec.java 2012-05-02 22:16:37 UTC (rev 7143)
@@ -67,7 +67,7 @@
replace.put("@DC@", getSansExtensionAndUpperCase(dc));
if (!CtuluLibFile.replaceAndCopyFile(template, datFile, replace, null)) {
getUI().error(DodicoLib.getS("Copie de fichier"),
- DodicoLib.getS("Erreur lors de la création du fichier {0} ", datFile.getAbsolutePath()), false);
+ DodicoLib.getS("Erreur lors de la création du fichier {0} ", datFile.getAbsolutePath()), false);
return false;
}
@@ -88,7 +88,7 @@
}
private String getSansExtensionAndUpperCase(final File file) {
- return new File(file.getParentFile(), CtuluLibFile.getSansExtension(file.getName()).toUpperCase()).getAbsolutePath();
+ return CtuluLibFile.getSansExtension(file.getName()).toUpperCase();
}
protected boolean launch(CExecListener listener) {
Modified: trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreator.java
===================================================================
--- trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreator.java 2012-05-02 21:54:07 UTC (rev 7142)
+++ trunk/soft/fudaa-crue/crue-server/src/main/java/org/fudaa/dodico/crue/projet/create/RunCreator.java 2012-05-02 22:16:37 UTC (rev 7143)
@@ -5,6 +5,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -12,14 +13,19 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang.StringUtils;
+import org.fudaa.ctulu.CtuluLibFile;
+import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.CtuluLog;
import org.fudaa.dodico.crue.common.BusinessMessages;
import org.fudaa.dodico.crue.common.ConnexionInformation;
import org.fudaa.dodico.crue.common.CrueFileHelper;
import org.fudaa.dodico.crue.common.CrueOperationResult;
+import org.fudaa.dodico.crue.io.common.CrueFileType;
+import org.fudaa.dodico.crue.metier.emh.EMHModeleBase;
import org.fudaa.dodico.crue.metier.etude.EMHInfosVersion;
import org.fudaa.dodico.crue.metier.etude.EMHProjet;
import org.fudaa.dodico.crue.metier.etude.EMHRun;
+import org.fudaa.dodico.crue.metier.etude.ManagerEMHModeleBase;
import org.fudaa.dodico.crue.metier.etude.ManagerEMHScenario;
import org.fudaa.dodico.crue.metier.etude.RunFile;
import org.fudaa.dodico.crue.metier.factory.CruePrefix;
@@ -48,6 +54,77 @@
return runNamePattern;
}
+ private void copyLinkedCrue9Files(ManagerEMHScenario scenario, CtuluLog log, EMHRun newRun) {
+ if (scenario.isCrue10() && scenario.getLinkedscenarioCrue9() != null) {
+ ManagerEMHScenario linkedScenarioCrue9 = projet.getScenario(scenario.getLinkedscenarioCrue9());
+ if (linkedScenarioCrue9 == null) {
+ log.addWarn("create.runCreator.linkedScenarioCrue9.cantFind", scenario.getLinkedscenarioCrue9());
+ } else if (linkedScenarioCrue9.getRunCourant() == null) {
+ log.addWarn("create.runCreator.linkedScenarioCrue9.noRunCourant", scenario.getLinkedscenarioCrue9());
+ } else {
+ File dirForRunModeleCrue9 = projet.getDirForRunModeleCrue9(linkedScenarioCrue9, linkedScenarioCrue9.getRunCourant());
+ if (!dirForRunModeleCrue9.exists()) {
+ log.addWarn("create.runCreator.linkedScenarioCrue9.runDirNotExisting", dirForRunModeleCrue9.getAbsolutePath());
+ } else {
+ File xxcprovx = new File(dirForRunModeleCrue9, "xxcprovx.dat");
+ boolean copyXxprovx = true;
+ if (!xxcprovx.exists()) {
+ copyXxprovx = false;
+ log.addWarn("create.runCreator.linkedScenarioCrue9.xxcprovxNotExisting", dirForRunModeleCrue9.getAbsolutePath());
+ } else {
+ testxxprovxContent(xxcprovx, log);
+ }
+ Map<String, RunFile> runFilesResultat = projet.getRunFilesResultat(linkedScenarioCrue9,
+ linkedScenarioCrue9.getRunCourant());
+ //un scenario crue9 a forcément un seul modele.
+ final ManagerEMHModeleBase modeleCrue9 = linkedScenarioCrue9.getFils().get(0);
+ final RunFile stoRunFile = runFilesResultat.get(ManagerEMHScenario.getResKey(modeleCrue9, CrueFileType.STO));
+ boolean copySto = true;
+ boolean copyStr = true;
+ if (stoRunFile == null || !stoRunFile.getFile().exists()) {
+ copySto = false;
+ final boolean undefined = stoRunFile == null;
+ if (undefined) {
+ log.addWarn("create.runCreator.linkedScenarioCrue9.stoNotDefined");
+
+ } else {
+ log.addWarn("create.runCreator.linkedScenarioCrue9.stoNotExisting", stoRunFile.getFile().getAbsolutePath());
+
+ }
+ }
+ final RunFile strRunFile = runFilesResultat.get(ManagerEMHScenario.getResKey(modeleCrue9, CrueFileType.STR));
+ if (strRunFile == null || !strRunFile.getFile().exists()) {
+ copyStr = false;
+ final boolean strUndefined = strRunFile == null;
+ if (strUndefined) {
+ log.addWarn("create.runCreator.linkedScenarioCrue9.strNotDefined");
+ } else {
+ log.addWarn("create.runCreator.linkedScenarioCrue9.strNotExisting", strRunFile.getFile().getAbsolutePath());
+ }
+ }
+ for (ManagerEMHModeleBase targetModele : scenario.getFils()) {
+ File destDir = projet.getDirForRunModele(scenario, targetModele, newRun);
+ destDir.mkdirs();
+ if (copyXxprovx) {
+ CtuluLibFile.copyFile(xxcprovx, new File(destDir, xxcprovx.getName()));
+ }
+ if (copySto) {
+ CtuluLibFile.copyFile(stoRunFile.getFile(), new File(destDir, stoRunFile.getFile().getName()));
+ }
+ if (copyStr) {
+ CtuluLibFile.copyFile(strRunFile.getFile(), new File(destDir, strRunFile.getFile().getName()));
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ private boolean isAbsolute(String fileName) {
+ return fileName.indexOf('\\') >= 0 || fileName.indexOf('/') >= 0;
+ }
+
private void validOptions(RunCreatorOptions options, CtuluLog log) {
if ((options.getSelectedRun() == null) && (!options.isUseInputFileFromStudy())) {
log.addSevereError("create.runCreator.noSelectedRun");
@@ -188,6 +265,7 @@
}
}
+ copyLinkedCrue9Files(scenario, log, newRun);
return new CrueOperationResult<EMHRun>(newRun, log);
}
@@ -253,4 +331,15 @@
return run;
}
+
+ private void testxxprovxContent(File xxcprovx, CtuluLog log) {
+ List<String> litFichierLineByLine = CtuluLibFile.litFichierLineByLine(xxcprovx);
+ if (litFichierLineByLine.size() != 4) {
+ log.addError("create.runCreator.linkedScenarioCrue9.xxcprovx.NotValid");
+ } else {
+ if (isAbsolute(litFichierLineByLine.get(2)) || isAbsolute(litFichierLineByLine.get(3))) {
+ log.addWarn("create.runCreator.linkedScenarioCrue9.xxcprovx.containsAbsolutePath");
+ }
+ }
+ }
}
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-05-02 21:54:07 UTC (rev 7142)
+++ trunk/soft/fudaa-crue/crue-server/src/main/resources/org/fudaa/dodico/crue/common/businessMessages.properties 2012-05-02 22:16:37 UTC (rev 7143)
@@ -653,4 +653,14 @@
rcal.extractTimeSteps=R\u00e9cup\u00e9ration des pas de temps
rcal.entryDefinedSeveralTime=L'entr\u00e9e {0} est d\u00e9finie plusieurs fois. La derni\u00e8re occurence \u00e9crase les occurences existantes.
load.rptg.noResPrtGeoasFound.error=Le fichier {0} n''a pas \u00e9t\u00e9 charg\u00e9 car aucun r\u00e9sultat n'est d\u00e9fini ( pas de balise ResPrtGeo).
-load.emhTypeNonCompatible.error=Le chargement du r\u00e9sultat pour l''EMH {0} a \u00e9chou\u00e9. Le r\u00e9sultat est d\u00e9fini pour un type {1} alors que l''EMH est de type {2}
\ No newline at end of file
+load.emhTypeNonCompatible.error=Le chargement du r\u00e9sultat pour l''EMH {0} a \u00e9chou\u00e9. Le r\u00e9sultat est d\u00e9fini pour un type {1} alors que l''EMH est de type {2}
+create.runCreator.linkedScenarioCrue9.cantFind=Le sc\u00e9nario Cru9 {0} li\u00e9 \u00e0 ce sc\u00e9nario n''existe pas
+create.runCreator.linkedScenarioCrue9.noRunCourant=Le sc\u00e9nario Cru9 {0} li\u00e9 \u00e0 ce sc\u00e9nario n''a pas de run courant
+create.runCreator.linkedScenarioCrue9.runDirNotExisting=Le r\u00e9pertoire du run courant n''existe pas : {0}
+create.runCreator.linkedScenarioCrue9.xxcprovxNotExisting=Le fichier "xxcprovx.dat" n''existe pas dans le r\u00e9pertoire {0}
+create.runCreator.linkedScenarioCrue9.strNotExisting=Le fichier STR suivant n''a pas \u00e9t\u00e9 trouv\u00e9: {0}
+create.runCreator.linkedScenarioCrue9.stoNotExisting=Le fichier STO suivant n''a pas \u00e9t\u00e9 trouv\u00e9: {0}
+create.runCreator.linkedScenarioCrue9.stoNotDefined=Le fichier STO n''est pas d\u00e9fini
+create.runCreator.linkedScenarioCrue9.strNotDefined=Le fichier STR n''est pas d\u00e9fini
+create.runCreator.linkedScenarioCrue9.xxcprovx.NotValid=Le fichier xxcprovx.dat n''est pas valide: il ne contient pas 4 lignes
+create.runCreator.linkedScenarioCrue9.xxcprovx.containsAbsolutePath="Les chemins des fichiers de donn\u00e9es Crue9 devraient \u00eatre en relatif dans xxcprovx.dat
\ No newline at end of file
Modified: trunk/soft/fudaa-crue/ui-post/src/main/java/org/fudaa/fudaa/crue/post/services/CrueRunLauncherServiceImpl.java
===================================================================
--- trunk/soft/fudaa-crue/ui-post/src/main/java/org/fudaa/fudaa/crue/post/services/CrueRunLauncherServiceImpl.java 2012-05-02 21:54:07 UTC (rev 7142)
+++ trunk/soft/fudaa-crue/ui-post/src/main/java/org/fudaa/fudaa/crue/post/services/CrueRunLauncherServiceImpl.java 2012-05-02 22:16:37 UTC (rev 7143)
@@ -81,7 +81,7 @@
public void run(final ExecInputDefault execInputDefault, Map<CrueFileType, RunCalculOption> options, Runnable runAfter) {
//TODO faire un thread et logger les résulat.
selectedPerspectiveService.activePerspective(PerspectiveEnum.POST);
- perspectiveServicePost.setDirty(true);
+
ManagerEMHScenario scenario = execInputDefault.getScenario();
if (scenario.isCrue9()) {
Crue9Runnable runnable = new Crue9Runnable(execInputDefault, runAfter);
@@ -89,12 +89,18 @@
"Progression.Crue9.Name"), runnable);
ph.start();
runnable.setProgressHandle(ph);
+ perspectiveServicePost.setDirty(true);
new Thread(runnable).start();
// requestProcessor.post(runnable);
} else {
- Crue10OptionBuilder optionsBuilder = new Crue10OptionBuilder(getExecOptions());
- ExecConfigurer createConfigurer = optionsBuilder.createConfigurer(execInputDefault, options);
- getCrue10Runner(execInputDefault.getProjet().getCoeurConfig()).launchOn(execInputDefault, null, createConfigurer);
+ perspectiveServicePost.setDirty(true);
+ try {
+ Crue10OptionBuilder optionsBuilder = new Crue10OptionBuilder(getExecOptions());
+ ExecConfigurer createConfigurer = optionsBuilder.createConfigurer(execInputDefault, options);
+ getCrue10Runner(execInputDefault.getProjet().getCoeurConfig()).launchOn(execInputDefault, null, createConfigurer);
+ } finally {
+ perspectiveServicePost.setDirty(false);
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|