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 99247825e8502a332df3960d41bc7cc1637c2b8a Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 4 19:30:56 2015 +0100 fixes #6789: [EXPORT GENERIQUE] Les fichiers exportés peuvent être vides --- .../fr/ifremer/tutti/service/csv/CsvProducer.java | 5 ++ .../genericformat/GenericFormatExportContext.java | 82 ++++++++++++++++++---- .../genericformat/GenericFormatExportService.java | 4 ++ 3 files changed, 77 insertions(+), 14 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 ee66703..751d459 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 @@ -35,6 +35,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -81,4 +82,8 @@ public abstract class CsvProducer<O, M extends AbstractTuttiImportExportModel<O> } } + public void writeEmpty() throws Exception { + export.write(Collections.<O>emptyList(), writer); + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java index 55d603a..2c2510a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java @@ -60,6 +60,7 @@ import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpec import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import org.apache.commons.io.IOUtils; import org.nuiton.decorator.Decorator; +import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.Closeable; import java.io.File; @@ -67,6 +68,8 @@ import java.io.IOException; import java.util.List; import java.util.Map; +import static org.nuiton.i18n.I18n.t; + /** * Created on 2/5/15. * @@ -127,6 +130,10 @@ public class GenericFormatExportContext implements Closeable { protected String checkError; + private boolean cruiseExported; + + private boolean operationExported; + GenericFormatExportContext(ProgressionModel progressionModel, GenericFormatArchive archive, char csvSeparator, @@ -217,20 +224,51 @@ public class GenericFormatExportContext implements Closeable { @Override public void close() throws IOException { - IOUtils.closeQuietly(producerForSurvey); - IOUtils.closeQuietly(producerForSpecies); - IOUtils.closeQuietly(producerForGearCaracteristics); - IOUtils.closeQuietly(producerForOperation); - IOUtils.closeQuietly(producerForParameter); - IOUtils.closeQuietly(producerForAccidentalCatch); - IOUtils.closeQuietly(producerForIndividualObservation); - IOUtils.closeQuietly(producerForCatch); - IOUtils.closeQuietly(producerForMarineLitter); - IOUtils.closeQuietly(producerForTemporaryGear); - IOUtils.closeQuietly(producerForTemporaryPerson); - IOUtils.closeQuietly(producerForTemporarySpecies); - IOUtils.closeQuietly(producerForTemporaryVessel); - IOUtils.closeQuietly(producerForSampleCategory); + try { + if (!isCruiseExported()) { + + try { + producerForSurvey.writeEmpty(); + producerForGearCaracteristics.writeEmpty(); + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.survey.error"), e); + } + + } + + if (!isOperationExported()) { + + try { + producerForOperation.writeEmpty(); + producerForParameter.writeEmpty(); + producerForAccidentalCatch.writeEmpty(); + producerForIndividualObservation.writeEmpty(); + producerForCatch.writeEmpty(); + producerForMarineLitter.writeEmpty(); + + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.operations.error"), e); + } + + } + } finally { + + IOUtils.closeQuietly(producerForSurvey); + IOUtils.closeQuietly(producerForSpecies); + IOUtils.closeQuietly(producerForGearCaracteristics); + IOUtils.closeQuietly(producerForOperation); + IOUtils.closeQuietly(producerForParameter); + IOUtils.closeQuietly(producerForAccidentalCatch); + IOUtils.closeQuietly(producerForIndividualObservation); + IOUtils.closeQuietly(producerForCatch); + IOUtils.closeQuietly(producerForMarineLitter); + IOUtils.closeQuietly(producerForTemporaryGear); + IOUtils.closeQuietly(producerForTemporaryPerson); + IOUtils.closeQuietly(producerForTemporarySpecies); + IOUtils.closeQuietly(producerForTemporaryVessel); + IOUtils.closeQuietly(producerForSampleCategory); + + } } @@ -309,4 +347,20 @@ public class GenericFormatExportContext implements Closeable { public void increments(String message) { progressionModel.increments(message); } + + public void setCruiseExported(boolean cruiseExported) { + this.cruiseExported = cruiseExported; + } + + public boolean isCruiseExported() { + return cruiseExported; + } + + public void setOperationExported(boolean operationExported) { + this.operationExported = operationExported; + } + + public boolean isOperationExported() { + return operationExported; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 7a08184..59b9b63 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -487,6 +487,8 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { } protected void exportCruise(GenericFormatExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { + + exportContext.setCruiseExported(true); exportSurvey(exportContext, cruise); @@ -552,6 +554,8 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { protected void exportOperation(GenericFormatExportContext exportContext, Cruise cruise, FishingOperation operation) { + exportContext.setOperationExported(true); + GenericFormatExportOperationContext operationContext = exportContext.newOperationContext(cruise, operation); exportContext.increments(t("tutti.service.genericFormat.exportCruise.exportOperation", cruise.getName(), operationContext.getOperationLabel())); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.