Author: echatellier Date: 2015-05-05 14:43:48 +0000 (Tue, 05 May 2015) New Revision: 4216 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4216 Log: Readd and deprecates commented methods Modified: trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java Modified: trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java 2015-05-04 15:59:13 UTC (rev 4215) +++ trunk/src/main/java/fr/ifremer/isisfish/export/ExportHelper.java 2015-05-05 14:43:48 UTC (rev 4216) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2006 - 2011 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric + * Copyright (C) 2006 - 2015 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, 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 @@ -25,29 +25,33 @@ package fr.ifremer.isisfish.export; -import fr.ifremer.isisfish.IsisConfig; -import fr.ifremer.isisfish.IsisFishException; -import fr.ifremer.isisfish.datastore.ExportStorage; -import fr.ifremer.isisfish.datastore.SimulationStorage; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; - -import fr.ifremer.isisfish.datastore.StorageHelper; -import fr.ifremer.isisfish.simulator.SimulationParameterPropertiesHelper; -import fr.ifremer.isisfish.types.TimeStep; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; -import java.io.IOException; +import java.io.OutputStream; import java.io.OutputStreamWriter; +import java.io.PrintWriter; import java.io.Writer; +import java.util.List; import java.util.Properties; import java.util.zip.GZIPOutputStream; + import org.apache.commons.io.IOUtils; +import org.apache.commons.io.output.CountingOutputStream; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaContext; +import fr.ifremer.isisfish.IsisConfig; +import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.datastore.ExportStorage; +import fr.ifremer.isisfish.datastore.SimulationStorage; +import fr.ifremer.isisfish.datastore.StorageHelper; +import fr.ifremer.isisfish.simulator.SimulationParameterPropertiesHelper; +import fr.ifremer.isisfish.types.TimeStep; + /** * Helper for exports manipulation. * @@ -64,103 +68,109 @@ /** Class logger. */ private static Log log = LogFactory.getLog(ExportHelper.class); -// /** -// * Permet de faire les exports pour une simulation. -// * -// * @param simulation La simulation pour lequel il faut faire les exports -// * @param destdir le repertoire dans lequel il faut ecrire les exports -// * @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<Export> exports, File compileDir) { -// -// // on ne compte plus ici les temps d'instanciations -// // deplacer dans SimulationExportResultWrapper#afterSimulation(SimulationContext) -// -// long writtenAll = 0; -// long timeStart = System.currentTimeMillis(); -// for (Export export : exports) { -// String exportName = ExportStorage.getName(export); -// long written = 0; -// long time = System.currentTimeMillis(); -// try { -// written = exportToFile(simulation, destdir, export); -// writtenAll += written; -// } catch (Exception eee) { -// if (log.isWarnEnabled()) { -// log.warn("Can't export object: " + exportName, eee); -// } -// } -// simulation.getInformation().addExportSize(exportName, written); -// simulation.getInformation().addExportTime(exportName, -// System.currentTimeMillis() - time); -// } -// simulation.getInformation().addAllExportSize(writtenAll); -// simulation.getInformation().addAllExportTime( -// System.currentTimeMillis() - timeStart); -// } -// -// /** -// * 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 -// * -// * @return number of byte written on disk -// * -// * @throws Exception si une erreur survient -// */ -// protected static long exportToFile(SimulationStorage simulation, -// File destdir, Export export) throws Exception { -// long result = 0; -// -// String filename = export.getExportFilename(); -// String extension = export.getExtensionFilename(); -// -// if (!StringUtils.endsWithIgnoreCase(extension, IsisConfig.COMPRESSION_EXTENSION) -// && IsisFish.config.getExportForceCompression()) { -// extension += IsisConfig.COMPRESSION_EXTENSION; -// } -// -// 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 = null; -// CountingOutputStream counter = null; -// try { -// -// OutputStream os = new FileOutputStream(file); -// os = counter = new CountingOutputStream(os); -// -// // if compression is needed by extension, add compression writer -// if (StringUtils.endsWithIgnoreCase(extension, IsisConfig.COMPRESSION_EXTENSION)) { -// os = new GZIPOutputStream(os); -// } -// -// out = new PrintWriter(new BufferedWriter( -// new OutputStreamWriter(os, IsisConfig.charset))); -// -// export.export(simulation, out); -// } finally { -// IOUtils.closeQuietly(out); -// if (counter != null) { -// result = counter.getByteCount(); -// } -// } -// return result; -// } + /** + * Permet de faire les exports pour une simulation. + * + * @param simulation La simulation pour lequel il faut faire les exports + * @param destdir le repertoire dans lequel il faut ecrire les exports + * @param exports les instances des exports à faire + * @param compileDir le nom du répertoire ou les classes d'export sont compilées + * + * @deprecated since 4.4.0.0, used only in one script, will not be replaced + */ + @Deprecated + public static void doExport(SimulationStorage simulation, File destdir, + List<Export> exports, File compileDir) { + // on ne compte plus ici les temps d'instanciations + // deplacer dans SimulationExportResultWrapper#afterSimulation(SimulationContext) + + long writtenAll = 0; + long timeStart = System.currentTimeMillis(); + for (Export export : exports) { + String exportName = ExportStorage.getName(export); + long written = 0; + long time = System.currentTimeMillis(); + try { + written = exportToFile(simulation, destdir, export); + writtenAll += written; + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Can't export object: " + exportName, eee); + } + } + simulation.getInformation().addExportSize(exportName, written); + simulation.getInformation().addExportTime(exportName, + System.currentTimeMillis() - time); + } + simulation.getInformation().addAllExportSize(writtenAll); + simulation.getInformation().addAllExportTime( + System.currentTimeMillis() - timeStart); + } + /** * 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 + * + * @return number of byte written on disk + * + * @throws Exception si une erreur survient + * + * @deprecated since 4.4.0.0, used only in one script, will not be replaced + */ + @Deprecated + protected static long exportToFile(SimulationStorage simulation, + File destdir, Export export) throws Exception { + long result = 0; + + String filename = export.getExportFilename(); + String extension = export.getExtensionFilename(); + + if (!StringUtils.endsWithIgnoreCase(extension, IsisConfig.COMPRESSION_EXTENSION) + && IsisFish.config.getExportForceCompression()) { + extension += IsisConfig.COMPRESSION_EXTENSION; + } + + 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 = null; + CountingOutputStream counter = null; + try { + + OutputStream os = new FileOutputStream(file); + os = counter = new CountingOutputStream(os); + + // if compression is needed by extension, add compression writer + if (StringUtils.endsWithIgnoreCase(extension, IsisConfig.COMPRESSION_EXTENSION)) { + os = new GZIPOutputStream(os); + } + + out = new PrintWriter(new BufferedWriter( + new OutputStreamWriter(os, IsisConfig.charset))); + + export.export(simulation, out); + } finally { + IOUtils.closeQuietly(out); + if (counter != null) { + result = counter.getByteCount(); + } + } + return result; + } + + /** + * Do single export. + * * @param simulationStorage la simulation pour lequel il faut faire les exports * @param file le fichier de destination * @param exportName le nom de l'exports a faire