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 93904698a3752f095797c83bc145a75eda2eff59 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Mar 28 16:15:43 2015 +0100 amélioration de l'API d'export --- .../GenericFormatExportActionEngine.java | 58 ++++--- .../genericformat/GenericFormatExportContext.java | 192 +++------------------ .../GenericFormatExportOperationContext.java | 30 +++- .../genericformat/GenericFormatExportService.java | 3 +- .../CreateAccidentalCatchRowsAction.java | 29 +++- .../exportactions/CreateAttachmentRowsAction.java | 29 ---- .../exportactions/CreateCatchBatchRowsAction.java | 136 +++++++++++---- .../CreateIndividualObservationRowsAction.java | 28 ++- .../CreateMarineLitterRowsAction.java | 29 +++- .../exportactions/CreateOperationRowsAction.java | 37 +++- .../exportactions/CreateParameterRowsAction.java | 6 - .../ExportFishingOperationActionSupport.java | 7 - .../exportactions/ExportSurveyAction.java | 8 +- .../exportactions/FinalizeExportAction.java | 49 ++++++ .../exportactions/FlushOperationAction.java | 25 ++- .../producer/CsvProducerForAttachment.java | 81 +-------- .../resources/i18n/tutti-service_fr_FR.properties | 2 +- 17 files changed, 388 insertions(+), 361 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportActionEngine.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportActionEngine.java index 6865cdb..ac3799e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportActionEngine.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportActionEngine.java @@ -4,7 +4,6 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.genericformat.exportactions.CreateAccidentalCatchRowsAction; -import fr.ifremer.tutti.service.genericformat.exportactions.CreateAttachmentRowsAction; import fr.ifremer.tutti.service.genericformat.exportactions.CreateCatchBatchRowsAction; import fr.ifremer.tutti.service.genericformat.exportactions.CreateIndividualObservationRowsAction; import fr.ifremer.tutti.service.genericformat.exportactions.CreateMarineLitterRowsAction; @@ -22,12 +21,15 @@ import fr.ifremer.tutti.service.genericformat.exportactions.ExportSampleCategory import fr.ifremer.tutti.service.genericformat.exportactions.ExportSpeciesUsedAction; import fr.ifremer.tutti.service.genericformat.exportactions.ExportSurveyAction; import fr.ifremer.tutti.service.genericformat.exportactions.ExportTechnicalActionSupport; +import fr.ifremer.tutti.service.genericformat.exportactions.FinalizeExportAction; import fr.ifremer.tutti.service.genericformat.exportactions.FlushOperationAction; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import java.util.ArrayList; import java.util.List; @@ -40,17 +42,20 @@ import java.util.List; */ public class GenericFormatExportActionEngine { - private final List<ExportTechnicalActionSupport> technicalActions; + /** Logger. */ + private static final Log log = LogFactory.getLog(GenericFormatExportActionEngine.class); private final List<ExportCruiseActionSupport> cruiseActions; private final List<ExportFishingOperationActionSupport> fishingOperationsActions; + private final List<ExportTechnicalActionSupport> technicalActions; + public GenericFormatExportActionEngine(TuttiServiceContext serviceContext) { - this.technicalActions = createTechnicalActions(serviceContext); this.cruiseActions = createCruiseActions(serviceContext); this.fishingOperationsActions = createFishingOperationActions(serviceContext); + this.technicalActions = createTechnicalActions(serviceContext); } @@ -60,6 +65,9 @@ public class GenericFormatExportActionEngine { for (ExportCruiseActionSupport action : cruiseActions) { + if (log.isInfoEnabled()) { + log.info("Execute " + action.getClass().getSimpleName() + " on cruise " + cruise.getId()); + } action.execute(exportContext, cruise); } @@ -72,6 +80,9 @@ public class GenericFormatExportActionEngine { for (ExportFishingOperationActionSupport action : fishingOperationsActions) { + if (log.isInfoEnabled()) { + log.info("Execute " + action.getClass().getSimpleName() + " on operation " + operationContext.getOperation().getId()); + } action.execute(exportContext, operationContext); } @@ -82,6 +93,10 @@ public class GenericFormatExportActionEngine { for (ExportTechnicalActionSupport action : technicalActions) { + if (log.isInfoEnabled()) { + log.info("Execute " + action.getClass().getSimpleName()); + } + action.execute(exportContext); } @@ -109,21 +124,6 @@ public class GenericFormatExportActionEngine { } - private List<ExportTechnicalActionSupport> createTechnicalActions(TuttiServiceContext serviceContext) { - - List<ExportTechnicalActionSupport> actions = new ArrayList<>(); - - actions.add(new ExportProtocolAction(serviceContext.getService(ProtocolImportExportService.class))); - actions.add(new ExportSampleCategoryModelAction()); - actions.add(new ExportSpeciesUsedAction()); - actions.add(new ExportReferentialGearAction(serviceContext.getService(ReferentialTemporaryGearService.class))); - actions.add(new ExportReferentialPersonAction(serviceContext.getService(ReferentialTemporaryPersonService.class))); - actions.add(new ExportReferentialSpeciesAction(serviceContext.getService(ReferentialTemporarySpeciesService.class))); - actions.add(new ExportReferentialVesselAction(serviceContext.getService(ReferentialTemporaryVesselService.class))); - - return actions; - } - private List<ExportFishingOperationActionSupport> createFishingOperationActions(TuttiServiceContext serviceContext) { PersistenceService persistenceService = serviceContext.getService(PersistenceService.class); @@ -131,13 +131,29 @@ public class GenericFormatExportActionEngine { List<ExportFishingOperationActionSupport> actions = new ArrayList<>(); actions.add(new CreateOperationRowsAction(persistenceService)); - actions.add(new CreateParameterRowsAction(persistenceService)); - actions.add(new CreateAttachmentRowsAction(persistenceService)); + actions.add(new CreateParameterRowsAction()); actions.add(new CreateCatchBatchRowsAction(persistenceService)); actions.add(new CreateMarineLitterRowsAction(persistenceService)); actions.add(new CreateIndividualObservationRowsAction(persistenceService)); actions.add(new CreateAccidentalCatchRowsAction(persistenceService)); - actions.add(new FlushOperationAction(persistenceService)); + actions.add(new FlushOperationAction()); + + return actions; + + } + + private List<ExportTechnicalActionSupport> createTechnicalActions(TuttiServiceContext serviceContext) { + + List<ExportTechnicalActionSupport> actions = new ArrayList<>(); + + actions.add(new ExportProtocolAction(serviceContext.getService(ProtocolImportExportService.class))); + actions.add(new ExportSampleCategoryModelAction()); + actions.add(new ExportSpeciesUsedAction()); + actions.add(new ExportReferentialGearAction(serviceContext.getService(ReferentialTemporaryGearService.class))); + actions.add(new ExportReferentialPersonAction(serviceContext.getService(ReferentialTemporaryPersonService.class))); + actions.add(new ExportReferentialSpeciesAction(serviceContext.getService(ReferentialTemporarySpeciesService.class))); + actions.add(new ExportReferentialVesselAction(serviceContext.getService(ReferentialTemporaryVesselService.class))); + actions.add(new FinalizeExportAction()); return actions; 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 e4e7286..9f8bcee 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 @@ -25,19 +25,10 @@ package fr.ifremer.tutti.service.genericformat; */ import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; -import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; import fr.ifremer.tutti.persistence.ProgressionModel; -import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; -import fr.ifremer.tutti.persistence.entities.data.Attachment; -import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; -import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; -import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; @@ -71,7 +62,6 @@ 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; @@ -80,8 +70,6 @@ import java.nio.file.Path; import java.util.List; import java.util.Map; -import static org.nuiton.i18n.I18n.t; - /** * Created on 2/5/15. * @@ -91,26 +79,22 @@ import static org.nuiton.i18n.I18n.t; public class GenericFormatExportContext implements Closeable { private final SampleCategoryModel sampleCategoryModel; + private final TuttiProtocol tuttiProtocol; - private final String countryId; - protected Map<String, GenericFormatExportOperationContext> operationContexts = Maps.newTreeMap(); + private final String countryId; private final GenericFormatArchive archive; private final Decorator<FishingOperation> fishingOperationDecorator; - protected final PersistenceService persistenceService; - - protected final WeightComputingService weightComputingService; - - protected final Caracteristic deadOrAliveCaracteristic; + private final Caracteristic deadOrAliveCaracteristic; - protected final Caracteristic genderCaracteristic; + private final Caracteristic genderCaracteristic; - protected final Caracteristic weightMeasuredCaracteristic; + private final Caracteristic weightMeasuredCaracteristic; - protected final Caracteristic pmfmIdCaracteristic; + private final Caracteristic pmfmIdCaracteristic; private final CsvProducerForSurvey producerForSurvey; @@ -142,9 +126,7 @@ public class GenericFormatExportContext implements Closeable { private final CsvProducerForAttachment producerForAttachment; - protected final ProgressionModel progressionModel; - - protected String checkError; + private final ProgressionModel progressionModel; private boolean cruiseExported; @@ -154,7 +136,6 @@ public class GenericFormatExportContext implements Closeable { GenericFormatArchive archive, char csvSeparator, PersistenceService persistenceService, - WeightComputingService weightComputingService, Decorator<FishingOperation> fishingOperationDecorator, SampleCategoryModel sampleCategoryModel, TuttiProtocol tuttiProtocol, @@ -165,14 +146,11 @@ public class GenericFormatExportContext implements Closeable { this.progressionModel = progressionModel; this.archive = archive; - this.persistenceService = persistenceService; - this.weightComputingService = weightComputingService; - this.fishingOperationDecorator = fishingOperationDecorator; this.sampleCategoryModel = sampleCategoryModel; - this.tuttiProtocol=tuttiProtocol; - this.countryId=countryId; + this.tuttiProtocol = tuttiProtocol; + this.countryId = countryId; this.weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); this.pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); this.deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); @@ -208,7 +186,9 @@ public class GenericFormatExportContext implements Closeable { return countryId; } - public GenericFormatExportOperationContext newOperationContext(Cruise cruise, FishingOperation operation) { + public GenericFormatExportOperationContext newOperationContext(PersistenceService persistenceService, + WeightComputingService weightComputingService, + Cruise cruise, FishingOperation operation) { String operationLabel = fishingOperationDecorator.toString(operation); GenericFormatExportOperationContext operationExportContext = new GenericFormatExportOperationContext(cruise, @@ -225,90 +205,25 @@ public class GenericFormatExportContext implements Closeable { } - public GenericFormatExportOperationContext getOperationContext(Cruise cruise, FishingOperation operation) { - - String operationId = operation.getId(); - - GenericFormatExportOperationContext operationExportContext = operationContexts.get(operationId); - if (operationExportContext == null) { - - String operationLabel = fishingOperationDecorator.toString(operation); - operationExportContext = new GenericFormatExportOperationContext(cruise, - operation, - operationLabel, - persistenceService, - weightComputingService, - sampleCategoryModel, - weightMeasuredCaracteristic, - pmfmIdCaracteristic, - deadOrAliveCaracteristic, - genderCaracteristic); - operationContexts.put(operationId, operationExportContext); - - } - return operationExportContext; - - } - @Override public void close() throws IOException { - 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(); - producerForAttachment.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); - IOUtils.closeQuietly(producerForAttachment); - - } - - } + 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); + IOUtils.closeQuietly(producerForAttachment); - public String getCheckError() { - return checkError; - } - - public void setCheckError(String checkError) { - this.checkError = checkError; } public CsvProducerForSurvey getProducerForSurvey() { @@ -399,57 +314,4 @@ public class GenericFormatExportContext implements Closeable { return operationExported; } - public List<Attachment> getAttachements(Cruise cruise) { - return persistenceService.getAllAttachments(ObjectTypeCode.SCIENTIFIC_CRUISE, cruise.getIdAsInt()); - } - - public List<Attachment> getAttachements(FishingOperation fishingOperation) { - return persistenceService.getAllAttachments(ObjectTypeCode.OPERATION, fishingOperation.getIdAsInt()); - } - - public List<Attachment> getAttachements(CatchBatch catchBatch) { - return persistenceService.getAllAttachments(ObjectTypeCode.CATCH_BATCH, catchBatch.getIdAsInt()); - } - - public List<Attachment> getAttachements(MarineLitterBatch marineLitterBatch) { - return persistenceService.getAllAttachments(ObjectTypeCode.BATCH, marineLitterBatch.getIdAsInt()); - } - - public List<Attachment> getAttachements(SpeciesBatch speciesBatch) { - return persistenceService.getAllAttachments(ObjectTypeCode.BATCH, speciesBatch.getIdAsInt()); - } - - public List<Attachment> getAttachements(BenthosBatch benthosBatch) { - return persistenceService.getAllAttachments(ObjectTypeCode.BATCH, benthosBatch.getIdAsInt()); - } - - public List<Attachment> getAttachements(IndividualObservationBatch individualObservations) { - return persistenceService.getAllAttachments(ObjectTypeCode.SAMPLE, individualObservations.getIdAsInt()); - } - - public List<Attachment> getAttachements(AccidentalBatch accidentalBatch) { - return persistenceService.getAllAttachments(ObjectTypeCode.SAMPLE, accidentalBatch.getIdAsInt()); - } - - public void write(GenericFormatExportOperationContext operationContext) { - - try { - - getProducerForOperation().write(operationContext.getOperationRow()); - getProducerForParameter().write(operationContext.getParameterRows()); - getProducerForMarineLitter().write(operationContext.getMarineLitterRows()); - getProducerForIndividualObservation().write(operationContext.getIndividualObservationRows()); - getProducerForAccidentalCatch().write(operationContext.getAccidentalCatchRows()); - getProducerForCatch().write(operationContext.getCatchRows()); - getProducerForAttachment().write(operationContext.getAttachmentRows()); - - - } catch (Exception e) { - - throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.operation.error", operationContext.getOperationLabel(), operationContext.getCruise().getName()), e); - - } - - - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java index 97b74bd..d14b120 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java @@ -47,9 +47,11 @@ import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.ArrayList; import java.util.List; /** @@ -107,7 +109,7 @@ public class GenericFormatExportOperationContext { private List<CatchRow> catchRows; - private List<AttachmentRow> attachmentRows; + private final List<AttachmentRow> attachmentRows; public GenericFormatExportOperationContext(Cruise cruise, FishingOperation operation, @@ -128,6 +130,7 @@ public class GenericFormatExportOperationContext { this.pmfmIdCaracteristic = pmfmIdCaracteristic; this.deadOrAliveCaracteristic = deadOrAliveCaracteristic; this.genderCaracteristic = genderCaracteristic; + this.attachmentRows = new ArrayList<>(); String operationId = operation.getId(); @@ -147,6 +150,9 @@ public class GenericFormatExportOperationContext { try { rootSpeciesBatch = weightComputingService.getComputedSpeciesBatches(operationId); } catch (Exception e) { + if (log.isWarnEnabled()) { + log.warn("Could not getComputedSpeciesBatches", e); + } withError = true; rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operationId, false); } @@ -154,6 +160,9 @@ public class GenericFormatExportOperationContext { try { rootBenthosBatch = weightComputingService.getComputedBenthosBatches(operationId); } catch (Exception e) { + if (log.isWarnEnabled()) { + log.warn("Could not getComputedBenthosBatches", e); + } withError = true; rootBenthosBatch = persistenceService.getRootBenthosBatch(operationId, false); } @@ -161,6 +170,9 @@ public class GenericFormatExportOperationContext { try { rootMarineLitterBatch = weightComputingService.getComputedMarineLitterBatches(operationId, catchBatch.getMarineLitterTotalWeight()); } catch (Exception e) { + if (log.isWarnEnabled()) { + log.warn("Could not getComputedMarineLitterBatches", e); + } withError = true; rootMarineLitterBatch = persistenceService.getRootMarineLitterBatch(operationId); } @@ -168,7 +180,13 @@ public class GenericFormatExportOperationContext { // apply compute weights if (!withError) { - weightComputingService.computeCatchBatchWeights(catchBatch, rootSpeciesBatch, rootBenthosBatch, rootMarineLitterBatch); + try { + weightComputingService.computeCatchBatchWeights(catchBatch, rootSpeciesBatch, rootBenthosBatch, rootMarineLitterBatch); + } catch (Exception e) { + if (log.isWarnEnabled()) { + log.warn("Could not computeCatchBatchWeights", e); + } + } } individualObservations = persistenceService.getAllIndividualObservationBatch(operation.getId()); @@ -309,7 +327,11 @@ public class GenericFormatExportOperationContext { return attachmentRows; } - public void setAttachmentRows(List<AttachmentRow> attachmentRows) { - this.attachmentRows = attachmentRows; + public void addAttachmentRows(List<AttachmentRow> attachmentRows) { + + if (CollectionUtils.isNotEmpty(attachmentRows)) { + this.attachmentRows.addAll(attachmentRows); + } + } } 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 189d829..4d086f0 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 @@ -302,7 +302,6 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { genericFormatArchive, ';', persistenceService, - weightComputingService, fishingOperationDecorator, context.getSampleCategoryModel(), tuttiProtocol, @@ -358,7 +357,7 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { protected void exportOperation(GenericFormatExportContext exportContext, Cruise cruise, FishingOperation operation) { - GenericFormatExportOperationContext operationContext = exportContext.newOperationContext(cruise, operation); + GenericFormatExportOperationContext operationContext = exportContext.newOperationContext(persistenceService, weightComputingService, cruise, operation); exportContext.increments(t("tutti.service.genericFormat.exportCruise.exportOperation", cruise.getName(), operationContext.getOperationLabel())); actionEngine.executeOperationActions(exportContext, operationContext); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAccidentalCatchRowsAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAccidentalCatchRowsAction.java index d4efcf1..17fbc37 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAccidentalCatchRowsAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAccidentalCatchRowsAction.java @@ -1,10 +1,16 @@ package fr.ifremer.tutti.service.genericformat.exportactions; +import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; +import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; +import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment; +import java.util.ArrayList; import java.util.List; /** @@ -15,8 +21,10 @@ import java.util.List; */ public class CreateAccidentalCatchRowsAction extends ExportFishingOperationActionSupport { + private final PersistenceService persistenceService; + public CreateAccidentalCatchRowsAction(PersistenceService persistenceService) { - super(persistenceService); + this.persistenceService = persistenceService; } @Override @@ -28,7 +36,26 @@ public class CreateAccidentalCatchRowsAction extends ExportFishingOperationActio operationContext.setAccidentalCatchRows(accidentalCatchRows); exportContext.getProducerForSpecies().prepareAccidentalRows(accidentalCatchRows); + List<AttachmentRow> attachmentRows = getAttachmentRows(exportContext, operationContext.getAccidentalBatches()); + operationContext.addAttachmentRows(attachmentRows); + } } + + protected List<AttachmentRow> getAttachmentRows(GenericFormatExportContext exportContext, List<AccidentalBatch> accidentalBatches) { + + CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); + + List<AttachmentRow> attachmentRows = new ArrayList<>(); + + for (AccidentalBatch accidentalBatch : accidentalBatches) { + List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.SAMPLE, accidentalBatch.getIdAsInt()); + producerForAttachment.addAttachments(attachments, attachmentRows); + } + + return attachmentRows; + + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAttachmentRowsAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAttachmentRowsAction.java deleted file mode 100644 index 8d4a930..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAttachmentRowsAction.java +++ /dev/null @@ -1,29 +0,0 @@ -package fr.ifremer.tutti.service.genericformat.exportactions; - -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; -import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; -import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; - -import java.util.List; - -/** - * Created on 3/28/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.14.3 - */ -public class CreateAttachmentRowsAction extends ExportFishingOperationActionSupport { - - public CreateAttachmentRowsAction(PersistenceService persistenceService) { - super(persistenceService); - } - - @Override - public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { - - List<AttachmentRow> attachmentRows = exportContext.getProducerForAttachment().getDataToExport(exportContext, operationContext); - operationContext.setAttachmentRows(attachmentRows); - - } -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateCatchBatchRowsAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateCatchBatchRowsAction.java index 2c34e83..11b881b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateCatchBatchRowsAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateCatchBatchRowsAction.java @@ -1,5 +1,7 @@ package fr.ifremer.tutti.service.genericformat.exportactions; +import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; +import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; @@ -7,13 +9,16 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; +import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; import fr.ifremer.tutti.service.genericformat.csv.CatchRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForCatch; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; import fr.ifremer.tutti.util.Numbers; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.ArrayList; import java.util.List; /** @@ -27,8 +32,10 @@ public class CreateCatchBatchRowsAction extends ExportFishingOperationActionSupp /** Logger. */ private static final Log log = LogFactory.getLog(CreateCatchBatchRowsAction.class); + private final PersistenceService persistenceService; + public CreateCatchBatchRowsAction(PersistenceService persistenceService) { - super(persistenceService); + this.persistenceService = persistenceService; } @Override @@ -36,32 +43,70 @@ public class CreateCatchBatchRowsAction extends ExportFishingOperationActionSupp if (operationContext.isWithCatchBatch()) { - List<CatchRow> catchRows = exportCatch(exportContext, operationContext); + prepareSpeciesBatches(exportContext, operationContext); + + prepareBenthosBatches(exportContext, operationContext); + + CatchBatch catchBatch = operationContext.getCatchBatch(); + + Float catchRaisingfactor = computeCatchRaisingfactor(catchBatch); + Float speciesCatchRaisingFactor = computeSpeciesRaisingFactor(catchBatch, catchRaisingfactor); + Float benthosCatchRaisingFactor = computeBenthosRaisingFactor(catchBatch, catchRaisingfactor); + + if (log.isInfoEnabled()) { + log.info(String.format("Operation %s [catchRF: %s / speciesRF: %s / benthosRF: %s ]", operationContext.getOperation().getId(), catchRaisingfactor, speciesCatchRaisingFactor, benthosCatchRaisingFactor)); + } + + CsvProducerForCatch producerForCatch = exportContext.getProducerForCatch(); + List<CatchRow> catchRows = producerForCatch.getDataToExport(operationContext, speciesCatchRaisingFactor, benthosCatchRaisingFactor); operationContext.setCatchRows(catchRows); } } - protected List<CatchRow> exportCatch(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { - - CatchBatch catchBatch = operationContext.getCatchBatch(); + private void prepareSpeciesBatches(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { BatchContainer<SpeciesBatch> rootSpeciesBatch = operationContext.getRootSpeciesBatch(); - BatchContainer<BenthosBatch> rootBenthosBatch = operationContext.getRootBenthosBatch(); - + // Warning! This will also add the survey code to batch species CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + producerForSpecies.prepareSpeciesBatchRows(rootSpeciesBatch); + + CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); + + List<AttachmentRow> attachmentRows = new ArrayList<>(); + + for (SpeciesBatch speciesBatch : rootSpeciesBatch.getChildren()) { + List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.BATCH, speciesBatch.getIdAsInt()); + producerForAttachment.addAttachments(attachments, attachmentRows); + } + + operationContext.addAttachmentRows(attachmentRows); + + } + + private void prepareBenthosBatches(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + BatchContainer<BenthosBatch> rootSpeciesBatch = operationContext.getRootBenthosBatch(); // Warning! This will also add the survey code to batch species - producerForSpecies.prepareSpeciesBatchRows(rootSpeciesBatch); - producerForSpecies.prepareBenthosBatchRows(rootBenthosBatch); + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + producerForSpecies.prepareBenthosBatchRows(rootSpeciesBatch); - Float totalWeight = Numbers.getValueOrComputedValue( - catchBatch.getCatchTotalWeight(), - catchBatch.getCatchTotalComputedWeight()); + CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); - Float totalUnsortedWeight = catchBatch.getCatchTotalUnsortedComputedWeight(); + List<AttachmentRow> attachmentRows = new ArrayList<>(); + + for (BenthosBatch benthosBatch : rootSpeciesBatch.getChildren()) { + List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.BATCH, benthosBatch.getIdAsInt()); + producerForAttachment.addAttachments(attachments, attachmentRows); + } + operationContext.addAttachmentRows(attachmentRows); + + } + + private Float computeSpeciesRaisingFactor(CatchBatch catchBatch, Float catchRaisingFactor) { Float totalSortedSpeciesWeight = Numbers.getValueOrComputedValue( catchBatch.getSpeciesTotalSortedWeight(), @@ -69,11 +114,51 @@ public class CreateCatchBatchRowsAction extends ExportFishingOperationActionSupp Float totalSampleSortedSpeciesWeight = catchBatch.getSpeciesTotalSampleSortedComputedWeight(); + Float speciesCatchRaisingFactor; + if (totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null) { + speciesCatchRaisingFactor = 1f; + } else { + if (totalSampleSortedSpeciesWeight == 0) { + speciesCatchRaisingFactor = 0f; + } else { + speciesCatchRaisingFactor = (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor; + } + } + return speciesCatchRaisingFactor; + + } + + private Float computeBenthosRaisingFactor(CatchBatch catchBatch, Float catchRaisingFactor) { + + Float totalSampleSortedBenthosWeight = catchBatch.getBenthosTotalSampleSortedComputedWeight(); + Float totalSortedBenthosWeight = Numbers.getValueOrComputedValue( catchBatch.getBenthosTotalSortedWeight(), catchBatch.getBenthosTotalSortedComputedWeight()); - Float totalSampleSortedBenthosWeight = catchBatch.getBenthosTotalSampleSortedComputedWeight(); + Float benthosCatchRaisingFactor; + + if (totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null) { + benthosCatchRaisingFactor = 1f; + } else { + if (totalSampleSortedBenthosWeight == 0) { + benthosCatchRaisingFactor = 0f; + } else { + benthosCatchRaisingFactor = (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor; + } + } + + return benthosCatchRaisingFactor; + + } + + private Float computeCatchRaisingfactor(CatchBatch catchBatch) { + + Float totalWeight = Numbers.getValueOrComputedValue( + catchBatch.getCatchTotalWeight(), + catchBatch.getCatchTotalComputedWeight()); + + Float totalUnsortedWeight = catchBatch.getCatchTotalUnsortedComputedWeight(); Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight(); @@ -82,27 +167,8 @@ public class CreateCatchBatchRowsAction extends ExportFishingOperationActionSupp Float catchRaisingFactor = totalWeight == null || totalUnsortedWeight == null || totalSortedWeight == null ? 1 : (totalWeight - totalUnsortedWeight) / totalSortedWeight; - Float speciesCatchRaisingFactor = totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor); - Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null ? 1 : (totalSampleSortedBenthosWeight == 0 ? 0 : (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor); - - if (log.isDebugEnabled()) { - String message = "\ncatchTotalWeight : " + totalWeight + - "\ncatchTotalUnsortedWeight : " + totalUnsortedWeight + - "\ntotalSampleSortedSpeciesWeight : " + totalSampleSortedSpeciesWeight + - "\ntotalSampleSortedBenthosWeight : " + totalSampleSortedBenthosWeight + - "\ntotalSortedWeight : " + totalSortedWeight + - "\ncatchRaisingFactor : " + catchRaisingFactor + - "\nspeciesCatchRaisingFactor : " + speciesCatchRaisingFactor + - "\nbenthosCatchRaisingFactor : " + benthosCatchRaisingFactor; - - log.debug(message); - } - - CsvProducerForCatch producerForCatch = exportContext.getProducerForCatch(); - List<CatchRow> rows = producerForCatch.getDataToExport(operationContext, - speciesCatchRaisingFactor, - benthosCatchRaisingFactor); - return rows; + return catchRaisingFactor; } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateIndividualObservationRowsAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateIndividualObservationRowsAction.java index aadc3e3..5a1f35f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateIndividualObservationRowsAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateIndividualObservationRowsAction.java @@ -1,10 +1,16 @@ package fr.ifremer.tutti.service.genericformat.exportactions; +import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; +import fr.ifremer.tutti.persistence.entities.data.Attachment; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; +import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment; +import java.util.ArrayList; import java.util.List; /** @@ -15,8 +21,10 @@ import java.util.List; */ public class CreateIndividualObservationRowsAction extends ExportFishingOperationActionSupport { + private final PersistenceService persistenceService; + public CreateIndividualObservationRowsAction(PersistenceService persistenceService) { - super(persistenceService); + this.persistenceService = persistenceService; } @Override @@ -28,7 +36,25 @@ public class CreateIndividualObservationRowsAction extends ExportFishingOperatio operationContext.setIndividualObservationRows(individualObservationRows); exportContext.getProducerForSpecies().prepareIndividualRows(individualObservationRows); + List<AttachmentRow> attachmentRows = getAttachmentRows(exportContext, operationContext.getIndividualObservations()); + operationContext.addAttachmentRows(attachmentRows); + + } + + } + + public List<AttachmentRow> getAttachmentRows(GenericFormatExportContext exportContext, List<IndividualObservationBatch> individualObservationBatches) { + + CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); + + List<AttachmentRow> attachmentRows = new ArrayList<>(); + + for (IndividualObservationBatch individualObservationBatch : individualObservationBatches) { + List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.SAMPLE, individualObservationBatch.getIdAsInt()); + producerForAttachment. addAttachments(attachments, attachmentRows); } + return attachmentRows; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateMarineLitterRowsAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateMarineLitterRowsAction.java index d057dbf..9d49530 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateMarineLitterRowsAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateMarineLitterRowsAction.java @@ -1,10 +1,17 @@ package fr.ifremer.tutti.service.genericformat.exportactions; +import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; +import fr.ifremer.tutti.persistence.entities.data.Attachment; +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; +import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment; +import java.util.ArrayList; import java.util.List; /** @@ -15,8 +22,10 @@ import java.util.List; */ public class CreateMarineLitterRowsAction extends ExportFishingOperationActionSupport { + private final PersistenceService persistenceService; + public CreateMarineLitterRowsAction(PersistenceService persistenceService) { - super(persistenceService); + this.persistenceService = persistenceService; } @Override @@ -27,8 +36,26 @@ public class CreateMarineLitterRowsAction extends ExportFishingOperationActionSu List<MarineLitterRow> marineLitterRows = exportContext.getProducerForMarineLitter().getDataToExport(operationContext); operationContext.setMarineLitterRows(marineLitterRows); + List<AttachmentRow> attachmentRows = getAttachmentRows(exportContext, operationContext.getRootMarineLitterBatch()); + operationContext.addAttachmentRows(attachmentRows); + + } + + } + + public List<AttachmentRow> getAttachmentRows(GenericFormatExportContext exportContext, BatchContainer<MarineLitterBatch> marineLitterBatches) { + + CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); + + List<AttachmentRow> attachmentRows = new ArrayList<>(); + + for (MarineLitterBatch marineLitterBatch : marineLitterBatches.getChildren()) { + List<Attachment> attachments =persistenceService.getAllAttachments(ObjectTypeCode.BATCH, marineLitterBatch.getIdAsInt()); + producerForAttachment.addAttachments(attachments, attachmentRows); } + return attachmentRows; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateOperationRowsAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateOperationRowsAction.java index fed6709..132d4bc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateOperationRowsAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateOperationRowsAction.java @@ -1,12 +1,19 @@ package fr.ifremer.tutti.service.genericformat.exportactions; +import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; +import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; +import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment; + +import java.util.ArrayList; +import java.util.List; /** * Created on 3/28/15. @@ -16,8 +23,10 @@ import fr.ifremer.tutti.service.genericformat.csv.OperationRow; */ public class CreateOperationRowsAction extends ExportFishingOperationActionSupport { + private final PersistenceService persistenceService; + public CreateOperationRowsAction(PersistenceService persistenceService) { - super(persistenceService); + this.persistenceService = persistenceService; } @Override @@ -30,5 +39,31 @@ public class CreateOperationRowsAction extends ExportFishingOperationActionSuppo OperationRow operationRow = exportContext.getProducerForOperation().getDataToExport(cruise, operation, catchBatch); operationContext.setOperationRow(operationRow); + List<AttachmentRow> attachmentRows = getAttachmentRows(exportContext, operation, catchBatch); + operationContext.addAttachmentRows(attachmentRows); + + } + + protected List<AttachmentRow> getAttachmentRows(GenericFormatExportContext exportContext, FishingOperation operation, CatchBatch catchBatch) { + + List<AttachmentRow> attachmentRows = new ArrayList<>(); + + CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); + { + + List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.OPERATION, operation.getIdAsInt()); + producerForAttachment.addAttachments(attachments, attachmentRows); + + } + + if (catchBatch != null) { + + List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.CATCH_BATCH, catchBatch.getIdAsInt()); + producerForAttachment.addAttachments(attachments, attachmentRows); + + } + + return attachmentRows; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateParameterRowsAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateParameterRowsAction.java index eddf76b..2013771 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateParameterRowsAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateParameterRowsAction.java @@ -2,7 +2,6 @@ package fr.ifremer.tutti.service.genericformat.exportactions; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; @@ -17,10 +16,6 @@ import java.util.List; */ public class CreateParameterRowsAction extends ExportFishingOperationActionSupport { - public CreateParameterRowsAction(PersistenceService persistenceService) { - super(persistenceService); - } - @Override public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { @@ -30,6 +25,5 @@ public class CreateParameterRowsAction extends ExportFishingOperationActionSuppo List<ParameterRow> parameterRows = exportContext.getProducerForParameter().getDataToExport(cruise, operation); operationContext.setParameterRows(parameterRows); - } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportFishingOperationActionSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportFishingOperationActionSupport.java index 667ff19..8ce71d8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportFishingOperationActionSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportFishingOperationActionSupport.java @@ -1,6 +1,5 @@ package fr.ifremer.tutti.service.genericformat.exportactions; -import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; @@ -12,12 +11,6 @@ import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContex */ public abstract class ExportFishingOperationActionSupport { - protected final PersistenceService persistenceService; - public abstract void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext); - protected ExportFishingOperationActionSupport(PersistenceService persistenceService) { - this.persistenceService = persistenceService; - } - } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSurveyAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSurveyAction.java index 05a1408..37566eb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSurveyAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSurveyAction.java @@ -1,6 +1,8 @@ package fr.ifremer.tutti.service.genericformat.exportactions; +import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.service.PersistenceService; @@ -11,6 +13,7 @@ import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; import org.nuiton.jaxx.application.ApplicationTechnicalException; +import java.util.ArrayList; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -46,8 +49,11 @@ public class ExportSurveyAction extends ExportCruiseActionSupport { SurveyRow surveyRow = producerForSurvey.getDataToExport(cruise, country); producerForSurvey.write(surveyRow); + List<Attachment> attachments = persistenceService.getAllAttachments(ObjectTypeCode.SCIENTIFIC_CRUISE, cruise.getIdAsInt()); + CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); - List<AttachmentRow> attachmentRows = producerForAttachment.getDataToExport(exportContext, cruise); + List<AttachmentRow> attachmentRows = new ArrayList<>(); + producerForAttachment.addAttachments(attachments, attachmentRows); producerForAttachment.write(attachmentRows); } catch (Exception e) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/FinalizeExportAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/FinalizeExportAction.java new file mode 100644 index 0000000..35b9cb9 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/FinalizeExportAction.java @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class FinalizeExportAction extends ExportTechnicalActionSupport { + + @Override + public void execute(GenericFormatExportContext exportContext) { + + if (!exportContext.isCruiseExported()) { + + try { + exportContext.getProducerForSurvey().writeEmpty(); + exportContext.getProducerForGearCaracteristics().writeEmpty(); + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.survey.error"), e); + } + + } + + if (!exportContext.isOperationExported()) { + + try { + exportContext.getProducerForOperation().writeEmpty(); + exportContext.getProducerForParameter().writeEmpty(); + exportContext.getProducerForAccidentalCatch().writeEmpty(); + exportContext.getProducerForIndividualObservation().writeEmpty(); + exportContext.getProducerForCatch().writeEmpty(); + exportContext.getProducerForMarineLitter().writeEmpty(); + exportContext.getProducerForAttachment().writeEmpty(); + + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.operations.error"), e); + } + + } + + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/FlushOperationAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/FlushOperationAction.java index 0c4c827..fbbb8cd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/FlushOperationAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/FlushOperationAction.java @@ -1,8 +1,10 @@ package fr.ifremer.tutti.service.genericformat.exportactions; -import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import static org.nuiton.i18n.I18n.t; /** * Created on 3/28/15. @@ -12,14 +14,25 @@ import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContex */ public class FlushOperationAction extends ExportFishingOperationActionSupport { - public FlushOperationAction(PersistenceService persistenceService) { - super(persistenceService); - } - @Override public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { - exportContext.write(operationContext); + try { + + exportContext.getProducerForOperation().write(operationContext.getOperationRow()); + exportContext.getProducerForParameter().write(operationContext.getParameterRows()); + exportContext.getProducerForMarineLitter().write(operationContext.getMarineLitterRows()); + exportContext.getProducerForIndividualObservation().write(operationContext.getIndividualObservationRows()); + exportContext.getProducerForAccidentalCatch().write(operationContext.getAccidentalCatchRows()); + exportContext.getProducerForCatch().write(operationContext.getCatchRows()); + exportContext.getProducerForAttachment().write(operationContext.getAttachmentRows()); + + } catch (Exception e) { + + throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.operation.error", operationContext.getOperationLabel(), operationContext.getCruise().getName()), e); + + } } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAttachment.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAttachment.java index da6f72f..11292e4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAttachment.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForAttachment.java @@ -1,21 +1,12 @@ package fr.ifremer.tutti.service.genericformat.producer; -import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.data.Attachment; -import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; -import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.service.csv.CsvProducer; -import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; -import fr.ifremer.tutti.service.genericformat.GenericFormatExportOperationContext; import fr.ifremer.tutti.service.genericformat.csv.AttachmentModel; import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; import java.util.List; /** @@ -38,76 +29,6 @@ public class CsvProducerForAttachment extends CsvProducer<AttachmentRow, Attachm this.targetPath = targetPath; } - public List<AttachmentRow> getDataToExport(GenericFormatExportContext exportContext, Cruise cruise) { - - List<AttachmentRow> rows = new ArrayList<>(); - - List<Attachment> attachments = exportContext.getAttachements(cruise); - addAttachments(attachments, rows); - - return rows; - - } - - public List<AttachmentRow> getDataToExport(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { - - List<AttachmentRow> rows = new ArrayList<>(); - - { - List<Attachment> attachments = exportContext.getAttachements(operationContext.getOperation()); - addAttachments(attachments, rows); - } - - if (operationContext.isWithCatchBatch()) { - - { - List<Attachment> attachments = exportContext.getAttachements(operationContext.getCatchBatch()); - addAttachments(attachments, rows); - } - - { - for (IndividualObservationBatch individualObservationBatch : operationContext.getIndividualObservations()) { - List<Attachment> attachments = exportContext.getAttachements(individualObservationBatch); - addAttachments(attachments, rows); - } - } - - { - for (AccidentalBatch accidentalBatch : operationContext.getAccidentalBatches()) { - List<Attachment> attachments = exportContext.getAttachements(accidentalBatch); - addAttachments(attachments, rows); - } - } - - { - for (BenthosBatch benthosBatch : operationContext.getRootBenthosBatch().getChildren()) { - List<Attachment> attachments = exportContext.getAttachements(benthosBatch); - addAttachments(attachments, rows); - } - - } - - { - for (SpeciesBatch speciesBatch : operationContext.getRootSpeciesBatch().getChildren()) { - List<Attachment> attachments = exportContext.getAttachements(speciesBatch); - addAttachments(attachments, rows); - } - } - - { - for (MarineLitterBatch marineLitterBatch : operationContext.getRootMarineLitterBatch().getChildren()) { - List<Attachment> attachments = exportContext.getAttachements(marineLitterBatch); - addAttachments(attachments, rows); - } - } - - } - - return rows; - - } - - @Override public void write(List<AttachmentRow> rows) throws Exception { super.write(rows); @@ -123,7 +44,7 @@ public class CsvProducerForAttachment extends CsvProducer<AttachmentRow, Attachm } } - protected void addAttachments(List<Attachment> attachments, List<AttachmentRow> rows) { + public void addAttachments(List<Attachment> attachments, List<AttachmentRow> rows) { for (Attachment attachment : attachments) { diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 81aea77..88950e6 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -166,7 +166,7 @@ tutti.service.genericFormat.import.temporaryVessels=Import des références temp tutti.service.genericFormat.importError.archiveNotSane=L'archive ne respecte pas le format de l'import générique \:\n%s tutti.service.genericFormat.importError.missArchiveFile=Il manque le fichier %s dans l'archive tutti.service.genericFormat.invalid.cruise=Erreur d'élévation de poids sur les traits de la campagne %s \:<ul>%s</ul> -tutti.service.genericFormat.invalid.fishingOperation=<li>L'élévation des poids ne peut pas être réalisée sur le trait %s, pour la raison suivante \:<ul><li>%s</li></ul></li> +tutti.service.genericFormat.invalid.fishingOperation=L'élévation des poids ne peut pas être réalisée sur le trait %s, pour la raison suivante \:<ul>%s</ul> tutti.service.genericFormat.load.attachments= tutti.service.genericFormat.load.protocol=Import du protocol tutti.service.genericFormat.persist.cruise=Sauvegarde de la campagne <strong>%s</strong> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.