Author: chatellier Date: 2009-03-19 18:14:44 +0000 (Thu, 19 Mar 2009) New Revision: 2012 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java Log: Fix lost of parameters values in export (don't do newIntance twice) Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java 2009-03-19 16:37:39 UTC (rev 2011) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java 2009-03-19 18:14:44 UTC (rev 2012) @@ -23,7 +23,6 @@ import java.io.File; import java.io.FileWriter; import java.io.Writer; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; @@ -59,36 +58,21 @@ * * @param simulation La simulation pour lequel il faut faire les exports * @param destdir le repertoire dans lequel il faut ecrire les exports - * @param exportNames le nom des exports a faire + * @param exports les instances des exports à faire * @param compileDir le nom du répertoire ou les classes d'export sont compilées */ public static void doExport(SimulationStorage simulation, File destdir, - List<String> exportNames, File compileDir) { - Map<String, Integer> usingFilename = new HashMap<String, Integer>(); + List<Export> exports, File compileDir) { + + // on ne compte plus ici les temps d'instanciations + // deplacer dans SimulationExportResultWrapper#afterSimulation(SimulationContext) + long timeStart = System.currentTimeMillis(); - for (String exportName : exportNames) { + for (Export export : exports) { + String exportName = ExportStorage.getName(export); long time = System.currentTimeMillis(); try { - ExportStorage storage = ExportStorage.getExport(exportName); - Export export = storage.getNewExportInstance(); - - String filename = export.getExportFilename(); - String extension = export.getExtensionFilename(); - - // prevent two export with same name - // name MyExport.csv become MyExport_1.csv - Integer val = usingFilename.get(filename + extension); - if (val != null) { - filename += "_" + val; - usingFilename.put(filename + extension, val + 1); - } else { - usingFilename.put(filename + extension, 1); - } - - File file = new File(destdir, filename + extension); - Writer out = new BufferedWriter(new FileWriter(file)); - export.export(simulation, out); - out.close(); + exportToFile(simulation, destdir, export); } catch (Exception eee) { if (log.isWarnEnabled()) { log.warn("Can't export object: " + exportName, eee); @@ -102,6 +86,33 @@ } /** + * Do single export. + * + * @param simulation La simulation pour lequel il faut faire les exports + * @param destdir le repertoire dans lequel il faut ecrire les exports + * @param export le nom des exports a faire + * @throws Exception si une erreur survient + */ + protected static void exportToFile(SimulationStorage simulation, + File destdir, Export export) throws Exception { + String filename = export.getExportFilename(); + String extension = export.getExtensionFilename(); + + File file = new File(destdir, filename + extension); + // prevent two export with same name + // name MyExport.csv become MyExport_1.csv + int val = 0; + while (file.exists()) { + val++; + file = new File(destdir, filename + extension + "_" + val); + } + + Writer out = new BufferedWriter(new FileWriter(file)); + export.export(simulation, out); + out.close(); + } + + /** * Recupere dans prop les valeurs des champs specifique au export et met a * jour les champs de l'export. * Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java 2009-03-19 16:37:39 UTC (rev 2011) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java 2009-03-19 18:14:44 UTC (rev 2012) @@ -23,6 +23,10 @@ import java.util.ArrayList; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.datastore.ExportStorage; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.export.Export; @@ -41,6 +45,10 @@ */ public class SimulationExportResultWrapper implements SimulationListener { + /** Class logger. */ + private static Log log = LogFactory + .getLog(SimulationExportResultWrapper.class); + /* * @see fr.ifremer.isisfish.simulator.SimulationListener#afterSimulation(fr.ifremer.isisfish.simulator.SimulationContext) */ @@ -57,26 +65,31 @@ exportDir.mkdirs(); ExportHelper.doExport(simulation, exportDir, parameters.getExportNames(), rootDirectory); }*/ - + // FIXME changed since sensitivity export adding // Ici on contantene les 2 listes d'exports - // mais on fait du instance>name>instance - // c'est couteux - List<String> allExportNames = new ArrayList<String>(); + List<Export> allExports = new ArrayList<Export>(); if (parameters.getExportNames() != null) { - allExportNames.addAll(parameters.getExportNames()); + for (String exportName : parameters.getExportNames()) { + try { + ExportStorage storage = ExportStorage.getExport(exportName); + Export export = storage.getNewExportInstance(); + allExports.add(export); + } catch (IsisFishException e) { + if (log.isErrorEnabled()) { + log.error("Can't get export instance " + exportName, e); + } + } + } } if (parameters.getSensitivityExport() != null) { - for (Export export : parameters.getSensitivityExport()) { - String name = ExportStorage.getName(export); - allExportNames.add(name); - } + allExports.addAll(parameters.getSensitivityExport()); } - if (!allExportNames.isEmpty()) { + if (!allExports.isEmpty()) { File exportDir = SimulationStorage .getResultExportDirectory(rootDirectory); exportDir.mkdirs(); - ExportHelper.doExport(simulation, exportDir, allExportNames, + ExportHelper.doExport(simulation, exportDir, allExports, rootDirectory); } } @@ -86,5 +99,4 @@ */ public void beforeSimulation(SimulationContext context) { } - }
participants (1)
-
chatellier@users.labs.libre-entreprise.org