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 e9f3ca61642bbc918f5a255ffff5c5f22c2a75a4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Feb 5 12:28:23 2015 +0100 - ajout de l'export de fichiers techniques (protocol, reférentiels temporaires) - amélioration du packaging - nettoyage de code --- .../export/generic/GlobalExportContext.java | 292 ++++++++ .../export/generic/OperationExportContext.java | 111 +++ .../service/export/generic/TuttiExportService.java | 833 ++++++++------------- .../{ => csv}/AccidentalCatchExportModel.java | 2 +- .../{ => csv}/AccidentalCatchExportRow.java | 2 +- .../export/generic/{ => csv}/CatchExportModel.java | 2 +- .../export/generic/{ => csv}/CatchExportRow.java | 2 +- .../generic/{ => csv}/ExportSampleCategory.java | 2 +- .../{ => csv}/GearCaracteristicExportModel.java | 2 +- .../{ => csv}/GearCaracteristicExportRow.java | 2 +- .../IndividualObservationExportModel.java | 2 +- .../{ => csv}/IndividualObservationExportRow.java | 2 +- .../generic/{ => csv}/MarineLitterExportModel.java | 2 +- .../generic/{ => csv}/MarineLitterExportRow.java | 2 +- .../generic/{ => csv}/OperationExportModel.java | 2 +- .../generic/{ => csv}/OperationExportRow.java | 2 +- .../generic/{ => csv}/ParameterExportModel.java | 2 +- .../generic/{ => csv}/ParameterExportRow.java | 2 +- .../generic/{ => csv}/SpeciesExportModel.java | 9 +- .../export/generic/{ => csv}/SpeciesExportRow.java | 2 +- .../generic/{ => csv}/SurveyExportModel.java | 2 +- .../export/generic/{ => csv}/SurveyExportRow.java | 2 +- 22 files changed, 720 insertions(+), 561 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java new file mode 100644 index 0000000..fece275 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GlobalExportContext.java @@ -0,0 +1,292 @@ +package fr.ifremer.tutti.service.export.generic; + +import com.google.common.base.Charsets; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchExportModel; +import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchExportRow; +import fr.ifremer.tutti.service.export.generic.csv.CatchExportModel; +import fr.ifremer.tutti.service.export.generic.csv.CatchExportRow; +import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicExportModel; +import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicExportRow; +import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationExportModel; +import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationExportRow; +import fr.ifremer.tutti.service.export.generic.csv.MarineLitterExportModel; +import fr.ifremer.tutti.service.export.generic.csv.MarineLitterExportRow; +import fr.ifremer.tutti.service.export.generic.csv.OperationExportModel; +import fr.ifremer.tutti.service.export.generic.csv.OperationExportRow; +import fr.ifremer.tutti.service.export.generic.csv.ParameterExportModel; +import fr.ifremer.tutti.service.export.generic.csv.ParameterExportRow; +import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportModel; +import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportRow; +import fr.ifremer.tutti.service.export.generic.csv.SurveyExportModel; +import fr.ifremer.tutti.service.export.generic.csv.SurveyExportRow; +import org.apache.commons.io.IOUtils; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.BufferedWriter; +import java.io.Closeable; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +import static org.nuiton.i18n.I18n.t; + +/** +* Created on 2/5/15. +* +* @author Tony Chemit - chemit@codelutin.com +* @since 3.13 +*/ +public class GlobalExportContext implements Closeable { + + File protocolFile; + + File temporaryGearFile; + + File temporaryPersonFile; + + File temporarySpeciesFile; + + File temporaryVesselFile; + + File surveyFile; + + File gearCaracteristicsFile; + + File operationFile; + + File parameterFile; + + File marineLitterFile; + + File individualObservationFile; + + File catchFile; + + File accidentalCatchFile; + + File speciesFile; + + BufferedWriter surveyWriter; + + BufferedWriter gearCaracteristicsWriter; + + BufferedWriter operationWriter; + + BufferedWriter parameterWriter; + + BufferedWriter marineLitterWriter; + + BufferedWriter catchWriter; + + BufferedWriter accidentalCatchWriter; + + BufferedWriter individualObservationWriter; + + BufferedWriter speciesWriter; + + SurveyExportModel surveyModel; + + GearCaracteristicExportModel gearCaracteristicsModel; + + OperationExportModel operationModel; + + MarineLitterExportModel marineLitterModel; + + ParameterExportModel parameterModel; + + CatchExportModel catchModel; + + AccidentalCatchExportModel accidentalCatchModel; + + IndividualObservationExportModel individualObservationModel; + + SpeciesExportModel speciesModel; + + final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); + + TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport; + + TuttiCsvUtil.TuttiRepeatableExport<GearCaracteristicExportRow> gearCaracteristicsExport; + + TuttiCsvUtil.TuttiRepeatableExport<OperationExportRow> operationExport; + + TuttiCsvUtil.TuttiRepeatableExport<MarineLitterExportRow> marineLitterExport; + + TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> parameterExport; + + TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport; + + TuttiCsvUtil.TuttiRepeatableExport<AccidentalCatchExportRow> accidentalCatchExport; + + TuttiCsvUtil.TuttiRepeatableExport<IndividualObservationExportRow> individualObservationExport; + + TuttiCsvUtil.TuttiRepeatableExport<SpeciesExportRow> speciesExport; + + Map<String, Species> speciesById; + + String checkError; + + GlobalExportContext(File basedir, + char csvSeparator, + DecoratorService decoratorService, + Caracteristic weightMeasuredCaracteristic, + Caracteristic deadOrAliveCaracteristic, + Caracteristic genderCaracteristic, + Caracteristic pmfmIdCaracteristic, + SampleCategoryModel sampleCategoryModel, + Map<String, Species> speciesById) { + + this.speciesById = speciesById; + try { + + protocolFile = new File(basedir, "protocol.tuttiProtocol"); + temporaryGearFile = new File(basedir, "temporayGear.csv"); + temporaryPersonFile = new File(basedir, "temporayPerson.csv"); + temporarySpeciesFile = new File(basedir, "temporaySpecies.csv"); + temporaryVesselFile = new File(basedir, "temporayVessel.csv"); + + surveyFile = new File(basedir, "survey.csv"); + surveyWriter = Files.newWriter(surveyFile, Charsets.UTF_8); + + gearCaracteristicsFile = new File(basedir, "gearCaracteristics.csv"); + gearCaracteristicsWriter = Files.newWriter(gearCaracteristicsFile, Charsets.UTF_8); + + operationFile = new File(basedir, "operation.csv"); + operationWriter = Files.newWriter(operationFile, Charsets.UTF_8); + + marineLitterFile = new File(basedir, "marineLitter.csv"); + marineLitterWriter = Files.newWriter(marineLitterFile, Charsets.UTF_8); + + parameterFile = new File(basedir, "parameter.csv"); + parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8); + + catchFile = new File(basedir, "catch.csv"); + catchWriter = Files.newWriter(catchFile, Charsets.UTF_8); + + accidentalCatchFile = new File(basedir, "accidentalCatch.csv"); + accidentalCatchWriter = Files.newWriter(accidentalCatchFile, Charsets.UTF_8); + + individualObservationFile = new File(basedir, "individualObservation.csv"); + individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8); + + speciesFile = new File(basedir, "species.csv"); + speciesWriter = Files.newWriter(speciesFile, Charsets.UTF_8); + + } catch (FileNotFoundException e) { + + // should never happen + throw new ApplicationTechnicalException(t("tutti.service.export.context.error"), e); + } + + surveyModel = new SurveyExportModel(csvSeparator); + + gearCaracteristicsModel = new GearCaracteristicExportModel( + csvSeparator, decoratorService); + + operationModel = + new OperationExportModel( + csvSeparator, + decoratorService.getDecoratorByType(Vessel.class)); + + parameterModel = new ParameterExportModel( + csvSeparator, decoratorService); + + marineLitterModel = new MarineLitterExportModel(csvSeparator); + catchModel = new CatchExportModel(csvSeparator, + sampleCategoryModel, + decoratorService); + accidentalCatchModel = new AccidentalCatchExportModel( + csvSeparator, + deadOrAliveCaracteristic, + genderCaracteristic, + weightMeasuredCaracteristic, + pmfmIdCaracteristic); + individualObservationModel = new IndividualObservationExportModel( + csvSeparator, + weightMeasuredCaracteristic, + pmfmIdCaracteristic); + + speciesModel = new SpeciesExportModel( + csvSeparator); + + surveyExport = TuttiCsvUtil.newRepeatableExport(surveyModel); + + gearCaracteristicsExport = TuttiCsvUtil.newRepeatableExport( + gearCaracteristicsModel); + + operationExport = TuttiCsvUtil.newRepeatableExport( + operationModel); + + parameterExport = TuttiCsvUtil.newRepeatableExport( + parameterModel); + + marineLitterExport = TuttiCsvUtil.newRepeatableExport( + marineLitterModel); + + catchExport = TuttiCsvUtil.newRepeatableExport(catchModel); + accidentalCatchExport = TuttiCsvUtil.newRepeatableExport(accidentalCatchModel); + individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel); + speciesExport = TuttiCsvUtil.newRepeatableExport(speciesModel); + } + + @Override + public void close() throws IOException { + IOUtils.closeQuietly(surveyWriter); + IOUtils.closeQuietly(gearCaracteristicsWriter); + IOUtils.closeQuietly(operationWriter); + IOUtils.closeQuietly(parameterWriter); + IOUtils.closeQuietly(catchWriter); + IOUtils.closeQuietly(accidentalCatchWriter); + IOUtils.closeQuietly(marineLitterWriter); + IOUtils.closeQuietly(individualObservationWriter); + IOUtils.closeQuietly(speciesWriter); + } + + public String getCheckError() { + return checkError; + } + + public void setCheckError(String checkError) { + this.checkError = checkError; + } + + public void addSpecies(Species species) { + String speciesId = species.getId(); + if (!speciesToExport.containsKey(speciesId)) { + + // not treated species, add a new row + Species fullSpecies = speciesById.get(speciesId); + SpeciesExportRow row = new SpeciesExportRow(); + row.setSpecies(fullSpecies); + speciesToExport.put(speciesId, row); + // add the survey code (see http://forge.codelutin.com/issues/4799) + species.setSurveyCode(fullSpecies.getSurveyCode()); + } + } + + public List<SpeciesExportRow> getSpeciesToExport() { + List<SpeciesExportRow> result = + Lists.newArrayList(speciesToExport.values()); + + Collections.sort(result, new Comparator<SpeciesExportRow>() { + @Override + public int compare(SpeciesExportRow o1, SpeciesExportRow o2) { + return o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId()); + } + }); + return result; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java new file mode 100644 index 0000000..ed18610 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportContext.java @@ -0,0 +1,111 @@ +package fr.ifremer.tutti.service.export.generic; + +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.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.catches.WeightComputingService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.13 + */ +public class OperationExportContext { + + /** Logger. */ + private static final Log log = LogFactory.getLog(OperationExportContext.class); + + protected final FishingOperation operation; + + private final CatchBatch catchBatch; + + private BatchContainer<MarineLitterBatch> rootMarineLitterBatch; + + private BatchContainer<SpeciesBatch> rootSpeciesBatch; + + private BatchContainer<BenthosBatch> rootBenthosBatch; + + private boolean withCatchBatch; + + public OperationExportContext(FishingOperation operation, PersistenceService persistenceService, WeightComputingService weightComputingService) { + + this.operation = operation; + + String operationId = operation.getId(); + + withCatchBatch = persistenceService.isFishingOperationWithCatchBatch(operationId); + + if (withCatchBatch) { + + + // load batches + + catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); + + boolean withError = false; + + try { + rootSpeciesBatch = weightComputingService.getComputedSpeciesBatches(operationId); + } catch (Exception e) { + withError = true; + rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operationId, false); + } + + try { + rootBenthosBatch = weightComputingService.getComputedBenthosBatches(operationId); + } catch (Exception e) { + withError = true; + rootBenthosBatch = persistenceService.getRootBenthosBatch(operationId, false); + } + + try { + rootMarineLitterBatch = weightComputingService.getComputedMarineLitterBatches(operationId, catchBatch.getMarineLitterTotalWeight()); + } catch (Exception e) { + withError = true; + rootMarineLitterBatch = persistenceService.getRootMarineLitterBatch(operationId); + } + + // apply compute weights + + if (!withError) { + weightComputingService.computeCatchBatchWeights(catchBatch, rootSpeciesBatch, rootBenthosBatch, rootMarineLitterBatch); + } + } else { + if (log.isWarnEnabled()) { + log.warn("Skip fishing operation " + operationId + " since no catchBatch associated."); + } + catchBatch = null; + rootSpeciesBatch = null; + rootBenthosBatch = null; + rootMarineLitterBatch = null; + } + + } + + public CatchBatch getCatchBatch() { + return catchBatch; + } + + public BatchContainer<MarineLitterBatch> getRootMarineLitterBatch() { + return rootMarineLitterBatch; + } + + public BatchContainer<SpeciesBatch> getRootSpeciesBatch() { + return rootSpeciesBatch; + } + + public BatchContainer<BenthosBatch> getRootBenthosBatch() { + return rootBenthosBatch; + } + + public boolean isWithCatchBatch() { + return withCatchBatch; + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java index 57c4721..d975cc4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java @@ -22,11 +22,9 @@ package fr.ifremer.tutti.service.export.generic; * #L% */ -import com.google.common.base.Charsets; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.io.Files; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -35,22 +33,35 @@ 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.MarineLitterBatch; 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.Caracteristic; 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.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.TuttiCsvUtil; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.catches.WeightComputingService; +import fr.ifremer.tutti.service.export.generic.csv.AccidentalCatchExportRow; +import fr.ifremer.tutti.service.export.generic.csv.CatchExportRow; +import fr.ifremer.tutti.service.export.generic.csv.GearCaracteristicExportRow; +import fr.ifremer.tutti.service.export.generic.csv.IndividualObservationExportRow; +import fr.ifremer.tutti.service.export.generic.csv.MarineLitterExportRow; +import fr.ifremer.tutti.service.export.generic.csv.OperationExportRow; +import fr.ifremer.tutti.service.export.generic.csv.ParameterExportRow; +import fr.ifremer.tutti.service.export.generic.csv.SpeciesExportRow; +import fr.ifremer.tutti.service.export.generic.csv.SurveyExportRow; +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 fr.ifremer.tutti.util.Numbers; import org.apache.commons.collections4.MapUtils; import org.apache.commons.io.IOUtils; @@ -61,13 +72,8 @@ import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; -import java.io.BufferedWriter; -import java.io.Closeable; import java.io.File; -import java.io.FileNotFoundException; import java.io.IOException; -import java.util.Collections; -import java.util.Comparator; import java.util.List; import java.util.Map; @@ -83,8 +89,7 @@ import static org.nuiton.i18n.I18n.t; */ public class TuttiExportService extends AbstractTuttiService { - private static final Log log = - LogFactory.getLog(TuttiExportService.class); + private static final Log log = LogFactory.getLog(TuttiExportService.class); protected PersistenceService persistenceService; @@ -92,6 +97,16 @@ public class TuttiExportService extends AbstractTuttiService { protected WeightComputingService weightComputingService; + protected ReferentialTemporaryGearService referentialTemporaryGearService; + + protected ReferentialTemporaryPersonService referentialTemporaryPersonService; + + protected ReferentialTemporarySpeciesService referentialTemporarySpeciesService; + + protected ReferentialTemporaryVesselService referentialTemporaryVesselService; + + protected ProtocolImportExportService protocolImportExportService; + protected Caracteristic verticalOpeningCaracteristic; protected Caracteristic horizontalOpeningWingCaracteristic; @@ -112,6 +127,11 @@ public class TuttiExportService extends AbstractTuttiService { persistenceService = getService(PersistenceService.class); decoratorService = getService(DecoratorService.class); weightComputingService = getService(WeightComputingService.class); + referentialTemporaryGearService = getService(ReferentialTemporaryGearService.class); + referentialTemporaryPersonService = getService(ReferentialTemporaryPersonService.class); + referentialTemporarySpeciesService = getService(ReferentialTemporarySpeciesService.class); + referentialTemporaryVesselService = getService(ReferentialTemporaryVesselService.class); + protocolImportExportService = getService(ProtocolImportExportService.class); verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic(); horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingsCaracteristic(); @@ -122,9 +142,20 @@ public class TuttiExportService extends AbstractTuttiService { genderCaracteristic = persistenceService.getSexCaracteristic(); } - public void exportProgram(String programId, - File exportFile, - ProgressionModel progressionModel) { + public ProgressionModel createExportProgramProgessionModel(String programId) { + + // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / species) + (protocol + + // temporary gear + temporary person + temporar species + temporary vessel + zip) + + List<Cruise> allCruise = persistenceService.getAllCruise(programId); + + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.setTotal(9 * allCruise.size() + 6); + return progressionModel; + + } + + public void exportProgram(String programId, File exportFile, ProgressionModel progressionModel) { Preconditions.checkNotNull(programId); Preconditions.checkNotNull(exportFile); @@ -139,12 +170,12 @@ public class TuttiExportService extends AbstractTuttiService { List<Cruise> allCruise = persistenceService.getAllCruise(programId); - File basedir = new File(context.getConfig().newTempFile( - "exportProgram"), "exportProgram-" + programId); + File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - ExportContext exportContext = createExportContext(basedir); + GlobalExportContext exportContext = createExportContext(basedir); + exportTechnicalFiles(exportContext, progressionModel); try { for (Cruise cruise : allCruise) { @@ -154,8 +185,7 @@ public class TuttiExportService extends AbstractTuttiService { } ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - increments(progressionModel, - t("tutti.service.exportCruise.buildZip", exportFile)); + increments(progressionModel, t("tutti.service.exportCruise.buildZip", exportFile)); ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.export.zip.error", exportFile)); } finally { @@ -163,9 +193,18 @@ public class TuttiExportService extends AbstractTuttiService { } } - public void exportCruise(String cruiseId, - File exportFile, - ProgressionModel progressionModel) { + public ProgressionModel createExportCruiseProgessionModel() { + + // (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / species) + + // (protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) + + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.setTotal(9 + 6); + return progressionModel; + + } + + public void exportCruise(String cruiseId, File exportFile, ProgressionModel progressionModel) { Preconditions.checkNotNull(cruiseId); Preconditions.checkNotNull(exportFile); @@ -191,19 +230,19 @@ public class TuttiExportService extends AbstractTuttiService { checkError = e; } - File basedir = new File(context.getConfig().newTempFile( - "exportCruise"), "exportCruise-" + cruiseId); + File basedir = new File(context.getConfig().newTempFile("exportCruise"), "exportCruise-" + cruiseId); ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - ExportContext exportContext = createExportContext(basedir); + GlobalExportContext exportContext = createExportContext(basedir); + + exportTechnicalFiles(exportContext, progressionModel); try { exportCruise(cruise, exportContext, progressionModel); ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - progressionModel.increments( - t("tutti.service.exportCruise.buildZip", exportFile)); + increments(progressionModel, t("tutti.service.exportCruise.buildZip", exportFile)); ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.export.zip.error", exportFile)); } catch (ApplicationBusinessException e) { @@ -220,17 +259,110 @@ public class TuttiExportService extends AbstractTuttiService { } } + protected void exportTechnicalFiles(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + exportProtocol(exportContext, progressionModel); + exportTemporaryGears(exportContext, progressionModel); + exportTemporaryPersons(exportContext, progressionModel); + exportTemporarySpeciess(exportContext, progressionModel); + exportTemporaryVessels(exportContext, progressionModel); + + } + + protected void exportTemporaryGears(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); + + if (temporaryGears.isEmpty()) { + + increments(progressionModel, t("tutti.service.genericExport.skipTemporaryGearExport")); + } else { + + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); + + try { + referentialTemporaryGearService.exportTemporaryGear(exportContext.temporaryGearFile, temporaryGears); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not export temporary gears", e); + } + + } + + } + + + protected void exportTemporaryPersons(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); + + if (temporaryPersons.isEmpty()) { + + increments(progressionModel, t("tutti.service.genericExport.skipTemporaryPersonExport")); + } else { + + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); + + try { + referentialTemporaryPersonService.exportTemporaryPerson(exportContext.temporaryPersonFile, temporaryPersons); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not export temporary person", e); + } + + } + + } + + protected void exportTemporarySpeciess(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); + + if (temporarySpeciess.isEmpty()) { + + increments(progressionModel, t("tutti.service.genericExport.skipTemporarySpeciesExport")); + } else { + + increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); + + try { + referentialTemporarySpeciesService.exportTemporarySpecies(exportContext.temporarySpeciesFile, temporarySpeciess); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not export temporary species", e); + } + + } + + } + + protected void exportTemporaryVessels(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); + + if (temporaryVessels.isEmpty()) { + + increments(progressionModel, t("tutti.service.genericExport.skipTemporaryVesselExport")); + } else { + + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); + + try { + referentialTemporaryVesselService.exportTemporaryVessel(exportContext.temporaryVesselFile, temporaryVessels); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not export temporary vessels", e); + } + + } + + } + /** - * Export the given fishing operation of a cruise to file system - * in a temporary directory. + * Export the given fishing operation of a cruise to file system in a temporary directory. * * @param cruiseId id of the cruise to export * @param fishingOperationId id of the fishing operation to export * @return the directory containing the export files * @since 3.0-rc-2 */ - public File exportFishingOperation(String cruiseId, - String fishingOperationId) { + public File exportFishingOperation(String cruiseId, String fishingOperationId) { Preconditions.checkNotNull(cruiseId); @@ -255,21 +387,16 @@ public class TuttiExportService extends AbstractTuttiService { checkError = e; } - File basedir = new File(context.getConfig().newTempFile( - "exportCruise"), "exportCruise-" + cruiseId); + File basedir = new File(context.getConfig().newTempFile("exportCruise"), "exportCruise-" + cruiseId); ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - ExportContext exportContext = createExportContext(basedir); + GlobalExportContext exportContext = createExportContext(basedir); - FishingOperation fishingOperation = - persistenceService.getFishingOperation(fishingOperationId); + FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); try { - exportCruise(cruise, - Lists.newArrayList(fishingOperation), - exportContext, - null); + exportCruise(cruise, Lists.newArrayList(fishingOperation), exportContext, null); ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); } finally { IOUtils.closeQuietly(exportContext); @@ -282,48 +409,38 @@ public class TuttiExportService extends AbstractTuttiService { return basedir; } - protected ExportContext createExportContext(File basedir) { - + protected GlobalExportContext createExportContext(File basedir) { List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); Map<String, Species> speciesById = TuttiEntities.splitById(allReferentSpecies); - char csvSeparator = context.getConfig().getCsvSeparator(); - - return new ExportContext( - basedir, - csvSeparator, - decoratorService, - weightMeasuredCaracteristic, - deadOrAliveCaracteristic, - genderCaracteristic, - pmfmIdCaracteristic, - context.getSampleCategoryModel(), - speciesById); + return new GlobalExportContext(basedir, + ';', + decoratorService, + weightMeasuredCaracteristic, + deadOrAliveCaracteristic, + genderCaracteristic, + pmfmIdCaracteristic, + context.getSampleCategoryModel(), + speciesById); + } - protected void checkCruise(ProgressionModel progressionModel, - Cruise cruise, - String fishingOperationId) { + protected void checkCruise(ProgressionModel progressionModel, Cruise cruise, String fishingOperationId) { Preconditions.checkNotNull(cruise); - increments(progressionModel, - t("tutti.service.exportCruise.checkCruise", cruise.getName())); + increments(progressionModel, t("tutti.service.exportCruise.checkCruise", cruise.getName())); // check cruise fishing operations - Map<String, String> errors = - weightComputingService.checkCruise(cruise.getId(), - fishingOperationId); + Map<String, String> errors = weightComputingService.checkCruise(cruise.getId(), fishingOperationId); if (MapUtils.isNotEmpty(errors)) { // there is some fishing operations with some errors - Decorator<Cruise> cruiseDecorator = - decoratorService.getDecoratorByType(Cruise.class); + Decorator<Cruise> cruiseDecorator = decoratorService.getDecoratorByType(Cruise.class); - Decorator<FishingOperation> fishingOperationDecorator = - decoratorService.getDecoratorByType(FishingOperation.class); + Decorator<FishingOperation> fishingOperationDecorator = decoratorService.getDecoratorByType(FishingOperation.class); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : errors.entrySet()) { String operationId = entry.getKey(); @@ -332,82 +449,80 @@ public class TuttiExportService extends AbstractTuttiService { sb.append(t("tutti.service.export.invalid.fishingOperation", fishingOperationStr, entry.getValue())); } String cruiseStr = cruiseDecorator.toString(cruise); - throw new ApplicationBusinessException( - t("tutti.service.export.invalid.cruise", cruiseStr, sb.toString())); + throw new ApplicationBusinessException(t("tutti.service.export.invalid.cruise", cruiseStr, sb.toString())); } } - protected void increments(ProgressionModel progressionModel, - String message) { + protected void increments(ProgressionModel progressionModel, String message) { if (progressionModel != null) { progressionModel.increments(message); } + if (log.isInfoEnabled()) { + log.info(message); + } + } + + protected void exportProtocol(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + boolean protocolFilled = context.getDataContext().isProtocolFilled(); + if (protocolFilled) { + + TuttiProtocol protocol = persistenceService.getProtocol(); + increments(progressionModel, t("tutti.service.genericExport.exportProtocol", protocol.getName())); + protocolImportExportService.exportProtocol(protocol, exportContext.protocolFile); + + } else { + increments(progressionModel, t("tutti.service.genericExport.skipProtocolExport")); + } + } - protected void exportCruise(Cruise cruise, - ExportContext exportContext, - ProgressionModel progressionModel) { + protected void exportCruise(Cruise cruise, GlobalExportContext exportContext, ProgressionModel progressionModel) { - List<FishingOperation> operations = - persistenceService.getAllFishingOperation(cruise.getId()); + List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); exportCruise(cruise, operations, exportContext, progressionModel); } - protected void exportCruise(Cruise cruise, - List<FishingOperation> operations, - ExportContext exportContext, - ProgressionModel progressionModel) { + protected void exportCruise(Cruise cruise, List<FishingOperation> operations, GlobalExportContext exportContext, ProgressionModel progressionModel) { // load fully operations - List<FishingOperation> loadedOperations = - Lists.newArrayListWithCapacity(operations.size()); + List<FishingOperation> loadedOperations = Lists.newArrayListWithCapacity(operations.size()); for (FishingOperation operation : operations) { - FishingOperation loadedOeration = - persistenceService.getFishingOperation(operation.getId()); + FishingOperation loadedOeration = persistenceService.getFishingOperation(operation.getId()); loadedOperations.add(loadedOeration); } String cruiseName = cruise.getName(); - increments(progressionModel, - t("tutti.service.exportCruise.exportSurvey", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportSurvey", cruiseName)); exportSurvey(exportContext, cruise); - increments(progressionModel, - t("tutti.service.exportCruise.exportGearCaracteristics", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportGearCaracteristics", cruiseName)); exportGearCaracteristics(exportContext, cruise); - increments(progressionModel, - t("tutti.service.exportCruise.exportOperations", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportOperations", cruiseName)); exportOperations(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportParameters", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportParameters", cruiseName)); exportParameters(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportMarineLitters", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportMarineLitters", cruiseName)); exportMarineLitters(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportIndividualObservations", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportIndividualObservations", cruiseName)); exportIndividualObservations(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportAccidentalCatches", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportAccidentalCatches", cruiseName)); exportAccidentalCatch(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportCatches", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportCatches", cruiseName)); exportCatches(exportContext, cruise, loadedOperations); - increments(progressionModel, - t("tutti.service.exportCruise.exportSpecies", cruiseName)); + increments(progressionModel, t("tutti.service.exportCruise.exportSpecies", cruiseName)); exportSpecies(exportContext, exportContext.getSpeciesToExport()); } - protected void exportSurvey(ExportContext exportContext, - Cruise cruise) { + protected void exportSurvey(GlobalExportContext exportContext, Cruise cruise) { List<TuttiLocation> allCountry = persistenceService.getAllCountry(); String countryId = context.getConfig().getExportCountryId(); @@ -423,8 +538,7 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportGearCaracteristics(ExportContext exportContext, - Cruise cruise) { + protected void exportGearCaracteristics(GlobalExportContext exportContext, Cruise cruise) { try { List<GearCaracteristicExportRow> rows = Lists.newArrayList(); @@ -432,10 +546,7 @@ public class TuttiExportService extends AbstractTuttiService { for (Gear gear : cruise.getGear()) { CaracteristicMap caracteristics = - persistenceService.getGearCaracteristics( - cruise.getId(), - gear.getId(), - gear.getRankOrder()); + persistenceService.getGearCaracteristics(cruise.getId(), gear.getId(), gear.getRankOrder()); Gear gearWithCaracteristics = Gears.newGear(gear); gearWithCaracteristics.setCaracteristics(caracteristics); @@ -448,9 +559,7 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportOperations(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportOperations(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { @@ -458,12 +567,9 @@ public class TuttiExportService extends AbstractTuttiService { for (FishingOperation operation : operations) { - OperationContext operationContext = getOperationContext(operation); + OperationExportContext operationContext = getOperationContext(operation); CatchBatch catchBatch = operationContext.getCatchBatch(); - exportContext.operationModel.prepareRows(rows, - cruise, - operation, - catchBatch); + exportContext.operationModel.prepareRows(rows, cruise, operation, catchBatch); } exportContext.operationExport.write(rows, exportContext.operationWriter); @@ -472,9 +578,7 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportParameters(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportParameters(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { @@ -489,14 +593,12 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportMarineLitters(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportMarineLitters(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { - OperationContext operationContext = getOperationContext(operation); + OperationExportContext operationContext = getOperationContext(operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -512,14 +614,12 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportIndividualObservations(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportIndividualObservations(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { - OperationContext operationContext = getOperationContext(operation); + OperationExportContext operationContext = getOperationContext(operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { @@ -527,9 +627,7 @@ public class TuttiExportService extends AbstractTuttiService { } List<IndividualObservationExportRow> rows = Lists.newArrayList(); exportContext.individualObservationModel.prepareRows(persistenceService, rows, cruise, operation); - exportContext.speciesModel.prepareIndividualRows( - exportContext, - rows); + exportContext.speciesModel.prepareIndividualRows(exportContext, rows); exportContext.individualObservationExport.write(rows, exportContext.individualObservationWriter); } @@ -538,17 +636,13 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportAccidentalCatch(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportAccidentalCatch(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { List<AccidentalCatchExportRow> rows = Lists.newArrayList(); exportContext.accidentalCatchModel.prepareRows(persistenceService, rows, cruise, operation); - exportContext.speciesModel.prepareAccidentalRows( - exportContext, - rows); + exportContext.speciesModel.prepareAccidentalRows(exportContext, rows); exportContext.accidentalCatchExport.write(rows, exportContext.accidentalCatchWriter); } @@ -557,455 +651,116 @@ public class TuttiExportService extends AbstractTuttiService { } } - protected void exportCatches(ExportContext exportContext, - Cruise cruise, - List<FishingOperation> operations) { + protected void exportCatches(GlobalExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { try { for (FishingOperation operation : operations) { - OperationContext operationContext = getOperationContext(operation); + OperationExportContext operationContext = getOperationContext(operation); boolean withCatchBatch = operationContext.isWithCatchBatch(); if (!withCatchBatch) { continue; } - CatchBatch catchBatch = operationContext.getCatchBatch(); - - BatchContainer<SpeciesBatch> rootSpeciesBatch = - operationContext.getRootSpeciesBatch(); - - BatchContainer<BenthosBatch> rootBenthosBatch = - operationContext.getRootBenthosBatch(); - - // Warning! This will also add the survey code to bathc species - exportContext.speciesModel.prepareBatchRows( - exportContext, - rootSpeciesBatch, - 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(); + exportCatch(exportContext, cruise, operation, operationContext); - 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 || totalSampleSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor); - Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null || totalSampleSortedBenthosWeight == 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); - } - - List<CatchExportRow> rows = Lists.newArrayList(); - exportContext.catchModel.prepareRows(persistenceService, - rows, - cruise, - operation, - rootSpeciesBatch, - rootBenthosBatch, - speciesCatchRaisingFactor, - benthosCatchRaisingFactor); - - exportContext.catchExport.write(rows, exportContext.catchWriter); } } catch (Exception e) { - throw new ApplicationTechnicalException( - t("tutti.service.export.catches.error"), e); - } - } - - protected void exportSpecies(ExportContext exportContext, - List<SpeciesExportRow> rows) { - - try { - - exportContext.speciesExport.write(rows, exportContext.speciesWriter); - - } catch (Exception e) { - throw new ApplicationTechnicalException( - t("tutti.service.export.species.error"), e); + throw new ApplicationTechnicalException(t("tutti.service.export.catches.error"), e); } } - protected static class ExportContext implements Closeable { - - File surveyFile; - - File gearCaracteristicsFile; - - File operationFile; - - File parameterFile; - - File marineLitterFile; - - File individualObservationFile; - - File catchFile; - - File accidentalCatchFile; - - File speciesFile; - - BufferedWriter surveyWriter; - - BufferedWriter gearCaracteristicsWriter; - - BufferedWriter operationWriter; - - BufferedWriter parameterWriter; - - BufferedWriter marineLitterWriter; - - BufferedWriter catchWriter; - - BufferedWriter accidentalCatchWriter; - - BufferedWriter individualObservationWriter; - - BufferedWriter speciesWriter; - - SurveyExportModel surveyModel; - - GearCaracteristicExportModel gearCaracteristicsModel; - - OperationExportModel operationModel; - - MarineLitterExportModel marineLitterModel; - - ParameterExportModel parameterModel; - - CatchExportModel catchModel; + protected void exportCatch(GlobalExportContext exportContext, Cruise cruise, FishingOperation operation, OperationExportContext operationContext) throws Exception { - AccidentalCatchExportModel accidentalCatchModel; + CatchBatch catchBatch = operationContext.getCatchBatch(); - IndividualObservationExportModel individualObservationModel; + BatchContainer<SpeciesBatch> rootSpeciesBatch = operationContext.getRootSpeciesBatch(); - SpeciesExportModel speciesModel; + BatchContainer<BenthosBatch> rootBenthosBatch = operationContext.getRootBenthosBatch(); - final Map<String, SpeciesExportRow> speciesToExport = Maps.newTreeMap(); - - TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport; - - TuttiCsvUtil.TuttiRepeatableExport<GearCaracteristicExportRow> gearCaracteristicsExport; - - TuttiCsvUtil.TuttiRepeatableExport<OperationExportRow> operationExport; - - TuttiCsvUtil.TuttiRepeatableExport<MarineLitterExportRow> marineLitterExport; - - TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> parameterExport; - - TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport; - - TuttiCsvUtil.TuttiRepeatableExport<AccidentalCatchExportRow> accidentalCatchExport; - - TuttiCsvUtil.TuttiRepeatableExport<IndividualObservationExportRow> individualObservationExport; - - TuttiCsvUtil.TuttiRepeatableExport<SpeciesExportRow> speciesExport; - - Map<String, Species> speciesById; - - String checkError; - - ExportContext(File basedir, - char csvSeparator, - DecoratorService decoratorService, - Caracteristic weightMeasuredCaracteristic, - Caracteristic deadOrAliveCaracteristic, - Caracteristic genderCaracteristic, - Caracteristic pmfmIdCaracteristic, - SampleCategoryModel sampleCategoryModel, - Map<String, Species> speciesById) { - - this.speciesById = speciesById; - try { - - surveyFile = new File(basedir, "survey.csv"); - surveyWriter = Files.newWriter(surveyFile, Charsets.UTF_8); - - gearCaracteristicsFile = new File(basedir, "gearCaracteristics.csv"); - gearCaracteristicsWriter = Files.newWriter(gearCaracteristicsFile, Charsets.UTF_8); - - operationFile = new File(basedir, "operation.csv"); - operationWriter = Files.newWriter(operationFile, Charsets.UTF_8); - - marineLitterFile = new File(basedir, "marineLitter.csv"); - marineLitterWriter = Files.newWriter(marineLitterFile, Charsets.UTF_8); - - parameterFile = new File(basedir, "parameter.csv"); - parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8); - - catchFile = new File(basedir, "catch.csv"); - catchWriter = Files.newWriter(catchFile, Charsets.UTF_8); - - accidentalCatchFile = new File(basedir, "accidentalCatch.csv"); - accidentalCatchWriter = Files.newWriter(accidentalCatchFile, Charsets.UTF_8); - - individualObservationFile = new File(basedir, "individualObservation.csv"); - individualObservationWriter = Files.newWriter(individualObservationFile, Charsets.UTF_8); - - speciesFile = new File(basedir, "species.csv"); - speciesWriter = Files.newWriter(speciesFile, Charsets.UTF_8); - - } catch (FileNotFoundException e) { - - // should never happen - throw new ApplicationTechnicalException(t("tutti.service.export.context.error"), e); - } + // Warning! This will also add the survey code to bathc species + exportContext.speciesModel.prepareBatchRows(exportContext, rootSpeciesBatch, rootBenthosBatch); - surveyModel = new SurveyExportModel(csvSeparator); + Float totalWeight = Numbers.getValueOrComputedValue( + catchBatch.getCatchTotalWeight(), + catchBatch.getCatchTotalComputedWeight()); - gearCaracteristicsModel = new GearCaracteristicExportModel( - csvSeparator, decoratorService); + Float totalUnsortedWeight = catchBatch.getCatchTotalUnsortedComputedWeight(); - operationModel = - new OperationExportModel( - csvSeparator, - decoratorService.getDecoratorByType(Vessel.class)); - parameterModel = new ParameterExportModel( - csvSeparator, decoratorService); + Float totalSortedSpeciesWeight = Numbers.getValueOrComputedValue( + catchBatch.getSpeciesTotalSortedWeight(), + catchBatch.getSpeciesTotalSortedComputedWeight()); - marineLitterModel = new MarineLitterExportModel(csvSeparator); - catchModel = new CatchExportModel(csvSeparator, - sampleCategoryModel, - decoratorService); - accidentalCatchModel = new AccidentalCatchExportModel( - csvSeparator, - deadOrAliveCaracteristic, - genderCaracteristic, - weightMeasuredCaracteristic, - pmfmIdCaracteristic); - individualObservationModel = new IndividualObservationExportModel( - csvSeparator, - weightMeasuredCaracteristic, - pmfmIdCaracteristic); + Float totalSampleSortedSpeciesWeight = catchBatch.getSpeciesTotalSampleSortedComputedWeight(); - speciesModel = new SpeciesExportModel( - csvSeparator); + Float totalSortedBenthosWeight = Numbers.getValueOrComputedValue( + catchBatch.getBenthosTotalSortedWeight(), + catchBatch.getBenthosTotalSortedComputedWeight()); - surveyExport = TuttiCsvUtil.newRepeatableExport(surveyModel); + Float totalSampleSortedBenthosWeight = catchBatch.getBenthosTotalSampleSortedComputedWeight(); - gearCaracteristicsExport = TuttiCsvUtil.newRepeatableExport( - gearCaracteristicsModel); + Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight(); - operationExport = TuttiCsvUtil.newRepeatableExport( - operationModel); + //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) - parameterExport = TuttiCsvUtil.newRepeatableExport( - parameterModel); + Float catchRaisingFactor = totalWeight == null || totalUnsortedWeight == null || totalSortedWeight == null ? 1 : (totalWeight - totalUnsortedWeight) / totalSortedWeight; - marineLitterExport = TuttiCsvUtil.newRepeatableExport( - marineLitterModel); + Float speciesCatchRaisingFactor = totalSampleSortedSpeciesWeight == null || totalSortedSpeciesWeight == null || totalSampleSortedSpeciesWeight == null ? 1 : (totalSampleSortedSpeciesWeight == 0 ? 0 : (totalSortedSpeciesWeight / totalSampleSortedSpeciesWeight) * catchRaisingFactor); + Float benthosCatchRaisingFactor = totalSampleSortedBenthosWeight == null || totalSortedBenthosWeight == null || totalSampleSortedBenthosWeight == null ? 1 : (totalSampleSortedBenthosWeight == 0 ? 0 : (totalSortedBenthosWeight / totalSampleSortedBenthosWeight) * catchRaisingFactor); - catchExport = TuttiCsvUtil.newRepeatableExport(catchModel); - accidentalCatchExport = TuttiCsvUtil.newRepeatableExport(accidentalCatchModel); - individualObservationExport = TuttiCsvUtil.newRepeatableExport(individualObservationModel); - speciesExport = TuttiCsvUtil.newRepeatableExport(speciesModel); - } - - @Override - public void close() throws IOException { - IOUtils.closeQuietly(surveyWriter); - IOUtils.closeQuietly(gearCaracteristicsWriter); - IOUtils.closeQuietly(operationWriter); - IOUtils.closeQuietly(parameterWriter); - IOUtils.closeQuietly(catchWriter); - IOUtils.closeQuietly(accidentalCatchWriter); - IOUtils.closeQuietly(marineLitterWriter); - IOUtils.closeQuietly(individualObservationWriter); - IOUtils.closeQuietly(speciesWriter); - } - - public String getCheckError() { - return checkError; - } - - public void setCheckError(String checkError) { - this.checkError = checkError; - } - - public void addSpecies(Species species) { - String speciesId = species.getId(); - if (!speciesToExport.containsKey(speciesId)) { - - // not treated species, add a new row - Species fullSpecies = speciesById.get(speciesId); - SpeciesExportRow row = new SpeciesExportRow(); - row.setSpecies(fullSpecies); - speciesToExport.put(speciesId, row); - // add the survey code (see http://forge.codelutin.com/issues/4799) - species.setSurveyCode(fullSpecies.getSurveyCode()); - } - } - - public List<SpeciesExportRow> getSpeciesToExport() { - List<SpeciesExportRow> result = - Lists.newArrayList(speciesToExport.values()); + if (log.isDebugEnabled()) { + String message = "\ncatchTotalWeight : " + totalWeight + + "\ncatchTotalUnsortedWeight : " + totalUnsortedWeight + + "\ntotalSampleSortedSpeciesWeight : " + totalSampleSortedSpeciesWeight + + "\ntotalSampleSortedBenthosWeight : " + totalSampleSortedBenthosWeight + + "\ntotalSortedWeight : " + totalSortedWeight + + "\ncatchRaisingFactor : " + catchRaisingFactor + + "\nspeciesCatchRaisingFactor : " + speciesCatchRaisingFactor + + "\nbenthosCatchRaisingFactor : " + benthosCatchRaisingFactor; + + log.debug(message); + } + + List<CatchExportRow> rows = Lists.newArrayList(); + exportContext.catchModel.prepareRows(persistenceService, + rows, + cruise, + operation, + rootSpeciesBatch, + rootBenthosBatch, + speciesCatchRaisingFactor, + benthosCatchRaisingFactor); + + exportContext.catchExport.write(rows, exportContext.catchWriter); - Collections.sort(result, new Comparator<SpeciesExportRow>() { - @Override - public int compare(SpeciesExportRow o1, SpeciesExportRow o2) { - return o1.getSpecies().getReferenceTaxonId().compareTo(o2.getSpecies().getReferenceTaxonId()); - } - }); - return result; - } } - protected static class OperationContext { - - protected final FishingOperation operation; - - private final CatchBatch catchBatch; - - private BatchContainer<MarineLitterBatch> rootMarineLitterBatch; - - private BatchContainer<SpeciesBatch> rootSpeciesBatch; - - private BatchContainer<BenthosBatch> rootBenthosBatch; - - - protected boolean withCatchBatch; - - public OperationContext(FishingOperation operation, - PersistenceService persistenceService, - WeightComputingService weightComputingService) { - this.operation = operation; - - String operationId = operation.getId(); - - withCatchBatch = - persistenceService.isFishingOperationWithCatchBatch( - operationId); - - if (withCatchBatch) { - + protected void exportSpecies(GlobalExportContext exportContext, List<SpeciesExportRow> rows) { - // load batches - - catchBatch = - persistenceService.getCatchBatchFromFishingOperation( - operationId); - - boolean withError = false; - - try { - rootSpeciesBatch = weightComputingService.getComputedSpeciesBatches(operationId); - } catch (Exception e) { - withError = true; - rootSpeciesBatch = - persistenceService.getRootSpeciesBatch(operationId, false); - } - - try { - rootBenthosBatch = - weightComputingService.getComputedBenthosBatches(operationId); - } catch (Exception e) { - withError = true; - rootBenthosBatch = - persistenceService.getRootBenthosBatch(operationId, false); - } - - try { - rootMarineLitterBatch = - weightComputingService.getComputedMarineLitterBatches(operationId, catchBatch.getMarineLitterTotalWeight()); - } catch (Exception e) { - withError = true; - rootMarineLitterBatch = - persistenceService.getRootMarineLitterBatch(operationId); - } - - // apply compute weights - - if (!withError) { - weightComputingService.computeCatchBatchWeights( - catchBatch, - rootSpeciesBatch, - rootBenthosBatch, - rootMarineLitterBatch); - } - } else { - if (log.isWarnEnabled()) { - log.warn("Skip fishing operation " + operationId + - " since no catchBatch associated."); - } - catchBatch = null; - rootSpeciesBatch = null; - rootBenthosBatch = null; - rootMarineLitterBatch = null; - } - - } - - public CatchBatch getCatchBatch() { - return catchBatch; - } - - public BatchContainer<MarineLitterBatch> getRootMarineLitterBatch() { - return rootMarineLitterBatch; - } - - public BatchContainer<SpeciesBatch> getRootSpeciesBatch() { - return rootSpeciesBatch; - } + try { - public BatchContainer<BenthosBatch> getRootBenthosBatch() { - return rootBenthosBatch; - } + exportContext.speciesExport.write(rows, exportContext.speciesWriter); - public boolean isWithCatchBatch() { - return withCatchBatch; + } catch (Exception e) { + throw new ApplicationTechnicalException(t("tutti.service.export.species.error"), e); } } - protected Map<String, OperationContext> operationContexts = Maps.newTreeMap(); + protected Map<String, OperationExportContext> operationContexts = Maps.newTreeMap(); + + protected OperationExportContext getOperationContext(FishingOperation operation) { - protected OperationContext getOperationContext(FishingOperation operation) { String operationId = operation.getId(); - OperationContext result = operationContexts.get(operationId); + OperationExportContext result = operationContexts.get(operationId); if (result == null) { // create it - result = new OperationContext(operation, - persistenceService, - weightComputingService); + result = new OperationExportContext(operation, persistenceService, weightComputingService); operationContexts.put(operationId, result); } return result; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportModel.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportModel.java index 8e38e75..d70bd9e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportRow.java index 0cc97bb..49d1ae9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/AccidentalCatchExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/AccidentalCatchExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportModel.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportModel.java index 2e2719f..26b6aa9 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportRow.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportRow.java index 60143d2..4581879 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/CatchExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/CatchExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java index abce5b0..88862e3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ExportSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ExportSampleCategory.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportModel.java index 2ce45a8..5532159 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportRow.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportRow.java index fc2023c..8ac6ad7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/GearCaracteristicExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/GearCaracteristicExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportModel.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportModel.java index 5d225c8..bc74240 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportRow.java index 31459d9..cb2123f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/IndividualObservationExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/IndividualObservationExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportModel.java index f6c3c18..5ebea80 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportRow.java index 63fbf07..8c720fd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/MarineLitterExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/MarineLitterExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportModel.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportModel.java index 74d5e2c..f3ab656 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportRow.java similarity index 99% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportRow.java index 8396cc6..ced47dd 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/OperationExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/OperationExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportModel.java index f6c83f8..c5238f1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportRow.java index 858991e..348e3f6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/ParameterExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/ParameterExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java similarity index 89% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java index 6aede07..5126def 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L @@ -27,6 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.TuttiCsvUtil; +import fr.ifremer.tutti.service.export.generic.GlobalExportContext; import java.util.List; @@ -46,7 +47,7 @@ public class SpeciesExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<Sp newColumnForExport("Code_campagne", SpeciesExportRow.SPECIES + "." + Species.PROPERTY_SURVEY_CODE); } - public void prepareBatchRows(TuttiExportService.ExportContext exportContext, + public void prepareBatchRows(GlobalExportContext exportContext, BatchContainer<SpeciesBatch> rootSpeciesBatch, BatchContainer<BenthosBatch> rootBenthosBatch) { @@ -59,14 +60,14 @@ public class SpeciesExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<Sp } } - public void prepareIndividualRows(TuttiExportService.ExportContext exportContext, + public void prepareIndividualRows(GlobalExportContext exportContext, List<IndividualObservationExportRow> rows) { for (IndividualObservationExportRow row : rows) { exportContext.addSpecies(row.getSpecies()); } } - public void prepareAccidentalRows(TuttiExportService.ExportContext exportContext, + public void prepareAccidentalRows(GlobalExportContext exportContext, List<AccidentalCatchExportRow> rows) { for (AccidentalCatchExportRow row : rows) { exportContext.addSpecies(row.getSpecies()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java similarity index 96% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java index dbd587e..b46d331 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SpeciesExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SpeciesExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportModel.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportModel.java index 9b82aa4..a2c7d5b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportRow.java index 7b472f1..fbe996d 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/SurveyExportRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/csv/SurveyExportRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.export.generic; +package fr.ifremer.tutti.service.export.generic.csv; /* * #%L -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.