Author: echatellier Date: 2016-02-05 16:46:33 +0100 (Fri, 05 Feb 2016) New Revision: 4323 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4323 Log: fixes #7934: Ajouter une m?\195?\169thode "exportBegin" dans les exports par pas de temps Modified: trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java trunk/src/main/java/fr/ifremer/isisfish/export/ExportStep.java trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java trunk/src/main/resources/templates/script/exportStep.ftl Modified: trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java 2016-02-05 15:42:40 UTC (rev 4322) +++ trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java 2016-02-05 15:46:33 UTC (rev 4323) @@ -193,6 +193,7 @@ if (exportInfo instanceof ExportStep) { ExportStep exportStep = (ExportStep)exportInfo; + exportStep.exportBegin(simulationStorage, out); TimeStep lastStep = simulationStorage.getResultStorage().getLastStep(); for (TimeStep step = new TimeStep(0); !step.after(lastStep); step = step.next()) { exportStep.export(simulationStorage, step, out); Modified: trunk/src/main/java/fr/ifremer/isisfish/export/ExportStep.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/export/ExportStep.java 2016-02-05 15:42:40 UTC (rev 4322) +++ trunk/src/main/java/fr/ifremer/isisfish/export/ExportStep.java 2016-02-05 15:46:33 UTC (rev 4323) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2006 - 2014 Ifremer, Code Lutin, Benjamin Poussin + * Copyright (C) 2006 - 2016 Ifremer, Code Lutin, Benjamin Poussin * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -47,6 +47,16 @@ public interface ExportStep extends ExportInfo { /** + * Appelée au début de la simulation. + * + * @param simulation la simulation dont on souhaite exporter les resultats + * @param out la sortie sur lequel il faut ecrire l'export + * @throws Exception if export fail + */ + public void exportBegin(SimulationStorage simulation, Writer out) + throws Exception; + + /** * Exporte les resultats, cette methode est appellee a la fin de chaque pas * de temps. Elle peut ecrire dans le fichier via le parametre out, * ou collecter les informations et les ecrires a la fin de la simulation Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java 2016-02-05 15:42:40 UTC (rev 4322) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/SimulationExportResultWrapper.java 2016-02-05 15:46:33 UTC (rev 4323) @@ -130,6 +130,7 @@ out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(os, IsisConfig.charset))); + } return out; } @@ -138,6 +139,14 @@ this.time += time; } + public void exportBegin(SimulationStorage simulation) throws Exception { + if (export instanceof ExportStep) { + long timeStart = System.nanoTime(); + ((ExportStep)export).exportBegin(simulation, getOut()); + addTime(System.nanoTime() - timeStart); + } + } + public void export(SimulationStorage simulation, TimeStep step) throws Exception { if (export instanceof ExportStep) { long timeStart = System.nanoTime(); @@ -219,7 +228,19 @@ allExports.put(export, new ExportContext(export, exportDir)); } } - + + // call exportBegin for exportStep + for (ExportContext e : allExports.values()) { + try { + // pour les ExportStep + e.exportBegin(simulation); + } catch (Exception eee) { + if (log.isErrorEnabled()) { + log.error("Can't export results", eee); + } + e.setException(eee); + } + } } @Override Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2016-02-05 15:42:40 UTC (rev 4322) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationService.java 2016-02-05 15:46:33 UTC (rev 4323) @@ -814,7 +814,7 @@ for (String name : param.getExportNames()) { // new instance ExportStorage exportStorage = ExportStorage.getExport(name); - Export export = exportStorage.getNewInstance(); + ExportInfo export = exportStorage.getNewInstance(); // copy name = name.endsWith(".java") ? name : name + ".java"; Modified: trunk/src/main/resources/templates/script/exportStep.ftl =================================================================== --- trunk/src/main/resources/templates/script/exportStep.ftl 2016-02-05 15:42:40 UTC (rev 4322) +++ trunk/src/main/resources/templates/script/exportStep.ftl 2016-02-05 15:46:33 UTC (rev 4323) @@ -5,7 +5,7 @@ $Id: export.ftl 4156 2014-12-09 11:27:18Z echatellier $ $HeadURL: http://svn.forge.codelutin.com/svn/isis-fish/trunk/src/main/resources/templa... $ %% - Copyright (C) 2014 - 2015 Ifremer, CodeLutin, Chatellier Eric + Copyright (C) 2014 - 2016 Ifremer, CodeLutin, Chatellier Eric %% This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -120,6 +120,18 @@ } /** + * Appeler au début de l'export + * + * @param simulation la simulation dont on souhaite exporter les resultats + * @param out la sortie sur lequel il faut ecrire l'export + * @throws Exception if export fail + */ + public void exportBegin(SimulationStorage simulation, Writer out) + throws Exception { + // if you need to do something at the begin of export, put your code here + } + + /** * Exporte les resultats, cette methode est appellee a la fin de chaque pas * de temps. Elle peut ecrire dans le fichier via le parametre out, * ou collecter les informations et les ecrires a la fin de la simulation @@ -168,5 +180,4 @@ // if you need to do something at the end of export, put your code here } - }