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