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 9dc3d00a2c44bae6c9193f09b08f3855856fec9e Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Mar 28 14:15:42 2015 +0100 introduce export action API --- .../GenericFormatExportActionEngine.java | 146 ++++++++ .../genericformat/GenericFormatExportContext.java | 16 +- .../genericformat/GenericFormatExportService.java | 373 ++------------------- .../CreateAccidentalCatchRowsAction.java | 34 ++ .../exportactions/CreateAttachmentRowsAction.java | 29 ++ .../exportactions/CreateCatchBatchRowsAction.java | 108 ++++++ .../CreateIndividualObservationRowsAction.java | 34 ++ .../CreateMarineLitterRowsAction.java | 34 ++ .../exportactions/CreateOperationRowsAction.java | 34 ++ .../exportactions/CreateParameterRowsAction.java | 35 ++ .../exportactions/ExportCruiseActionSupport.java | 23 ++ .../ExportFishingOperationActionSupport.java | 23 ++ .../ExportGearCaracteristicAction.java | 60 ++++ .../exportactions/ExportProtocolAction.java | 41 +++ .../exportactions/ExportReferentialGearAction.java | 46 +++ .../ExportReferentialPersonAction.java | 46 +++ .../ExportReferentialSpeciesAction.java | 46 +++ .../ExportReferentialVesselAction.java | 47 +++ .../ExportSampleCategoryModelAction.java | 39 +++ .../exportactions/ExportSpeciesUsedAction.java | 36 ++ .../exportactions/ExportSurveyAction.java | 59 ++++ .../ExportTechnicalActionSupport.java | 15 + .../exportactions/FlushOperationAction.java | 25 ++ 23 files changed, 1003 insertions(+), 346 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 new file mode 100644 index 0000000..6865cdb --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportActionEngine.java @@ -0,0 +1,146 @@ +package fr.ifremer.tutti.service.genericformat; + +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; +import fr.ifremer.tutti.service.genericformat.exportactions.CreateOperationRowsAction; +import fr.ifremer.tutti.service.genericformat.exportactions.CreateParameterRowsAction; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportCruiseActionSupport; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportFishingOperationActionSupport; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportGearCaracteristicAction; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportProtocolAction; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportReferentialGearAction; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportReferentialPersonAction; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportReferentialSpeciesAction; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportReferentialVesselAction; +import fr.ifremer.tutti.service.genericformat.exportactions.ExportSampleCategoryModelAction; +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.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 java.util.ArrayList; +import java.util.List; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class GenericFormatExportActionEngine { + + private final List<ExportTechnicalActionSupport> technicalActions; + + private final List<ExportCruiseActionSupport> cruiseActions; + + private final List<ExportFishingOperationActionSupport> fishingOperationsActions; + + public GenericFormatExportActionEngine(TuttiServiceContext serviceContext) { + + this.technicalActions = createTechnicalActions(serviceContext); + this.cruiseActions = createCruiseActions(serviceContext); + this.fishingOperationsActions = createFishingOperationActions(serviceContext); + + } + + public void executeCruiseActions(GenericFormatExportContext exportContext, Cruise cruise) { + + exportContext.setCruiseExported(true); + + for (ExportCruiseActionSupport action : cruiseActions) { + + action.execute(exportContext, cruise); + + } + + } + + public void executeOperationActions(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + exportContext.setOperationExported(true); + + for (ExportFishingOperationActionSupport action : fishingOperationsActions) { + + action.execute(exportContext, operationContext); + + } + + } + + public void executeTechnicalActions(GenericFormatExportContext exportContext) { + + for (ExportTechnicalActionSupport action : technicalActions) { + + action.execute(exportContext); + + } + + } + + public void executeSampleCategoryModelAction(GenericFormatExportContext exportContext) { + + ExportSampleCategoryModelAction action = new ExportSampleCategoryModelAction(); + action.execute(exportContext); + + } + + private List<ExportCruiseActionSupport> createCruiseActions(TuttiServiceContext serviceContext) { + + PersistenceService persistenceService = serviceContext.getService(PersistenceService.class); + String countryId = serviceContext.getConfig().getExportCountryId(); + + List<ExportCruiseActionSupport> actions = new ArrayList<>(); + + actions.add(new ExportSurveyAction(persistenceService, countryId)); + actions.add(new ExportGearCaracteristicAction(persistenceService)); + + 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))); + + return actions; + } + + private List<ExportFishingOperationActionSupport> createFishingOperationActions(TuttiServiceContext serviceContext) { + + PersistenceService persistenceService = serviceContext.getService(PersistenceService.class); + + List<ExportFishingOperationActionSupport> actions = new ArrayList<>(); + + actions.add(new CreateOperationRowsAction(persistenceService)); + actions.add(new CreateParameterRowsAction(persistenceService)); + actions.add(new CreateAttachmentRowsAction(persistenceService)); + 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)); + + 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 25461b3..e4e7286 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 @@ -38,6 +38,7 @@ 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; import fr.ifremer.tutti.persistence.entities.referential.Speciess; @@ -90,6 +91,8 @@ 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(); @@ -154,6 +157,8 @@ public class GenericFormatExportContext implements Closeable { WeightComputingService weightComputingService, Decorator<FishingOperation> fishingOperationDecorator, SampleCategoryModel sampleCategoryModel, + TuttiProtocol tuttiProtocol, + String countryId, Path attachmentSourcePath) { Preconditions.checkNotNull(progressionModel); @@ -166,7 +171,8 @@ public class GenericFormatExportContext implements Closeable { this.fishingOperationDecorator = fishingOperationDecorator; this.sampleCategoryModel = sampleCategoryModel; - + this.tuttiProtocol=tuttiProtocol; + this.countryId=countryId; this.weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); this.pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); this.deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); @@ -194,6 +200,14 @@ public class GenericFormatExportContext implements Closeable { } + public TuttiProtocol getTuttiProtocol() { + return tuttiProtocol; + } + + public String getCountryId() { + return countryId; + } + public GenericFormatExportOperationContext newOperationContext(Cruise cruise, FishingOperation operation) { String operationLabel = fishingOperationDecorator.toString(operation); 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 bb0b0de..189d829 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 @@ -26,49 +26,11 @@ import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.ProgressionModel; -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.BatchContainer; -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.Program; -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.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Gears; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.genericformat.csv.AccidentalCatchRow; -import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; -import fr.ifremer.tutti.service.genericformat.csv.CatchRow; -import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; -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 fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; -import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; -import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; -import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAttachment; -import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForCatch; -import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForGearCaracteristics; -import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSampleCategory; -import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; -import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; -import fr.ifremer.tutti.service.referential.csv.GearRow; -import fr.ifremer.tutti.service.referential.csv.PersonRow; -import fr.ifremer.tutti.service.referential.csv.SpeciesRow; -import fr.ifremer.tutti.service.referential.csv.VesselRow; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; -import fr.ifremer.tutti.util.Numbers; +import fr.ifremer.tutti.service.TuttiServiceContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.ApplicationBusinessException; @@ -100,6 +62,17 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { private static final Log log = LogFactory.getLog(GenericFormatExportService.class); + private GenericFormatExportActionEngine actionEngine; + + @Override + public void setServiceContext(TuttiServiceContext context) { + + super.setServiceContext(context); + + this.actionEngine = new GenericFormatExportActionEngine(context); + + } + public int getExportProgramNbSteps(String programId) { // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litters) + @@ -157,11 +130,14 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { // load full cruise cruise = persistenceService.getCruise(cruise.getId()); - exportCruise(exportContext, cruise); + + List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); + + exportCruise(exportContext, cruise,operations); } - terminatesExport(exportContext); + actionEngine.executeTechnicalActions(exportContext); } catch (IOException e) { throw new ApplicationTechnicalException("Could not create program export", e); @@ -208,9 +184,10 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { GenericFormatArchive genericFormatArchive = GenericFormatArchive.forExport(exportFile, context.getConfig().getTmpDirectory()); try (GenericFormatExportContext exportContext = createExportContext(progressionModel, genericFormatArchive)) { - exportCruise(exportContext, cruise); + List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); + exportCruise(exportContext, cruise, operations); - terminatesExport(exportContext); + actionEngine.executeTechnicalActions(exportContext); } catch (IOException e) { throw new ApplicationTechnicalException("Could not create cruise export", e); @@ -271,7 +248,7 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { exportCruise(exportContext, cruise, Lists.newArrayList(fishingOperation)); - terminatesExport(exportContext); + actionEngine.executeTechnicalActions(exportContext); } catch (IOException e) { throw new ApplicationTechnicalException("Could not create cruise export", e); @@ -301,8 +278,7 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { try (GenericFormatExportContext exportContext = createExportContext(progressionModel, genericFormatArchive)) { - SampleCategoryModel sampleCategoryModel = exportContext.getSampleCategoryModel(); - exportSampleCategoryModel(exportContext, sampleCategoryModel); + actionEngine.executeSampleCategoryModelAction(exportContext); } catch (IOException e) { throw new ApplicationTechnicalException("Could not export sample category model", e); @@ -320,6 +296,8 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { Path attachmentsSourcePath = context.getConfig().getDbAttachmentDirectory().toPath(); + TuttiProtocol tuttiProtocol = context.getDataContext().getProtocol(); + return new GenericFormatExportContext(progressionModel, genericFormatArchive, ';', @@ -327,6 +305,8 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { weightComputingService, fishingOperationDecorator, context.getSampleCategoryModel(), + tuttiProtocol, + context.getConfig().getExportCountryId(), attachmentsSourcePath); } @@ -362,143 +342,9 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { } - protected void terminatesExport(GenericFormatExportContext exportContext) { - - SampleCategoryModel sampleCategoryModel = exportContext.getSampleCategoryModel(); - exportSampleCategoryModel(exportContext, sampleCategoryModel); - - exportProtocol(exportContext); - - List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); - exportTemporaryGears(exportContext, temporaryGears); - - List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); - exportTemporaryPersons(exportContext, temporaryPersons); - - List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); - exportTemporarySpeciess(exportContext, temporarySpeciess); - - List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); - exportTemporaryVessels(exportContext, temporaryVessels); - - exportSpecies(exportContext); - - } - - protected void exportTemporaryGears(GenericFormatExportContext exportContext, List<Gear> temporaryGears) { - - exportContext.increments(t("tutti.service.genericFormat.export.exportTemporaryGear", temporaryGears.size())); - - try { - - CsvProducerForTemporaryGear producerForTemporarySpecies = exportContext.getProducerForTemporaryGear(); - - List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryGears); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary gear", e); - } - - } - - protected void exportTemporaryPersons(GenericFormatExportContext exportContext, List<Person> temporaryPersons) { - - exportContext.increments(t("tutti.service.genericFormat.export.exportTemporaryPerson", temporaryPersons.size())); - - try { - - CsvProducerForTemporaryPerson producerForTemporarySpecies = exportContext.getProducerForTemporaryPerson(); - - List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryPersons); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary person", e); - } - - } - - protected void exportTemporarySpeciess(GenericFormatExportContext exportContext, List<Species> temporarySpeciess) { - - exportContext.increments(t("tutti.service.genericFormat.export.exportTemporarySpecies", temporarySpeciess.size())); - - try { - - CsvProducerForTemporarySpecies producerForTemporarySpecies = exportContext.getProducerForTemporarySpecies(); - - List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporarySpeciess); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary species", e); - } - - } - - protected void exportTemporaryVessels(GenericFormatExportContext exportContext, List<Vessel> temporaryVessels) { - - exportContext.increments(t("tutti.service.genericFormat.export.exportTemporaryVessel", temporaryVessels.size())); - - try { - - CsvProducerForTemporaryVessel producerForTemporaryVessel = exportContext.getProducerForTemporaryVessel(); - - List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(temporaryVessels); - producerForTemporaryVessel.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary vessels", e); - } - - } - - protected void exportSampleCategoryModel(GenericFormatExportContext exportContext, SampleCategoryModel sampleCategoryModel) { - - exportContext.increments(t("tutti.service.genericFormat.export.exportSampleCategoyModel", sampleCategoryModel.getNbSampling())); - - try { - - CsvProducerForSampleCategory producerForSampleCategory = exportContext.getProducerForSampleCategory(); - - List<SampleCategoryRow> dataToExport = producerForSampleCategory.getDataToExport(sampleCategoryModel); - producerForSampleCategory.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export sample categories gear", e); - } - - } - - protected void exportProtocol(GenericFormatExportContext exportContext) { - - boolean protocolFilled = context.getDataContext().isProtocolFilled(); - if (protocolFilled) { - - TuttiProtocol protocol = persistenceService.getProtocol(); - exportContext.increments(t("tutti.service.genericFormat.export.exportProtocol", protocol.getName())); - protocolImportExportService.exportProtocol(protocol, exportContext.getProtocolFile()); - - } else { - exportContext.increments(t("tutti.service.genericFormat.export.skipProtocolExport")); - } - - } - - protected void exportCruise(GenericFormatExportContext exportContext, Cruise cruise) { - - List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); - exportCruise(exportContext, cruise, operations); - - } - protected void exportCruise(GenericFormatExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { - exportContext.setCruiseExported(true); - - exportSurvey(exportContext, cruise); - - exportGearCaracteristics(exportContext, cruise); + actionEngine.executeCruiseActions(exportContext, cruise); for (FishingOperation operation : operations) { @@ -510,176 +356,13 @@ public class GenericFormatExportService extends GenericFormatServiceSupport { } - private void exportSurvey(GenericFormatExportContext exportContext, Cruise cruise) { - - exportContext.increments(t("tutti.service.genericFormat.exportCruise.exportSurvey", cruise.getName())); - - List<TuttiLocation> allCountry = persistenceService.getAllCountry(); - String countryId = context.getConfig().getExportCountryId(); - TuttiLocation country = TuttiEntities.splitById(allCountry).get(countryId); - - try { - - CsvProducerForSurvey producerForSurvey = exportContext.getProducerForSurvey(); - - SurveyRow surveyRow = producerForSurvey.getDataToExport(cruise, country); - producerForSurvey.write(surveyRow); - - CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); - List<AttachmentRow> attachmentRows = producerForAttachment.getDataToExport(exportContext, cruise); - producerForAttachment.write(attachmentRows); - - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.survey.error"), e); - } - } - - protected void exportGearCaracteristics(GenericFormatExportContext exportContext, Cruise cruise) { - - exportContext.increments(t("tutti.service.genericFormat.exportCruise.exportGearCaracteristics", cruise.getName())); - - try { - - CsvProducerForGearCaracteristics producerForGearCaracteristics = exportContext.getProducerForGearCaracteristics(); - - List<GearCaracteristicRow> rows = Lists.newArrayList(); - - for (Gear gear : cruise.getGear()) { - - CaracteristicMap caracteristics = persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); - Gear gearWithCaracteristics = Gears.newGear(gear); - gearWithCaracteristics.setCaracteristics(caracteristics); - - List<GearCaracteristicRow> dataToExport = producerForGearCaracteristics.getDataToExport(cruise, gearWithCaracteristics); - rows.addAll(dataToExport); - - } - - producerForGearCaracteristics.write(rows); - - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.gearCaracteristics.error"), e); - } - } - 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())); - CatchBatch catchBatch = operationContext.getCatchBatch(); - - OperationRow operationRow = exportContext.getProducerForOperation().getDataToExport(cruise, operation, catchBatch); - operationContext.setOperationRow(operationRow); - - List<ParameterRow> parameterRows = exportContext.getProducerForParameter().getDataToExport(cruise, operation); - operationContext.setParameterRows(parameterRows); - - List<AttachmentRow> attachmentRows = exportContext.getProducerForAttachment().getDataToExport(exportContext, operationContext); - operationContext.setAttachmentRows(attachmentRows); - - boolean withCatchBatch = operationContext.isWithCatchBatch(); + actionEngine.executeOperationActions(exportContext, operationContext); - if (withCatchBatch) { - - List<MarineLitterRow> marineLitterRows = exportContext.getProducerForMarineLitter().getDataToExport(operationContext); - operationContext.setMarineLitterRows(marineLitterRows); - - List<IndividualObservationRow> individualObservationRows = exportContext.getProducerForIndividualObservation().getDataToExport(operationContext); - operationContext.setIndividualObservationRows(individualObservationRows); - exportContext.getProducerForSpecies().prepareIndividualRows(individualObservationRows); - - List<AccidentalCatchRow> accidentalCatchRows = exportContext.getProducerForAccidentalCatch().getDataToExport(operationContext); - operationContext.setAccidentalCatchRows(accidentalCatchRows); - exportContext.getProducerForSpecies().prepareAccidentalRows(accidentalCatchRows); - - List<CatchRow> catchRows = exportCatch(exportContext, operationContext); - operationContext.setCatchRows(catchRows); - - } - - exportContext.write(operationContext); - - } - - protected List<CatchRow> exportCatch(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { - - CatchBatch catchBatch = operationContext.getCatchBatch(); - - BatchContainer<SpeciesBatch> rootSpeciesBatch = operationContext.getRootSpeciesBatch(); - - BatchContainer<BenthosBatch> rootBenthosBatch = operationContext.getRootBenthosBatch(); - - CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); - - // Warning! This will also add the survey code to batch species - producerForSpecies.prepareSpeciesBatchRows(rootSpeciesBatch); - producerForSpecies.prepareBenthosBatchRows(rootBenthosBatch); - - Float totalWeight = Numbers.getValueOrComputedValue( - catchBatch.getCatchTotalWeight(), - catchBatch.getCatchTotalComputedWeight()); - - Float totalUnsortedWeight = catchBatch.getCatchTotalUnsortedComputedWeight(); - - Float totalSortedSpeciesWeight = Numbers.getValueOrComputedValue( - catchBatch.getSpeciesTotalSortedWeight(), - catchBatch.getSpeciesTotalSortedComputedWeight()); - - Float totalSampleSortedSpeciesWeight = catchBatch.getSpeciesTotalSampleSortedComputedWeight(); - - Float totalSortedBenthosWeight = Numbers.getValueOrComputedValue( - catchBatch.getBenthosTotalSortedWeight(), - catchBatch.getBenthosTotalSortedComputedWeight()); - - Float totalSampleSortedBenthosWeight = catchBatch.getBenthosTotalSampleSortedComputedWeight(); - - Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight(); - - //FIXME tchemit 2013-07-12 J'utilise en fait la formule (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée) - // (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée - poids du HV dans la capture totale) - - 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; - - } - - protected void exportSpecies(GenericFormatExportContext exportContext) { - - exportContext.increments(t("tutti.service.genericFormat.export.exportSpecies")); - - try { - - CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); - List<SpeciesExportRow> rows = producerForSpecies.getDataToExport(); - producerForSpecies.write(rows); - - } catch (Exception e) { - throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.species.error"), e); - } } protected int getCruiseNbStep(String cruiseId) { 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 new file mode 100644 index 0000000..d4efcf1 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAccidentalCatchRowsAction.java @@ -0,0 +1,34 @@ +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.AccidentalCatchRow; + +import java.util.List; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class CreateAccidentalCatchRowsAction extends ExportFishingOperationActionSupport { + + public CreateAccidentalCatchRowsAction(PersistenceService persistenceService) { + super(persistenceService); + } + + @Override + public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + if (operationContext.isWithCatchBatch()) { + + List<AccidentalCatchRow> accidentalCatchRows = exportContext.getProducerForAccidentalCatch().getDataToExport(operationContext); + operationContext.setAccidentalCatchRows(accidentalCatchRows); + exportContext.getProducerForSpecies().prepareAccidentalRows(accidentalCatchRows); + + } + + } +} 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 new file mode 100644 index 0000000..8d4a930 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateAttachmentRowsAction.java @@ -0,0 +1,29 @@ +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 new file mode 100644 index 0000000..2c34e83 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateCatchBatchRowsAction.java @@ -0,0 +1,108 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; +import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; +import fr.ifremer.tutti.persistence.entities.data.CatchBatch; +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.CatchRow; +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.List; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class CreateCatchBatchRowsAction extends ExportFishingOperationActionSupport { + + /** Logger. */ + private static final Log log = LogFactory.getLog(CreateCatchBatchRowsAction.class); + + public CreateCatchBatchRowsAction(PersistenceService persistenceService) { + super(persistenceService); + } + + @Override + public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + if (operationContext.isWithCatchBatch()) { + + List<CatchRow> catchRows = exportCatch(exportContext, operationContext); + operationContext.setCatchRows(catchRows); + + } + + } + + protected List<CatchRow> exportCatch(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + CatchBatch catchBatch = operationContext.getCatchBatch(); + + BatchContainer<SpeciesBatch> rootSpeciesBatch = operationContext.getRootSpeciesBatch(); + + BatchContainer<BenthosBatch> rootBenthosBatch = operationContext.getRootBenthosBatch(); + + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + + // Warning! This will also add the survey code to batch species + producerForSpecies.prepareSpeciesBatchRows(rootSpeciesBatch); + producerForSpecies.prepareBenthosBatchRows(rootBenthosBatch); + + Float totalWeight = Numbers.getValueOrComputedValue( + catchBatch.getCatchTotalWeight(), + catchBatch.getCatchTotalComputedWeight()); + + Float totalUnsortedWeight = catchBatch.getCatchTotalUnsortedComputedWeight(); + + Float totalSortedSpeciesWeight = Numbers.getValueOrComputedValue( + catchBatch.getSpeciesTotalSortedWeight(), + catchBatch.getSpeciesTotalSortedComputedWeight()); + + Float totalSampleSortedSpeciesWeight = catchBatch.getSpeciesTotalSampleSortedComputedWeight(); + + Float totalSortedBenthosWeight = Numbers.getValueOrComputedValue( + catchBatch.getBenthosTotalSortedWeight(), + catchBatch.getBenthosTotalSortedComputedWeight()); + + Float totalSampleSortedBenthosWeight = catchBatch.getBenthosTotalSampleSortedComputedWeight(); + + Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight(); + + //FIXME tchemit 2013-07-12 J'utilise en fait la formule (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée) + // (Poids de la capture totale - poids du HV dans la capture totale) / (poids total capture triée - poids du HV dans la capture totale) + + 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; + + } +} 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 new file mode 100644 index 0000000..aadc3e3 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateIndividualObservationRowsAction.java @@ -0,0 +1,34 @@ +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.IndividualObservationRow; + +import java.util.List; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class CreateIndividualObservationRowsAction extends ExportFishingOperationActionSupport { + + public CreateIndividualObservationRowsAction(PersistenceService persistenceService) { + super(persistenceService); + } + + @Override + public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + if (operationContext.isWithCatchBatch()) { + + List<IndividualObservationRow> individualObservationRows = exportContext.getProducerForIndividualObservation().getDataToExport(operationContext); + operationContext.setIndividualObservationRows(individualObservationRows); + exportContext.getProducerForSpecies().prepareIndividualRows(individualObservationRows); + + } + + } +} 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 new file mode 100644 index 0000000..d057dbf --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateMarineLitterRowsAction.java @@ -0,0 +1,34 @@ +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.MarineLitterRow; + +import java.util.List; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class CreateMarineLitterRowsAction extends ExportFishingOperationActionSupport { + + public CreateMarineLitterRowsAction(PersistenceService persistenceService) { + super(persistenceService); + } + + @Override + public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + if (operationContext.isWithCatchBatch()) { + + List<MarineLitterRow> marineLitterRows = exportContext.getProducerForMarineLitter().getDataToExport(operationContext); + operationContext.setMarineLitterRows(marineLitterRows); + + } + + } + +} 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 new file mode 100644 index 0000000..fed6709 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateOperationRowsAction.java @@ -0,0 +1,34 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +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.OperationRow; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class CreateOperationRowsAction extends ExportFishingOperationActionSupport { + + public CreateOperationRowsAction(PersistenceService persistenceService) { + super(persistenceService); + } + + @Override + public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + FishingOperation operation = operationContext.getOperation(); + Cruise cruise = operationContext.getCruise(); + CatchBatch catchBatch = operationContext.getCatchBatch(); + + OperationRow operationRow = exportContext.getProducerForOperation().getDataToExport(cruise, operation, catchBatch); + operationContext.setOperationRow(operationRow); + + } +} 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 new file mode 100644 index 0000000..eddf76b --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/CreateParameterRowsAction.java @@ -0,0 +1,35 @@ +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; + +import java.util.List; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class CreateParameterRowsAction extends ExportFishingOperationActionSupport { + + public CreateParameterRowsAction(PersistenceService persistenceService) { + super(persistenceService); + } + + @Override + public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + FishingOperation operation = operationContext.getOperation(); + Cruise cruise = operationContext.getCruise(); + + 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/ExportCruiseActionSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportCruiseActionSupport.java new file mode 100644 index 0000000..687cb8d --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportCruiseActionSupport.java @@ -0,0 +1,23 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public abstract class ExportCruiseActionSupport { + + protected final PersistenceService persistenceService; + + public abstract void execute(GenericFormatExportContext exportContext, Cruise cruise); + + protected ExportCruiseActionSupport(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/ExportFishingOperationActionSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportFishingOperationActionSupport.java new file mode 100644 index 0000000..667ff19 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportFishingOperationActionSupport.java @@ -0,0 +1,23 @@ +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; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +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/ExportGearCaracteristicAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportGearCaracteristicAction.java new file mode 100644 index 0000000..781ce39 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportGearCaracteristicAction.java @@ -0,0 +1,60 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.genericformat.csv.GearCaracteristicRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForGearCaracteristics; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportGearCaracteristicAction extends ExportCruiseActionSupport { + + public ExportGearCaracteristicAction(PersistenceService persistenceService) { + super(persistenceService); + } + + @Override + public void execute(GenericFormatExportContext exportContext, Cruise cruise) { + + exportContext.increments(t("tutti.service.genericFormat.exportCruise.exportGearCaracteristics", cruise.getName())); + + try { + + CsvProducerForGearCaracteristics producerForGearCaracteristics = exportContext.getProducerForGearCaracteristics(); + + List<GearCaracteristicRow> rows = Lists.newArrayList(); + + for (Gear gear : cruise.getGear()) { + + CaracteristicMap caracteristics = persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); + Gear gearWithCaracteristics = Gears.newGear(gear); + gearWithCaracteristics.setCaracteristics(caracteristics); + + List<GearCaracteristicRow> dataToExport = producerForGearCaracteristics.getDataToExport(cruise, gearWithCaracteristics); + rows.addAll(dataToExport); + + } + + producerForGearCaracteristics.write(rows); + + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.gearCaracteristics.error"), e); + } + + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportProtocolAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportProtocolAction.java new file mode 100644 index 0000000..1eb9ec5 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportProtocolAction.java @@ -0,0 +1,41 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportProtocolAction extends ExportTechnicalActionSupport { + + private final ProtocolImportExportService protocolImportExportService; + + public ExportProtocolAction(ProtocolImportExportService protocolImportExportService) { + super(); + this.protocolImportExportService = protocolImportExportService; + } + + @Override + public void execute(GenericFormatExportContext exportContext) { + + TuttiProtocol protocol = exportContext.getTuttiProtocol(); + + if (protocol != null) { + + exportContext.increments(t("tutti.service.genericFormat.export.exportProtocol", protocol.getName())); + protocolImportExportService.exportProtocol(protocol, exportContext.getProtocolFile()); + + } else { + + exportContext.increments(t("tutti.service.genericFormat.export.skipProtocolExport")); + + } + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialGearAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialGearAction.java new file mode 100644 index 0000000..7fdd0e4 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialGearAction.java @@ -0,0 +1,46 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; +import fr.ifremer.tutti.service.referential.csv.GearRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportReferentialGearAction extends ExportTechnicalActionSupport { + + private final ReferentialTemporaryGearService referentialTemporaryGearService; + + public ExportReferentialGearAction(ReferentialTemporaryGearService referentialTemporaryGearService) { + this.referentialTemporaryGearService = referentialTemporaryGearService; + } + + @Override + public void execute(GenericFormatExportContext exportContext) { + + List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); + exportContext.increments(t("tutti.service.genericFormat.export.exportTemporaryGear", temporaryGears.size())); + + try { + + CsvProducerForTemporaryGear producerForTemporarySpecies = exportContext.getProducerForTemporaryGear(); + + List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryGears); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary gear", e); + } + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialPersonAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialPersonAction.java new file mode 100644 index 0000000..cd46025 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialPersonAction.java @@ -0,0 +1,46 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; +import fr.ifremer.tutti.service.referential.csv.PersonRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportReferentialPersonAction extends ExportTechnicalActionSupport { + + private final ReferentialTemporaryPersonService referentialTemporaryPersonService; + + public ExportReferentialPersonAction(ReferentialTemporaryPersonService referentialTemporaryPersonService) { + this.referentialTemporaryPersonService = referentialTemporaryPersonService; + } + + @Override + public void execute(GenericFormatExportContext exportContext) { + + List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); + exportContext.increments(t("tutti.service.genericFormat.export.exportTemporaryPerson", temporaryPersons.size())); + + try { + + CsvProducerForTemporaryPerson producerForTemporarySpecies = exportContext.getProducerForTemporaryPerson(); + + List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryPersons); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary person", e); + } + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialSpeciesAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialSpeciesAction.java new file mode 100644 index 0000000..1589175 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialSpeciesAction.java @@ -0,0 +1,46 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; +import fr.ifremer.tutti.service.referential.csv.SpeciesRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportReferentialSpeciesAction extends ExportTechnicalActionSupport { + + private final ReferentialTemporarySpeciesService referentialTemporarySpeciesService; + + public ExportReferentialSpeciesAction(ReferentialTemporarySpeciesService referentialTemporarySpeciesService) { + this.referentialTemporarySpeciesService = referentialTemporarySpeciesService; + } + + @Override + public void execute(GenericFormatExportContext exportContext) { + + List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); + exportContext.increments(t("tutti.service.genericFormat.export.exportTemporarySpecies", temporarySpeciess.size())); + + try { + + CsvProducerForTemporarySpecies producerForTemporarySpecies = exportContext.getProducerForTemporarySpecies(); + + List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporarySpeciess); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary species", e); + } + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialVesselAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialVesselAction.java new file mode 100644 index 0000000..b4a28fb --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportReferentialVesselAction.java @@ -0,0 +1,47 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; +import fr.ifremer.tutti.service.referential.csv.VesselRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportReferentialVesselAction extends ExportTechnicalActionSupport { + + private final ReferentialTemporaryVesselService referentialTemporaryVesselService; + + public ExportReferentialVesselAction(ReferentialTemporaryVesselService referentialTemporaryVesselService) { + this.referentialTemporaryVesselService = referentialTemporaryVesselService; + } + + @Override + public void execute(GenericFormatExportContext exportContext) { + + List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); + + exportContext.increments(t("tutti.service.genericFormat.export.exportTemporaryVessel", temporaryVessels.size())); + + try { + + CsvProducerForTemporaryVessel producerForTemporaryVessel = exportContext.getProducerForTemporaryVessel(); + + List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(temporaryVessels); + producerForTemporaryVessel.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary vessels", e); + } + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSampleCategoryModelAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSampleCategoryModelAction.java new file mode 100644 index 0000000..08a865b --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSampleCategoryModelAction.java @@ -0,0 +1,39 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSampleCategory; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportSampleCategoryModelAction extends ExportTechnicalActionSupport { + + @Override + public void execute(GenericFormatExportContext exportContext) { + + SampleCategoryModel sampleCategoryModel = exportContext.getSampleCategoryModel(); + exportContext.increments(t("tutti.service.genericFormat.export.exportSampleCategoyModel", sampleCategoryModel.getNbSampling())); + + try { + + CsvProducerForSampleCategory producerForSampleCategory = exportContext.getProducerForSampleCategory(); + + List<SampleCategoryRow> dataToExport = producerForSampleCategory.getDataToExport(sampleCategoryModel); + producerForSampleCategory.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export sample categories gear", e); + } + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSpeciesUsedAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSpeciesUsedAction.java new file mode 100644 index 0000000..02c96b3 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSpeciesUsedAction.java @@ -0,0 +1,36 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportSpeciesUsedAction extends ExportTechnicalActionSupport { + + @Override + public void execute(GenericFormatExportContext exportContext) { + + exportContext.increments(t("tutti.service.genericFormat.export.exportSpecies")); + + try { + + CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); + List<SpeciesExportRow> rows = producerForSpecies.getDataToExport(); + producerForSpecies.write(rows); + + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.species.error"), e); + } + + } +} 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 new file mode 100644 index 0000000..05a1408 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportSurveyAction.java @@ -0,0 +1,59 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; +import fr.ifremer.tutti.service.genericformat.csv.AttachmentRow; +import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; +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.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class ExportSurveyAction extends ExportCruiseActionSupport { + + private final String countryId; + + public ExportSurveyAction(PersistenceService persistenceService, String countryId) { + super(persistenceService); + this.countryId = countryId; + } + + @Override + public void execute(GenericFormatExportContext exportContext, Cruise cruise) { + + exportContext.increments(t("tutti.service.genericFormat.exportCruise.exportSurvey", cruise.getName())); + + List<TuttiLocation> allCountry = persistenceService.getAllCountry(); + + TuttiLocation country = TuttiEntities.splitById(allCountry).get(countryId); + + try { + + CsvProducerForSurvey producerForSurvey = exportContext.getProducerForSurvey(); + + SurveyRow surveyRow = producerForSurvey.getDataToExport(cruise, country); + producerForSurvey.write(surveyRow); + + CsvProducerForAttachment producerForAttachment = exportContext.getProducerForAttachment(); + List<AttachmentRow> attachmentRows = producerForAttachment.getDataToExport(exportContext, cruise); + producerForAttachment.write(attachmentRows); + + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.genericFormat.export.survey.error"), e); + } + + } + +} \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportTechnicalActionSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportTechnicalActionSupport.java new file mode 100644 index 0000000..dc1f413 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/ExportTechnicalActionSupport.java @@ -0,0 +1,15 @@ +package fr.ifremer.tutti.service.genericformat.exportactions; + +import fr.ifremer.tutti.service.genericformat.GenericFormatExportContext; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public abstract class ExportTechnicalActionSupport { + + public abstract void execute(GenericFormatExportContext exportContext); + +} \ No newline at end of file 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 new file mode 100644 index 0000000..0c4c827 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/exportactions/FlushOperationAction.java @@ -0,0 +1,25 @@ +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; + +/** + * Created on 3/28/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14.3 + */ +public class FlushOperationAction extends ExportFishingOperationActionSupport { + + public FlushOperationAction(PersistenceService persistenceService) { + super(persistenceService); + } + + @Override + public void execute(GenericFormatExportContext exportContext, GenericFormatExportOperationContext operationContext) { + + exportContext.write(operationContext); + + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.