This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 80c598757d13db246fbc89423907fb24f0db23ee Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 30 15:56:32 2015 +0200 improve CSVProducer API --- .../fr/ifremer/tutti/service/csv/CsvProducer.java | 37 ++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java index 751d459..aea273f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/csv/CsvProducer.java @@ -25,8 +25,11 @@ package fr.ifremer.tutti.service.csv; */ import com.google.common.base.Charsets; +import com.google.common.base.Preconditions; import com.google.common.io.Files; -import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.BufferedWriter; @@ -46,12 +49,24 @@ import java.util.List; */ public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O>> implements Closeable { + /** Logger. */ + private static final Log log = LogFactory.getLog(CsvProducer.class); + private final BufferedWriter writer; private final TuttiRepeatableExport<O> export; + private boolean touch; + + private final String filename; + public CsvProducer(Path file, M model) { + Preconditions.checkNotNull(file, "CsvProducer need a not null file!"); + Preconditions.checkNotNull(model, "CsvProducer need a not null model!"); + + this.filename = file.toString(); + try { this.writer = Files.newWriter(file.toFile(), Charsets.UTF_8); } catch (FileNotFoundException e) { @@ -65,7 +80,7 @@ public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O> @Override public void close() throws IOException { - IOUtils.closeQuietly(writer); + writer.close(); } public void write(O row) throws Exception { @@ -78,12 +93,28 @@ public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O> public void write(List<O> rows) throws Exception { if (rows != null) { + if (!touch) { + + if (log.isDebugEnabled()) { + log.debug("CsvProducer " + this + " touched."); + } + touch = true; + + } export.write(rows, writer); } } public void writeEmpty() throws Exception { - export.write(Collections.<O>emptyList(), writer); + write(Collections.<O>emptyList()); + } + + public boolean wasTouched() { + return touch; } + @Override + public String toString() { + return new ToStringBuilder(this).append("filename", filename).toString(); + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.