branch feature/8061 created (now 5200dbe)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8061 in repository tutti. See http://git.codelutin.com/tutti.git at 5200dbe Fix api This branch includes the following new commits: new fe5868c Revue de l'export multi-poste new e3a10a0 Début de revue de l'import multi-poste new 5d26817 Ajout des actions pour l'import-export multi-poste sur l'écran des espèces (See #8061) new 5200dbe Fix api The 4 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 5200dbe30662e789e243c9072fe79a857e25d60d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 9 17:11:56 2016 +0100 Fix api commit 5d268178b9a2ea7a6066bd51995a791a3be8b913 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 9 17:11:37 2016 +0100 Ajout des actions pour l'import-export multi-poste sur l'écran des espèces (See #8061) commit e3a10a01e91248cc4038b68bc42f7ad2c3ce444d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 9 17:10:52 2016 +0100 Début de revue de l'import multi-poste commit fe5868c44cfab05622615c0fd609deb983d18400 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 9 17:09:34 2016 +0100 Revue de l'export multi-poste -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8061 in repository tutti. See http://git.codelutin.com/tutti.git commit fe5868c44cfab05622615c0fd609deb983d18400 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 9 17:09:34 2016 +0100 Revue de l'export multi-poste --- .../catches/multipost/MultiPostConstants.java | 2 + .../catches/multipost/MultiPostExportContext.java | 300 ++++++++++ .../catches/multipost/MultiPostExportService.java | 608 ++++++--------------- .../multipost/MultiPostExportServiceTest.java | 46 +- 4 files changed, 488 insertions(+), 468 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostConstants.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostConstants.java index b50b5fd..31d8c6a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostConstants.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostConstants.java @@ -55,4 +55,6 @@ public interface MultiPostConstants { String CARACTERISTIC_FILE = "caracteristics.csv"; String WEIGHTS_FILE = "weights.csv"; + + char CSV_SEPARATOR = ';'; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportContext.java new file mode 100644 index 0000000..118a242 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportContext.java @@ -0,0 +1,300 @@ +package fr.ifremer.tutti.service.catches.multipost; + +import com.google.common.io.Files; +import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; +import fr.ifremer.tutti.persistence.entities.data.Attachment; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatchFrequency; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.PersistenceService; +import org.nuiton.csv.Export; +import org.nuiton.csv.ExportModel; +import org.nuiton.jaxx.application.ApplicationIOUtil; +import org.nuiton.jaxx.application.ApplicationTechnicalException; + +import java.io.Closeable; +import java.io.File; +import java.io.Writer; +import java.util.ArrayList; +import java.util.List; + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 09/03/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class MultiPostExportContext implements MultiPostConstants, Closeable { + + private final File targetFile; + private final File temporaryDirectory; + private final FishingOperation operation; + + private final PersistenceService persistenceService; + + private final List<AttachmentRow> attachmentRows = new ArrayList<>(); + private final List<CatchRow> speciesOrBenthosRows = new ArrayList<>(); + private final List<CatchFrequencyRow> frequencyRows = new ArrayList<>(); + + private final List<AccidentalCatchRow> accidentialCatchRows = new ArrayList<>(); + private final List<MarineLitterRow> marineLitterRows = new ArrayList<>(); + private final List<IndividualObservationRow> individualObservationRows = new ArrayList<>(); + private final List<CaracteristicRow> caracteristicRows = new ArrayList<>(); + + private final List<File> file2zip = new ArrayList<>(); + + public MultiPostExportContext(File targetFile, FishingOperation operation, PersistenceService persistenceService) { + this.targetFile = targetFile; + this.temporaryDirectory = Files.createTempDir(); + this.operation = operation; + this.persistenceService = persistenceService; + } + + public void addAttachments(String batchId, int objectId, ObjectTypeCode objectType) { + List<Attachment> attachments = + persistenceService.getAllAttachments(objectType, objectId); + for (Attachment attachment : attachments) { + AttachmentRow attachmentRow = new AttachmentRow(); + attachmentRow.setBatchId(batchId); + attachmentRow.setName(attachment.getName()); + attachmentRow.setComment(attachment.getComment()); + attachmentRow.setFile(persistenceService.getAttachmentFile(attachment.getId())); + attachmentRows.add(attachmentRow); + } + } + + public void storeSpeciesOrBenthosBatches(String fileName, boolean exportFrequencies, boolean exportIndividualObservations) { + + export(fileName, + new CatchRowModel(CSV_SEPARATOR), + speciesOrBenthosRows, + n("tutti.service.multipost.export.batches.error")); + + if (exportFrequencies) { + + export(FREQUENCIES_FILE, + new CatchFrequencyRowModel(CSV_SEPARATOR), + frequencyRows, + n("tutti.service.multipost.export.frequencies.error")); + + } + + if (exportIndividualObservations) { + + export(INDIVIDUAL_OBSERVATION_FILE, + new IndividualObservationRowModel(CSV_SEPARATOR), + individualObservationRows, + n("tutti.service.multipost.export.batches.error")); + + export(CARACTERISTIC_FILE, + new CaracteristicRowModel(CSV_SEPARATOR), + caracteristicRows, + n("tutti.service.multipost.export.batches.error")); + + } + + } + + public void storeAttachments() { + + AttachmentRowModel csvAttachmentModel = new AttachmentRowModel(CSV_SEPARATOR); + + File attachmentDirectory = new File(temporaryDirectory, ATTACHMENTS_DIRECTORY); + ApplicationIOUtil.forceMkdir(attachmentDirectory, t("tutti.service.multipost.attachment.mkdir.error", attachmentDirectory)); + addFile(attachmentDirectory); + for (AttachmentRow attachmentRow : attachmentRows) { + File attachmentFile = attachmentRow.getFile(); + File destFile = new File(attachmentDirectory, attachmentFile.getName()); + ApplicationIOUtil.copyFile(attachmentFile, + destFile, + t("tutti.service.multipost.attachment.copy.error", attachmentFile)); + addFile(destFile); + } + + export(ATTACHMENTS_FILE, + csvAttachmentModel, + attachmentRows, + n("tutti.service.multipost.export.attachments.error")); + + } + + + @Override + public void close() { + + storeAttachments(); + + try { + ApplicationIOUtil.zip(temporaryDirectory, + targetFile, + file2zip, + n("tutti.service.multipost.export.error")); + } finally { + ApplicationIOUtil.deleteDirectory(temporaryDirectory, t("tutti.service.multipost.export.deleteTempDirectory.error", targetFile)); + } + } + + public <B extends SpeciesAbleBatch> void addSpeciesOrBenthosBatch(String batchId, String parentId, B batch) { + + CatchRow row = new CatchRow(); + row.setId(batchId); + row.setParentId(parentId); + row.setSpecies(batch.getSpecies()); + + row.setCategoryId(batch.getSampleCategoryId()); + row.setCategoryValue(batch.getSampleCategoryValue()); + row.setCategoryWeight(batch.getSampleCategoryWeight()); + row.setWeight(batch.getWeight()); + row.setNumber(batch.getNumber()); + row.setComment(batch.getComment()); + row.setToConfirm(batch.isSpeciesToConfirm()); + speciesOrBenthosRows.add(row); + + addAttachments(batchId, batch.getIdAsInt(), ObjectTypeCode.BATCH); + + } + + public <F extends SpeciesAbleBatchFrequency> void addFrequencies(String rowId, List<F> frequencies) { + + for (F frequency : frequencies) { + CatchFrequencyRow frequencyRow = new CatchFrequencyRow(); + frequencyRow.setBatchId(rowId); + frequencyRow.setLengthStepCaracteristic(frequency.getLengthStepCaracteristic()); + frequencyRow.setLengthStep(frequency.getLengthStep()); + frequencyRow.setNumber(frequency.getNumber()); + frequencyRow.setWeight(frequency.getWeight()); + frequencyRows.add(frequencyRow); + } + + } + + public void addIndividualObservations(String id, IndividualObservationBatch batch) { + + IndividualObservationRow row = new IndividualObservationRow(); + row.setBatchId(id); + + row.setSpecies(batch.getSpecies()); + row.setWeight(batch.getWeight()); + row.setSize(batch.getSize()); + row.setLengthStepCaracteristic(batch.getLengthStepCaracteristic()); +// row.setSamplingCode(batch.getSamplingCode()); +// row.setCalcifiedPieceSamplingCode(batch.getCalcifiedPieceSamplingCode()); + row.setComment(batch.getComment()); + + individualObservationRows.add(row); + + CaracteristicMap caracteristicMap = batch.getCaracteristics(); + for (Caracteristic caracteristic : caracteristicMap.keySet()) { + CaracteristicRow caracteristicRow = new CaracteristicRow(); + caracteristicRow.setBatchId(id); + caracteristicRow.setCaracteristic(caracteristic); + caracteristicRow.setValue(caracteristicMap.get(caracteristic)); + caracteristicRows.add(caracteristicRow); + } + + addAttachments(id, batch.getIdAsInt(), ObjectTypeCode.SAMPLE); + + } + + public void addMarineLitterBatch(String batchId, MarineLitterBatch batch) { + + MarineLitterRow row = new MarineLitterRow(); + row.setBatchId(batchId); + + row.setCategory(batch.getMarineLitterCategory()); + row.setSizeCategory(batch.getMarineLitterSizeCategory()); + row.setNumber(batch.getNumber()); + row.setWeight(batch.getWeight()); + row.setComment(batch.getComment()); + + marineLitterRows.add(row); + + addAttachments(batchId, batch.getIdAsInt(), ObjectTypeCode.BATCH); + + } + + public void addAccidentalCatch(String batchId, AccidentalBatch batch) { + + AccidentalCatchRow row = new AccidentalCatchRow(); + + row.setBatchId(batchId); + + row.setSpecies(batch.getSpecies()); + row.setGender(batch.getGender()); + row.setWeight(batch.getWeight()); + row.setSize(batch.getSize()); + row.setLengthStepCaracteristic(batch.getLengthStepCaracteristic()); + row.setDeadOrAlive(batch.getDeadOrAlive()); + row.setComment(batch.getComment()); + + accidentialCatchRows.add(row); + + CaracteristicMap caracteristicMap = batch.getCaracteristics(); + for (Caracteristic caracteristic : caracteristicMap.keySet()) { + CaracteristicRow caracteristicRow = new CaracteristicRow(); + caracteristicRow.setBatchId(batchId); + caracteristicRow.setCaracteristic(caracteristic); + caracteristicRow.setValue(caracteristicMap.get(caracteristic)); + caracteristicRows.add(caracteristicRow); + } + + addAttachments(batchId, batch.getIdAsInt(), ObjectTypeCode.SAMPLE); + + } + + public <R> void export(String fileName, + ExportModel<R> exportModel, + List<R> rows, + String errorMessage) { + + File file = new File(temporaryDirectory, fileName); + + addFile(file); + + try (Writer writer = ApplicationIOUtil.newWriter(file, n("tutti.service.multipost.export.file.writer.error"))) { + + Export export = Export.newExport(exportModel, rows); + export.write(writer); + + } catch (Exception e) { + throw new ApplicationTechnicalException(t(errorMessage, file), e); + } + + } + + public void storeAccidentalCatches() { + + export(ACCIDENTAL_CATCHES_FILE, + new AccidentalCatchRowModel(CSV_SEPARATOR), + accidentialCatchRows, + n("tutti.service.multipost.export.batches.error")); + + // export caracteristics + + export(CARACTERISTIC_FILE, + new CaracteristicRowModel(CSV_SEPARATOR), + caracteristicRows, + n("tutti.service.multipost.export.batches.error")); + + } + + public void storeMarineLitterBatches() { + + export(MARINE_LITTER_FILE, + new MarineLitterRowModel(CSV_SEPARATOR), + marineLitterRows, + n("tutti.service.multipost.export.batches.error")); + + } + + protected void addFile(File file) { + file2zip.add(file); + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportService.java index 32db8b3..e752f33 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportService.java @@ -24,13 +24,11 @@ package fr.ifremer.tutti.service.catches.multipost; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.io.Files; import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; -import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; +import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; @@ -73,8 +71,6 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult protected DecoratorService decoratorService; - public static final char CSV_SEPARATOR = ';'; - protected Map<String, CaracteristicQualitativeValue> sampleCategoryValueMap; @Override @@ -109,26 +105,36 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult Integer operationId = operation.getIdAsInt(); if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { - // export catch batch weights + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + + // Load data to export + + CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); + + CatchBatchRow weights = new CatchBatchRow(); + weights.setCatchTotalWeight(catchBatch.getCatchTotalWeight()); + weights.setCatchTotalRejectedWeight(catchBatch.getCatchTotalRejectedWeight()); + weights.setSpeciesTotalSortedWeight(catchBatch.getSpeciesTotalSortedWeight()); + weights.setBenthosTotalSortedWeight(catchBatch.getBenthosTotalSortedWeight()); + weights.setMarineLitterTotalWeight(catchBatch.getMarineLitterTotalWeight()); - CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); + // export catch batch weights - CatchBatchRow weights = new CatchBatchRow(); - weights.setCatchTotalWeight(catchBatch.getCatchTotalWeight()); - weights.setCatchTotalRejectedWeight(catchBatch.getCatchTotalRejectedWeight()); - weights.setSpeciesTotalSortedWeight(catchBatch.getSpeciesTotalSortedWeight()); - weights.setBenthosTotalSortedWeight(catchBatch.getBenthosTotalSortedWeight()); - weights.setMarineLitterTotalWeight(catchBatch.getMarineLitterTotalWeight()); + exportOperation(weights, operation); - List<AttachmentRow> attachmentRows = Lists.newArrayList(); - addAttachments(catchBatch.getId(), catchBatch.getIdAsInt(), ObjectTypeCode.CATCH_BATCH, attachmentRows); + exportContext.addAttachments(catchBatch.getId(), catchBatch.getIdAsInt(), ObjectTypeCode.CATCH_BATCH); - exportOperation(weights, operation); + CatchBatchRowModel csvModel = new CatchBatchRowModel(CSV_SEPARATOR); + + exportContext.export(CATCH_BATCH_FILE, + csvModel, + Lists.newArrayList(weights), + n("tutti.service.multipost.export.weights.error")); + + } - exportCatchBatch(file, - weights, - attachmentRows); } + } /** @@ -137,40 +143,50 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult * @param file the file to export the batches into * @param operation the operation to export */ - public void exportSpecies(File file, FishingOperation operation) { + public void exportSpecies(File file, + FishingOperation operation, + boolean exportFrequencies, + boolean exportIndividualObservations) { Integer operationId = operation.getIdAsInt(); if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { - // create rows + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + + // Export catch weights + attachments + + CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); + CatchWeightsRow weights = new CatchWeightsRow(); + weights.setTotalSortedWeight(catchBatch.getSpeciesTotalSortedWeight()); + weights.setInertWeight(catchBatch.getSpeciesTotalInertWeight()); + weights.setLivingNotItemizedWeight(catchBatch.getSpeciesTotalLivingNotItemizedWeight()); + exportOperation(weights, operation); - BatchContainer<SpeciesBatch> speciesBatchContainer = - persistenceService.getRootSpeciesBatch(operationId, false); + exportContext.addAttachments(catchBatch.getId(), catchBatch.getIdAsInt(), ObjectTypeCode.CATCH_BATCH); - List<CatchRow> rows = Lists.newArrayList(); - List<CatchFrequencyRow> frequencyRows = Lists.newArrayList(); - List<AttachmentRow> attachmentRows = Lists.newArrayList(); + exportContext.export(WEIGHTS_FILE, + new CatchWeightsRowModel(CSV_SEPARATOR), + Lists.newArrayList(weights), + n("tutti.service.multipost.export.weights.error")); + + // Export species catch, frequencies and individual observations + + BatchContainer<SpeciesBatch> speciesBatchContainer = persistenceService.getRootSpeciesBatch(operationId, false); + + for (SpeciesBatch batch : speciesBatchContainer.getChildren()) { + createSpeciesRow(exportContext, batch, null, exportFrequencies); + } + + if (exportIndividualObservations) { + addIndividualObservations(exportContext, operation); + } + + exportContext.storeSpeciesOrBenthosBatches(SPECIES_FILE, exportFrequencies, exportIndividualObservations); - for (SpeciesBatch batch : speciesBatchContainer.getChildren()) { - createSpeciesRow(batch, null, rows, frequencyRows, attachmentRows); } - // export catches + weights + attachments - - CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); - CatchWeightsRow weights = new CatchWeightsRow(); - weights.setTotalSortedWeight(catchBatch.getSpeciesTotalSortedWeight()); - weights.setInertWeight(catchBatch.getSpeciesTotalInertWeight()); - weights.setLivingNotItemizedWeight(catchBatch.getSpeciesTotalLivingNotItemizedWeight()); - exportOperation(weights, operation); - - exportCatches(file, - SPECIES_FILE, - weights, - rows, - frequencyRows, - attachmentRows); } + } /** @@ -179,39 +195,48 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult * @param file the file to export the batches into * @param operation the operation to export */ - public void exportBenthos(File file, FishingOperation operation) { + public void exportBenthos(File file, + FishingOperation operation, + boolean exportFrequencies, + boolean exportIndividualObservations) { Integer operationId = operation.getIdAsInt(); if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { - BatchContainer<BenthosBatch> benthosBatchContainer = - persistenceService.getRootBenthosBatch(operationId, false); + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + + // Export catch weights + + CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); + CatchWeightsRow weights = new CatchWeightsRow(); + weights.setTotalSortedWeight(catchBatch.getBenthosTotalSortedWeight()); + weights.setInertWeight(catchBatch.getBenthosTotalInertWeight()); + weights.setLivingNotItemizedWeight(catchBatch.getBenthosTotalLivingNotItemizedWeight()); + exportOperation(weights, operation); + + exportContext.addAttachments(catchBatch.getId(), catchBatch.getIdAsInt(), ObjectTypeCode.CATCH_BATCH); + + exportContext.export(WEIGHTS_FILE, + new CatchWeightsRowModel(CSV_SEPARATOR), + Lists.newArrayList(weights), + n("tutti.service.multipost.export.weights.error")); + + // Export benthos catch, frequencies and individual observations + + BatchContainer<BenthosBatch> benthosBatchContainer = persistenceService.getRootBenthosBatch(operationId, false); + + for (BenthosBatch batch : benthosBatchContainer.getChildren()) { + createBenthosRow(exportContext, batch, null, exportFrequencies); + } - // create rows + if (exportIndividualObservations) { + addIndividualObservations(exportContext, operation); + } - List<CatchRow> rows = Lists.newArrayList(); - List<CatchFrequencyRow> frequencyRows = Lists.newArrayList(); - List<AttachmentRow> attachmentRows = Lists.newArrayList(); + exportContext.storeSpeciesOrBenthosBatches(BENTHOS_FILE, exportFrequencies, exportIndividualObservations); - for (BenthosBatch batch : benthosBatchContainer.getChildren()) { - createBenthosRow(batch, null, rows, frequencyRows, attachmentRows); } - // export catches + weights + attachments - - CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); - CatchWeightsRow weights = new CatchWeightsRow(); - weights.setTotalSortedWeight(catchBatch.getBenthosTotalSortedWeight()); - weights.setInertWeight(catchBatch.getBenthosTotalInertWeight()); - weights.setLivingNotItemizedWeight(catchBatch.getBenthosTotalLivingNotItemizedWeight()); - exportOperation(weights, operation); - - exportCatches(file, - BENTHOS_FILE, - weights, - rows, - frequencyRows, - attachmentRows); } } @@ -226,70 +251,36 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult Integer operationId = operation.getIdAsInt(); if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { - // create rows - - BatchContainer<MarineLitterBatch> marineLitterBatchContainer = - persistenceService.getRootMarineLitterBatch(operationId); - - List<MarineLitterRow> rows = Lists.newArrayList(); - List<AttachmentRow> attachmentRows = Lists.newArrayList(); + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { - for (MarineLitterBatch batch : marineLitterBatchContainer.getChildren()) { - MarineLitterRow row = new MarineLitterRow(); + // export weights - String id = context.generateId(MarineLitterRow.class); - row.setBatchId(id); + CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); + MarineLitterWeightRow weight = new MarineLitterWeightRow(); + weight.setTotalWeight(catchBatch.getMarineLitterTotalWeight()); + exportOperation(weight, operation); - row.setCategory(batch.getMarineLitterCategory()); - row.setSizeCategory(batch.getMarineLitterSizeCategory()); - row.setNumber(batch.getNumber()); - row.setWeight(batch.getWeight()); - row.setComment(batch.getComment()); - - rows.add(row); - - addAttachments(id, - batch.getIdAsInt(), - ObjectTypeCode.BATCH, - attachmentRows); - } + exportContext.export(WEIGHTS_FILE, + new MarineLitterWeightRowModel(CSV_SEPARATOR), + Lists.newArrayList(weight), + n("tutti.service.multipost.export.weight.error")); + // export marine litters - File directory = Files.createTempDir(); - List<File> file2zip = Lists.newArrayList(); + BatchContainer<MarineLitterBatch> marineLitterBatchContainer = + persistenceService.getRootMarineLitterBatch(operationId); - // export marine litters + for (MarineLitterBatch batch : marineLitterBatchContainer.getChildren()) { - MarineLitterRowModel marineLitterRowModel = new MarineLitterRowModel(CSV_SEPARATOR); - File marineLitterFile = new File(directory, MARINE_LITTER_FILE); - file2zip.add(marineLitterFile); - export(marineLitterFile, - marineLitterRowModel, - rows, - n("tutti.service.multipost.export.batches.error")); + String id = context.generateId(MarineLitterRow.class); + exportContext.addMarineLitterBatch(id, batch); - // export weights - - CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operationId); - MarineLitterWeightRow weight = new MarineLitterWeightRow(); - weight.setTotalWeight(catchBatch.getMarineLitterTotalWeight()); - exportOperation(weight, operation); - - MarineLitterWeightRowModel weightModel = new MarineLitterWeightRowModel(CSV_SEPARATOR); + } - File weightFile = new File(directory, WEIGHTS_FILE); - file2zip.add(weightFile); - export(weightFile, - weightModel, - Lists.newArrayList(weight), - n("tutti.service.multipost.export.weight.error")); + exportContext.storeMarineLitterBatches(); - // export attachments + create final zip + } - exportAttachmentsAndCreateZip(file, - directory, - file2zip, - attachmentRows); } } @@ -300,87 +291,9 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult * @param operation the operation to export */ public void exportIndividualObservation(File file, FishingOperation operation) { - List<IndividualObservationBatch> individualObservations = - persistenceService.getAllIndividualObservationBatchsForFishingOperation(operation.getIdAsInt()); - - // create rows - - List<IndividualObservationRow> rows = Lists.newArrayList(); - List<CaracteristicRow> caracteristicRows = Lists.newArrayList(); - List<AttachmentRow> attachmentRows = Lists.newArrayList(); - - - for (IndividualObservationBatch batch : individualObservations) { - IndividualObservationRow row = new IndividualObservationRow(); - - String id = context.generateId(IndividualObservationRow.class); - row.setBatchId(id); - - row.setSpecies(batch.getSpecies()); - row.setWeight(batch.getWeight()); - row.setSize(batch.getSize()); - row.setLengthStepCaracteristic(batch.getLengthStepCaracteristic()); -// row.setSamplingCode(batch.getSamplingCode()); -// row.setCalcifiedPieceSamplingCode(batch.getCalcifiedPieceSamplingCode()); - row.setComment(batch.getComment()); - - rows.add(row); - - CaracteristicMap caracteristicMap = batch.getCaracteristics(); - for (Caracteristic caracteristic : caracteristicMap.keySet()) { - CaracteristicRow caracteristicRow = new CaracteristicRow(); - caracteristicRow.setBatchId(id); - caracteristicRow.setCaracteristic(caracteristic); - caracteristicRow.setValue(caracteristicMap.get(caracteristic)); - caracteristicRows.add(caracteristicRow); - } - - addAttachments(id, batch.getIdAsInt(), ObjectTypeCode.SAMPLE, attachmentRows); - } - - File directory = Files.createTempDir(); - List<File> file2zip = Lists.newArrayList(); - - // export individual observations - IndividualObservationRowModel csvModel = new IndividualObservationRowModel(CSV_SEPARATOR); - File individualObservationFile = new File(directory, INDIVIDUAL_OBSERVATION_FILE); - file2zip.add(individualObservationFile); - export(individualObservationFile, - csvModel, - rows, - n("tutti.service.multipost.export.batches.error")); + //FIXME Remove this method - // export caracteristics - - CaracteristicRowModel caracteristicCsvModel = new CaracteristicRowModel(CSV_SEPARATOR); - File caracteristicFile = new File(directory, CARACTERISTIC_FILE); - file2zip.add(caracteristicFile); - export(caracteristicFile, - caracteristicCsvModel, - caracteristicRows, - n("tutti.service.multipost.export.batches.error")); - - // export operation - - FishingOperationRow foRow = new FishingOperationRow(); - exportOperation(foRow, operation); - - FishingOperationRowModel foRowModel = new FishingOperationRowModel(CSV_SEPARATOR); - - File weightFile = new File(directory, WEIGHTS_FILE); - file2zip.add(weightFile); - export(weightFile, - foRowModel, - Lists.newArrayList(foRow), - n("tutti.service.multipost.export.operation.error")); - - // export attachments + create final zip - - exportAttachmentsAndCreateZip(file, - directory, - file2zip, - attachmentRows); } /** @@ -390,217 +303,97 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult * @param operation the operation to export */ public void exportAccidentalCatch(File file, FishingOperation operation) { - List<AccidentalBatch> accidentalCatches = - persistenceService.getAllAccidentalBatch(operation.getIdAsInt()); - - List<AccidentalCatchRow> rows = Lists.newArrayList(); - List<CaracteristicRow> caracteristicRows = Lists.newArrayList(); - List<AttachmentRow> attachmentRows = Lists.newArrayList(); - - // create rows - - for (AccidentalBatch batch : accidentalCatches) { - AccidentalCatchRow row = new AccidentalCatchRow(); - - String id = context.generateId(AccidentalCatchRow.class); - row.setBatchId(id); - - row.setSpecies(batch.getSpecies()); - row.setGender(batch.getGender()); - row.setWeight(batch.getWeight()); - row.setSize(batch.getSize()); - row.setLengthStepCaracteristic(batch.getLengthStepCaracteristic()); - row.setDeadOrAlive(batch.getDeadOrAlive()); - row.setComment(batch.getComment()); - - rows.add(row); - - CaracteristicMap caracteristicMap = batch.getCaracteristics(); - for (Caracteristic caracteristic : caracteristicMap.keySet()) { - CaracteristicRow caracteristicRow = new CaracteristicRow(); - caracteristicRow.setBatchId(id); - caracteristicRow.setCaracteristic(caracteristic); - caracteristicRow.setValue(caracteristicMap.get(caracteristic)); - caracteristicRows.add(caracteristicRow); - } - addAttachments(id, batch.getIdAsInt(), ObjectTypeCode.SAMPLE, attachmentRows); - } + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + + // export operation - // export accidental catches + FishingOperationRow foRow = new FishingOperationRow(); + exportOperation(foRow, operation); - AccidentalCatchRowModel csvModel = new AccidentalCatchRowModel(CSV_SEPARATOR); + FishingOperationRowModel foRowModel = new FishingOperationRowModel(CSV_SEPARATOR); - File directory = Files.createTempDir(); - List<File> file2zip = Lists.newArrayList(); + exportContext.export(WEIGHTS_FILE, + foRowModel, + Lists.newArrayList(foRow), + n("tutti.service.multipost.export.operation.error")); - File accidentalCatchesFile = new File(directory, ACCIDENTAL_CATCHES_FILE); - file2zip.add(accidentalCatchesFile); - export(accidentalCatchesFile, - csvModel, - rows, - n("tutti.service.multipost.export.batches.error")); + // export accidental catches - // export caracteristics + List<AccidentalBatch> accidentalCatches = + persistenceService.getAllAccidentalBatch(operation.getIdAsInt()); - CaracteristicRowModel caracteristicCsvModel = new CaracteristicRowModel(CSV_SEPARATOR); - File caracteristicFile = new File(directory, CARACTERISTIC_FILE); - file2zip.add(caracteristicFile); - export(caracteristicFile, - caracteristicCsvModel, - caracteristicRows, - n("tutti.service.multipost.export.batches.error")); + for (AccidentalBatch batch : accidentalCatches) { - // export operation + String id = context.generateId(AccidentalCatchRow.class); + exportContext.addAccidentalCatch(id, batch); - FishingOperationRow foRow = new FishingOperationRow(); - exportOperation(foRow, operation); + } - FishingOperationRowModel foRowModel = new FishingOperationRowModel(CSV_SEPARATOR); + exportContext.storeAccidentalCatches(); - File weightFile = new File(directory, WEIGHTS_FILE); - file2zip.add(weightFile); - export(weightFile, - foRowModel, - Lists.newArrayList(foRow), - n("tutti.service.multipost.export.operation.error")); - // export attachments + create final zip + } - exportAttachmentsAndCreateZip(file, - directory, - file2zip, - attachmentRows); } //------------------------------------------------------------------------// //-- Internal methods --// //------------------------------------------------------------------------// - protected void exportCatchBatch(File file, - CatchBatchRow weights, - List<AttachmentRow> attachmentRows) { - - CatchBatchRowModel csvModel = new CatchBatchRowModel(CSV_SEPARATOR); - - File directory = Files.createTempDir(); - List<File> file2zip = Lists.newArrayList(); + protected void createSpeciesRow(MultiPostExportContext exportContext, + SpeciesBatch batch, + String parentId, + boolean addFrequencies) { - File weightsFile = new File(directory, CATCH_BATCH_FILE); - file2zip.add(weightsFile); - export(weightsFile, - csvModel, - Lists.newArrayList(weights), - n("tutti.service.multipost.export.weights.error")); + String id = context.generateId(CatchRow.class); - // export attachments + create final zip + exportContext.addSpeciesOrBenthosBatch(id, parentId, batch); - exportAttachmentsAndCreateZip(file, - directory, - file2zip, - attachmentRows); - } + if (addFrequencies) { + List<SpeciesBatchFrequency> frequencies = persistenceService.getAllSpeciesBatchFrequency(batch.getIdAsInt()); + exportContext.addFrequencies(id, frequencies); + } - protected void exportCatches(File file, - String batchFile, - CatchWeightsRow weights, - List<CatchRow> rows, - List<CatchFrequencyRow> frequencyRows, - List<AttachmentRow> attachmentRows) { - CatchRowModel csvModel = new CatchRowModel(CSV_SEPARATOR); - CatchFrequencyRowModel csvFrequencyModel = new CatchFrequencyRowModel(CSV_SEPARATOR); - CatchWeightsRowModel catchWeightsModel = new CatchWeightsRowModel(CSV_SEPARATOR); - - File directory = Files.createTempDir(); - List<File> file2zip = Lists.newArrayList(); - - File weightsFile = new File(directory, WEIGHTS_FILE); - file2zip.add(weightsFile); - export(weightsFile, - catchWeightsModel, - Lists.newArrayList(weights), - n("tutti.service.multipost.export.weights.error")); - - File speciesFile = new File(directory, batchFile); - file2zip.add(speciesFile); - export(speciesFile, - csvModel, - rows, - n("tutti.service.multipost.export.batches.error")); - - File frequencyFile = new File(directory, FREQUENCIES_FILE); - file2zip.add(frequencyFile); - export(frequencyFile, - csvFrequencyModel, - frequencyRows, - n("tutti.service.multipost.export.frequencies.error")); - - // export attachments + create final zip - - exportAttachmentsAndCreateZip(file, - directory, - file2zip, - attachmentRows); + for (SpeciesBatch child : batch.getChildBatchs()) { + createSpeciesRow(exportContext, child, id, addFrequencies); + } } - protected void createSpeciesRow(SpeciesBatch batch, + protected void createBenthosRow(MultiPostExportContext exportContext, + BenthosBatch batch, String parentId, - List<CatchRow> rows, - List<CatchFrequencyRow> frequencyRows, - List<AttachmentRow> attachmentRows) { - CatchRow row = new CatchRow(); + boolean addFrequencies) { String id = context.generateId(CatchRow.class); - row.setId(id); - row.setParentId(parentId); - row.setSpecies(batch.getSpecies()); - - row.setCategoryId(batch.getSampleCategoryId()); - row.setCategoryValue(batch.getSampleCategoryValue()); - row.setCategoryWeight(batch.getSampleCategoryWeight()); - row.setWeight(batch.getWeight()); - row.setNumber(batch.getNumber()); - row.setComment(batch.getComment()); - row.setToConfirm(batch.isSpeciesToConfirm()); - rows.add(row); + exportContext.addSpeciesOrBenthosBatch(id, parentId, batch); - addFrequencies(id, batch.getIdAsInt(), frequencyRows); - addAttachments(id, batch.getIdAsInt(), ObjectTypeCode.BATCH, attachmentRows); + if (addFrequencies) { + List<BenthosBatchFrequency> frequencies = + persistenceService.getAllBenthosBatchFrequency(batch.getIdAsInt()); + exportContext.addFrequencies(id, frequencies); + } - for (SpeciesBatch child : batch.getChildBatchs()) { - createSpeciesRow(child, id, rows, frequencyRows, attachmentRows); + for (BenthosBatch child : batch.getChildBatchs()) { + createBenthosRow(exportContext, child, id, addFrequencies); } } - protected void createBenthosRow(BenthosBatch batch, - String parentId, - List<CatchRow> rows, - List<CatchFrequencyRow> frequencyRows, - List<AttachmentRow> attachmentRows) { - CatchRow row = new CatchRow(); + protected void addIndividualObservations(MultiPostExportContext exportContext, FishingOperation operation) { - String id = context.generateId(CatchRow.class); - row.setId(id); - row.setParentId(parentId); - row.setSpecies(batch.getSpecies()); + List<IndividualObservationBatch> individualObservations = + persistenceService.getAllIndividualObservationBatchsForFishingOperation(operation.getIdAsInt()); - row.setCategoryId(batch.getSampleCategoryId()); - row.setCategoryValue(batch.getSampleCategoryValue()); - row.setCategoryWeight(batch.getSampleCategoryWeight()); - row.setWeight(batch.getWeight()); - row.setNumber(batch.getNumber()); - row.setComment(batch.getComment()); - row.setToConfirm(batch.isSpeciesToConfirm()); + for (IndividualObservationBatch batch : individualObservations) { - rows.add(row); - addFrequencies(id, batch.getIdAsInt(), frequencyRows); - addAttachments(id, batch.getIdAsInt(), ObjectTypeCode.BATCH, attachmentRows); + String id = context.generateId(IndividualObservationRow.class); + + exportContext.addIndividualObservations(id, batch); - for (BenthosBatch child : batch.getChildBatchs()) { - createBenthosRow(child, id, rows, frequencyRows, attachmentRows); } + } protected void exportOperation(AbstractFishingOperationRow afoRow, FishingOperation operation) { @@ -610,39 +403,6 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult afoRow.setDate(operation.getGearShootingStartDate()); } - protected void addFrequencies(String rowId, - Integer batchId, - List<CatchFrequencyRow> frequencyRows) { - List<SpeciesBatchFrequency> frequencies = - persistenceService.getAllSpeciesBatchFrequency(batchId); - for (SpeciesBatchFrequency frequency : frequencies) { - CatchFrequencyRow frequencyRow = new CatchFrequencyRow(); - frequencyRow.setBatchId(rowId); - frequencyRow.setLengthStepCaracteristic(frequency.getLengthStepCaracteristic()); - frequencyRow.setLengthStep(frequency.getLengthStep()); - frequencyRow.setNumber(frequency.getNumber()); - frequencyRow.setWeight(frequency.getWeight()); - frequencyRows.add(frequencyRow); - } - } - - protected void addAttachments(String batchId, - int objectId, - ObjectTypeCode objectType, - List<AttachmentRow> attachmentRows) { - List<Attachment> attachments = - persistenceService.getAllAttachments(objectType, objectId); - for (Attachment attachment : attachments) { - AttachmentRow attachmentRow = new AttachmentRow(); - attachmentRow.setBatchId(batchId); - attachmentRow.setName(attachment.getName()); - attachmentRow.setComment(attachment.getComment()); - attachmentRow.setFile(persistenceService.getAttachmentFile(attachment.getId())); - attachmentRows.add(attachmentRow); - } - } - - protected <R> void export(File file, ExportModel<R> exportModel, List<R> rows, @@ -662,46 +422,4 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult } } - protected void exportAttachments(File directory, - List<File> file2zip, - List<AttachmentRow> attachmentRows) { - - AttachmentRowModel csvAttachmentModel = new AttachmentRowModel(CSV_SEPARATOR); - - File attachmentDirectory = new File(directory, ATTACHMENTS_DIRECTORY); - ApplicationIOUtil.forceMkdir(attachmentDirectory, t("tutti.service.multipost.attachment.mkdir.error", attachmentDirectory)); - file2zip.add(attachmentDirectory); - for (AttachmentRow attachmentRow : attachmentRows) { - File attachmentFile = attachmentRow.getFile(); - File destFile = new File(attachmentDirectory, attachmentFile.getName()); - ApplicationIOUtil.copyFile(attachmentFile, - destFile, - t("tutti.service.multipost.attachment.copy.error", attachmentFile)); - file2zip.add(destFile); - } - - File attachmentFile = new File(directory, ATTACHMENTS_FILE); - file2zip.add(attachmentFile); - export(attachmentFile, - csvAttachmentModel, - attachmentRows, - n("tutti.service.multipost.export.attachments.error")); - - } - - protected void exportAttachmentsAndCreateZip(File file, - File directory, - List<File> file2zip, - List<AttachmentRow> attachmentRows) { - exportAttachments(directory, file2zip, attachmentRows); - - try { - ApplicationIOUtil.zip(directory, - file, - file2zip, - n("tutti.service.multipost.export.error")); - } finally { - ApplicationIOUtil.deleteDirectory(directory, t("tutti.service.multipost.export.deleteTempDirectory.error", file)); - } - } } diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportServiceTest.java index 7550f97..6f3b062 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostExportServiceTest.java @@ -154,7 +154,7 @@ public class MultiPostExportServiceTest { Assert.assertFalse(exportFile.exists()); - service.exportSpecies(exportFile, dataContext.operations.get(0)); + service.exportSpecies(exportFile, dataContext.operations.get(0), true, false); Assert.assertTrue(exportFile.exists()); dbResource.assertZipContent( @@ -177,7 +177,7 @@ public class MultiPostExportServiceTest { Assert.assertFalse(exportFile.exists()); - service.exportBenthos(exportFile, dataContext.operations.get(0)); + service.exportBenthos(exportFile, dataContext.operations.get(0), true, true); Assert.assertTrue(exportFile.exists()); dbResource.assertZipContent( @@ -212,27 +212,27 @@ public class MultiPostExportServiceTest { ); } - @Test - public void testExportIndividualObservation() throws Exception { - File exportFile = new File(dataDirectory, - "exportIndividualObservation.zip"); - - Files.createParentDirs(exportFile); - - Assert.assertFalse(exportFile.exists()); - - service.exportIndividualObservation(exportFile, dataContext.operations.get(0)); - Assert.assertTrue(exportFile.exists()); - - dbResource.assertZipContent( - "IndividualObservation export", - exportFile, - Pair.of(MultiPostExportService.INDIVIDUAL_OBSERVATION_FILE, INDIVIDUAL_OBSERVATION_CONTENT), - Pair.of(MultiPostExportService.CARACTERISTIC_FILE, INDIVIDUAL_OBSERVATION_CARACTERISTIC_CONTENT), - Pair.of(MultiPostExportService.WEIGHTS_FILE, INDIVIDUAL_OBSERVATION_WEIGHTS_CONTENT), - Pair.of(MultiPostExportService.ATTACHMENTS_FILE, INDIVIDUAL_OBSERVATION_ATTACHMENT_CONTENT) - ); - } +// @Test +// public void testExportIndividualObservation() throws Exception { +// File exportFile = new File(dataDirectory, +// "exportIndividualObservation.zip"); +// +// Files.createParentDirs(exportFile); +// +// Assert.assertFalse(exportFile.exists()); +// +// service.exportIndividualObservation(exportFile, dataContext.operations.get(0)); +// Assert.assertTrue(exportFile.exists()); +// +// dbResource.assertZipContent( +// "IndividualObservation export", +// exportFile, +// Pair.of(MultiPostExportService.INDIVIDUAL_OBSERVATION_FILE, INDIVIDUAL_OBSERVATION_CONTENT), +// Pair.of(MultiPostExportService.CARACTERISTIC_FILE, INDIVIDUAL_OBSERVATION_CARACTERISTIC_CONTENT), +// Pair.of(MultiPostExportService.WEIGHTS_FILE, INDIVIDUAL_OBSERVATION_WEIGHTS_CONTENT), +// Pair.of(MultiPostExportService.ATTACHMENTS_FILE, INDIVIDUAL_OBSERVATION_ATTACHMENT_CONTENT) +// ); +// } @Test public void testExportAccidentalCatch() throws Exception { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8061 in repository tutti. See http://git.codelutin.com/tutti.git commit e3a10a01e91248cc4038b68bc42f7ad2c3ce444d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 9 17:10:52 2016 +0100 Début de revue de l'import multi-poste --- .../catches/multipost/MultiPostImportService.java | 49 ++++++++++++++++++---- .../multipost/MultiPostImportServiceTest.java | 2 +- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java index 17995a1..8b9071a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java @@ -286,7 +286,9 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult * @return the list of the species which have not been imported, because there were concurrent batches */ public Map<String, Object> importSpecies(final File file, - final FishingOperation operation) { + final FishingOperation operation, + final boolean importFrequencies, + final boolean importIndividualObservations) { Callable<Map<String, Object>> call = () -> { @@ -319,15 +321,48 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult notImportedBatches, speciesList); - List<Caracteristic> caracteristics = dataContext.getCaracteristics(); // Import frequencies - importSpeciesFrequencies( - tempDir, - batches, - notImportedBatches, - caracteristics); + if (importFrequencies) { + List<Caracteristic> caracteristics = dataContext.getCaracteristics(); + importSpeciesFrequencies( + tempDir, + batches, + notImportedBatches, + caracteristics); + } + + if (importIndividualObservations) { + + List<Caracteristic> caracteristics = dataContext.getCaracteristicWithProtected(); + + // Import batches + // map containing the batches by their persistence id + final Map<String, IndividualObservationBatch> individualObservatiosnBatches = importIndividualObservationBatches( + tempDir, + operation, + speciesList, + caracteristics); + + // Import caracteristics + + importIndividualObservationCaracteristics(tempDir, + individualObservatiosnBatches, + caracteristics); + + // Persist batches + + //FIXME +// for (IndividualObservationBatch batch : batches.values()) { +// persistenceService.createIndividualObservationBatch(batch); +// } + + // Import attachments + + importAttachments(tempDir, individualObservatiosnBatches, ObjectTypeCode.SAMPLE); + + } // Import attachments diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportServiceTest.java index ffe91f9..546701d 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportServiceTest.java @@ -148,7 +148,7 @@ public class MultiPostImportServiceTest { log.info("Import multiImport " + speciesImportFile); } - multiPostImportService.importSpecies(speciesImportFile, fishingOperation); + multiPostImportService.importSpecies(speciesImportFile, fishingOperation, true, false); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8061 in repository tutti. See http://git.codelutin.com/tutti.git commit 5d268178b9a2ea7a6066bd51995a791a3be8b913 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 9 17:11:37 2016 +0100 Ajout des actions pour l'import-export multi-poste sur l'écran des espèces (See #8061) --- .../filtered-resources/tutti-help-fr.properties | 8 ++- .../operation/catches/species/SpeciesBatchUI.jaxx | 13 +++- .../operation/catches/species/SpeciesBatchUI.jcss | 76 ++++++++++++++++++---- ....java => ExportMultiPostSpeciesFullAction.java} | 16 ++--- ...portMultiPostSpeciesOnlyFrequenciesAction.java} | 16 ++--- ...stSpeciesOnlyIndividualObservationsAction.java} | 16 ++--- ....java => ImportMultiPostSpeciesFullAction.java} | 12 ++-- ...portMultiPostSpeciesOnlyFrequenciesAction.java} | 16 ++--- ...stSpeciesOnlyIndividualObservationsAction.java} | 16 ++--- .../resources/i18n/tutti-ui-swing_en_GB.properties | 43 ++++++++++++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 60 +++++++++++++---- 11 files changed, 217 insertions(+), 75 deletions(-) diff --git a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties index e990a30..7c5f8c8 100644 --- a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties +++ b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Tue Mar 08 18:29:34 CET 2016 +#Wed Mar 09 16:42:42 CET 2016 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -278,8 +278,14 @@ tutti.editSpeciesBatch.action.createBatch.help=editFishingOperation.html\#captur tutti.editSpeciesBatch.action.createMelag.help=editFishingOperation.html\#captureEspecesActions tutti.editSpeciesBatch.action.editFrequencies.help=editFishingOperation.html\#captureEspecesActions tutti.editSpeciesBatch.action.exportMultiPost.help=editFishingOperation.html\#captureEspecesActions +tutti.editSpeciesBatch.action.exportMultiPostFull.help= +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.help= +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.help= tutti.editSpeciesBatch.action.importBigfin.help=editFishingOperation.html\#captureEspecesActions tutti.editSpeciesBatch.action.importMultiPost.help=editFishingOperation.html\#captureEspecesActions +tutti.editSpeciesBatch.action.importMultiPostFull.help= +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.help= +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.help= tutti.editSpeciesBatch.action.importPsion.help=editFishingOperation.html\#captureEspecesActions tutti.editSpeciesBatch.action.importPupitri.help=editFishingOperation.html\#captureEspecesActions tutti.editSpeciesBatch.action.removeBatch.help=editFishingOperation.html\#captureEspecesActions diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx index 765592a..baad293 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx @@ -65,8 +65,17 @@ public SpeciesBatchUI(TuttiUI<?,?> parentUI) { <JMenuItem id='importPupitriButton'/> <JMenuItem id='importPsionButton'/> <JMenuItem id='importBigfinButton'/> - <JMenuItem id='importMultiPostButton'/> - <JMenuItem id='exportMultiPostButton'/> + <JMenu id='menuImportMultiPost'> + <JMenuItem id='importMultiPostFullButton'/> + <JMenuItem id='importMultiPostOnlyFrequenciesButton'/> + <JMenuItem id='importMultiPostOnlyIndividualObservationsButton'/> + </JMenu> + <JMenu id='menuExportMultiPost'> + <JMenuItem id='exportMultiPostFullButton'/> + <JMenuItem id='exportMultiPostOnlyFrequenciesButton'/> + <JMenuItem id='exportMultiPostOnlyIndividualObservationsButton'/> + + </JMenu> </JMenu> </JMenuBar> <ButtonAttachment id='speciesBatchAttachmentsButton' diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jcss index b2892ea..2c011dc 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jcss @@ -59,6 +59,22 @@ ComputableDataEditor { i18nMnemonic: "tutti.toolbar.menu.action.mnemonic"; } +#menuImportMultiPost { + opaque: true; + actionIcon: import; + text: "tutti.toolbar.menuImportMultiPost.action"; + toolTipText: "tutti.toolbar.menuImportMultiPost.action.tip"; + i18nMnemonic: "tutti.toolbar.menuImportMultiPost.action.mnemonic"; +} + +#menuExportMultiPost { + opaque: true; + actionIcon: export; + text: "tutti.toolbar.menuExportMultiPost.action"; + toolTipText: "tutti.toolbar.menuExportMultiPost.action.tip"; + i18nMnemonic: "tutti.toolbar.menuExportMultiPost.action.mnemonic"; +} + #speciesBatchAttachmentsButton { toolTipText: "tutti.editSpeciesBatch.action.attachments.tip"; focusPainted: false; @@ -287,22 +303,58 @@ ComputableDataEditor { _help: {"tutti.editSpeciesBatch.action.importBigfin.help"}; } -#importMultiPostButton { +#importMultiPostFullButton { + actionIcon: import; + text: "tutti.editSpeciesBatch.action.importMultiPostFull"; + toolTipText: "tutti.editSpeciesBatch.action.importMultiPostFull.tip"; + i18nMnemonic: "tutti.editSpeciesBatch.action.importMultiPostFull.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ImportMultiPostSpeciesFullAction.class}; + _help: {"tutti.editSpeciesBatch.action.importMultiPostFull.help"}; +} + +#importMultiPostOnlyFrequenciesButton { actionIcon: import; - text: "tutti.editSpeciesBatch.action.importMultiPost"; - toolTipText: "tutti.editSpeciesBatch.action.importMultiPost.tip"; - i18nMnemonic: "tutti.editSpeciesBatch.action.importMultiPost.mnemonic"; - _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ImportMultiPostSpeciesAction.class}; - _help: {"tutti.editSpeciesBatch.action.importMultiPost.help"}; + text: "tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies"; + toolTipText: "tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.tip"; + i18nMnemonic: "tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ImportMultiPostSpeciesOnlyFrequenciesAction.class}; + _help: {"tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.help"}; +} + +#importMultiPostOnlyIndividualObservationsButton { + actionIcon: import; + text: "tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations"; + toolTipText: "tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.tip"; + i18nMnemonic: "tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ImportMultiPostSpeciesOnlyIndividualObservationsAction.class}; + _help: {"tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.help"}; +} + +#exportMultiPostFullButton { + actionIcon: export; + text: "tutti.editSpeciesBatch.action.exportMultiPostFull"; + toolTipText: "tutti.editSpeciesBatch.action.exportMultiPostFull.tip"; + i18nMnemonic: "tutti.editSpeciesBatch.action.exportMultiPostFull.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ExportMultiPostSpeciesFullAction.class}; + _help: {"tutti.editSpeciesBatch.action.exportMultiPostFull.help"}; +} + +#exportMultiPostOnlyFrequenciesButton { + actionIcon: export; + text: "tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies"; + toolTipText: "tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.tip"; + i18nMnemonic: "tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ExportMultiPostSpeciesOnlyFrequenciesAction.class}; + _help: {"tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.help"}; } -#exportMultiPostButton { +#exportMultiPostOnlyIndividualObservationsButton { actionIcon: export; - text: "tutti.editSpeciesBatch.action.exportMultiPost"; - toolTipText: "tutti.editSpeciesBatch.action.exportMultiPost.tip"; - i18nMnemonic: "tutti.editSpeciesBatch.action.exportMultiPost.mnemonic"; - _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ExportMultiPostSpeciesAction.class}; - _help: {"tutti.editSpeciesBatch.action.exportMultiPost.help"}; + text: "tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations"; + toolTipText: "tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.tip"; + i18nMnemonic: "tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions.ExportMultiPostSpeciesOnlyIndividualObservationsAction.class}; + _help: {"tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.help"}; } #filterSpeciesBatchAllButton { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesFullAction.java similarity index 77% copy from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java copy to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesFullAction.java index 134d3bb..0d31ffd 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesFullAction.java @@ -37,41 +37,41 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin - kmorin@codelutin.com * @since 2.2 */ -public class ExportMultiPostSpeciesAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ExportMultiPostSpeciesFullAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - public ExportMultiPostSpeciesAction(SpeciesBatchUIHandler handler) { + public ExportMultiPostSpeciesFullAction(SpeciesBatchUIHandler handler) { super(handler); } @Override protected String getFileExtension() { - return "tuttiSpecies"; + return "tuttiSpeciesFull"; } @Override protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiSpecies"); + return t("tutti.common.file.tuttiSpeciesFull"); } @Override protected String getFileChooserTitle() { - return t("tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.title"); + return t("tutti.editSpeciesBatch.action.exportMultiPostFull.destinationFile.title"); } @Override protected String getFileChooserButton() { - return t("tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.button"); + return t("tutti.editSpeciesBatch.action.exportMultiPostFull.destinationFile.button"); } @Override protected String getSuccessMessage(File file) { - return t("tutti.editSpeciesBatch.action.exportMultiPost.success", file); + return t("tutti.editSpeciesBatch.action.exportMultiPostFull.success", file); } @Override protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { - multiPostImportExportService.exportSpecies(file, fishingOperation); + multiPostImportExportService.exportSpecies(file, fishingOperation, true, true); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java similarity index 74% copy from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java copy to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java index 134d3bb..dcf17f1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java @@ -37,41 +37,41 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin - kmorin@codelutin.com * @since 2.2 */ -public class ExportMultiPostSpeciesAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ExportMultiPostSpeciesOnlyFrequenciesAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - public ExportMultiPostSpeciesAction(SpeciesBatchUIHandler handler) { + public ExportMultiPostSpeciesOnlyFrequenciesAction(SpeciesBatchUIHandler handler) { super(handler); } @Override protected String getFileExtension() { - return "tuttiSpecies"; + return "tuttiSpeciesOnlyFrequencies"; } @Override protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiSpecies"); + return t("tutti.common.file.tuttiSpeciesOnlyFrequencies"); } @Override protected String getFileChooserTitle() { - return t("tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.title"); + return t("tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.destinationFile.title"); } @Override protected String getFileChooserButton() { - return t("tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.button"); + return t("tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.destinationFile.button"); } @Override protected String getSuccessMessage(File file) { - return t("tutti.editSpeciesBatch.action.exportMultiPost.success", file); + return t("tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.success", file); } @Override protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { - multiPostImportExportService.exportSpecies(file, fishingOperation); + multiPostImportExportService.exportSpecies(file, fishingOperation, true, false); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java similarity index 72% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java index 134d3bb..0570e07 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java @@ -37,41 +37,41 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin - kmorin@codelutin.com * @since 2.2 */ -public class ExportMultiPostSpeciesAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ExportMultiPostSpeciesOnlyIndividualObservationsAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - public ExportMultiPostSpeciesAction(SpeciesBatchUIHandler handler) { + public ExportMultiPostSpeciesOnlyIndividualObservationsAction(SpeciesBatchUIHandler handler) { super(handler); } @Override protected String getFileExtension() { - return "tuttiSpecies"; + return "tuttiSpeciesOnlyIndividualObservations"; } @Override protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiSpecies"); + return t("tutti.common.file.tuttiSpeciesOnlyIndividualObservations"); } @Override protected String getFileChooserTitle() { - return t("tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.title"); + return t("tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.destinationFile.title"); } @Override protected String getFileChooserButton() { - return t("tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.button"); + return t("tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.destinationFile.button"); } @Override protected String getSuccessMessage(File file) { - return t("tutti.editSpeciesBatch.action.exportMultiPost.success", file); + return t("tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.success", file); } @Override protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { - multiPostImportExportService.exportSpecies(file, fishingOperation); + multiPostImportExportService.exportSpecies(file, fishingOperation, false, true); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java similarity index 90% copy from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java copy to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java index 27439a5..21aecdd 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java @@ -43,25 +43,25 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin - kmorin@codelutin.com * @since 2.2 */ -public class ImportMultiPostSpeciesAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ImportMultiPostSpeciesFullAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - public ImportMultiPostSpeciesAction(SpeciesBatchUIHandler handler) { + public ImportMultiPostSpeciesFullAction(SpeciesBatchUIHandler handler) { super(handler); } @Override protected String getFileExtension() { - return "tuttiSpecies"; + return "tuttiSpeciesFull"; } @Override protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiSpecies"); + return t("tutti.common.file.tuttiSpeciesFull"); } @Override protected String getFileChooserTitle() { - return t("tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title"); + return t("tutti.editSpeciesBatch.action.importMultiPostFull.sourceFile.title"); } @Override @@ -77,7 +77,7 @@ public class ImportMultiPostSpeciesAction extends ImportMultiPostActionSupport<S @Override protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { - return multiPostImportExportService.importSpecies(file, operation); + return multiPostImportExportService.importSpecies(file, operation, true, true); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java similarity index 84% copy from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java copy to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java index 27439a5..2798ed0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java @@ -43,41 +43,41 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin - kmorin@codelutin.com * @since 2.2 */ -public class ImportMultiPostSpeciesAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ImportMultiPostSpeciesOnlyFrequenciesAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - public ImportMultiPostSpeciesAction(SpeciesBatchUIHandler handler) { + public ImportMultiPostSpeciesOnlyFrequenciesAction(SpeciesBatchUIHandler handler) { super(handler); } @Override protected String getFileExtension() { - return "tuttiSpecies"; + return "tuttiSpeciesOnlyFrequencies"; } @Override protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiSpecies"); + return t("tutti.common.file.tuttiSpeciesOnlyFrequencies"); } @Override protected String getFileChooserTitle() { - return t("tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title"); + return t("tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.sourceFile.title"); } @Override protected String getFileChooserButton() { - return t("tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button"); + return t("tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.sourceFile.button"); } @Override protected String getSuccessMessage(File file) { - return t("tutti.editSpeciesBatch.action.importMultiPost.success", file); + return t("tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.success", file); } @Override protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { - return multiPostImportExportService.importSpecies(file, operation); + return multiPostImportExportService.importSpecies(file, operation, true, false); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java similarity index 83% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java index 27439a5..36161df 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java @@ -43,41 +43,41 @@ import static org.nuiton.i18n.I18n.t; * @author Kevin Morin - kmorin@codelutin.com * @since 2.2 */ -public class ImportMultiPostSpeciesAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ImportMultiPostSpeciesOnlyIndividualObservationsAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - public ImportMultiPostSpeciesAction(SpeciesBatchUIHandler handler) { + public ImportMultiPostSpeciesOnlyIndividualObservationsAction(SpeciesBatchUIHandler handler) { super(handler); } @Override protected String getFileExtension() { - return "tuttiSpecies"; + return "tuttiSpeciesOnlyIndividualObservations"; } @Override protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiSpecies"); + return t("tutti.common.file.tuttiSpeciesOnlyIndividualObservations"); } @Override protected String getFileChooserTitle() { - return t("tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title"); + return t("tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.sourceFile.title"); } @Override protected String getFileChooserButton() { - return t("tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button"); + return t("tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.sourceFile.button"); } @Override protected String getSuccessMessage(File file) { - return t("tutti.editSpeciesBatch.action.importMultiPost.success", file); + return t("tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.success", file); } @Override protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { - return multiPostImportExportService.importSpecies(file, operation); + return multiPostImportExportService.importSpecies(file, operation, false, true); } diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 69528c3..0857a7f 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -120,6 +120,9 @@ tutti.common.file.tuttiCatch= tutti.common.file.tuttiIndividualObservation= tutti.common.file.tuttiMarineLitter= tutti.common.file.tuttiSpecies= +tutti.common.file.tuttiSpeciesFull= +tutti.common.file.tuttiSpeciesOnlyFrequencies= +tutti.common.file.tuttiSpeciesOnlyIndividualObservations= tutti.common.file.zip= tutti.common.referential.gear=Gear tutti.common.referential.person=Personutilisateur @@ -1315,6 +1318,24 @@ tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.title= tutti.editSpeciesBatch.action.exportMultiPost.mnemonic= tutti.editSpeciesBatch.action.exportMultiPost.success= tutti.editSpeciesBatch.action.exportMultiPost.tip= +tutti.editSpeciesBatch.action.exportMultiPostFull= +tutti.editSpeciesBatch.action.exportMultiPostFull.destinationFile.button= +tutti.editSpeciesBatch.action.exportMultiPostFull.destinationFile.title= +tutti.editSpeciesBatch.action.exportMultiPostFull.mnemonic= +tutti.editSpeciesBatch.action.exportMultiPostFull.success= +tutti.editSpeciesBatch.action.exportMultiPostFull.tip= +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies= +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.destinationFile.button= +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.destinationFile.title= +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.mnemonic= +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.success= +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.tip= +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations= +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.destinationFile.button= +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.destinationFile.title= +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.mnemonic= +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.success= +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.tip= tutti.editSpeciesBatch.action.ichtyometer= tutti.editSpeciesBatch.action.ichtyometer.mnemonic= tutti.editSpeciesBatch.action.ichtyometer.tip= @@ -1336,6 +1357,22 @@ tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button= tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title= tutti.editSpeciesBatch.action.importMultiPost.success= tutti.editSpeciesBatch.action.importMultiPost.tip= +tutti.editSpeciesBatch.action.importMultiPostFull= +tutti.editSpeciesBatch.action.importMultiPostFull.mnemonic= +tutti.editSpeciesBatch.action.importMultiPostFull.sourceFile.title= +tutti.editSpeciesBatch.action.importMultiPostFull.tip= +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies= +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.mnemonic= +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.sourceFile.button= +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.sourceFile.title= +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.success= +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.tip= +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations= +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.mnemonic= +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.sourceFile.button= +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.sourceFile.title= +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.success= +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.tip= tutti.editSpeciesBatch.action.importPsion= tutti.editSpeciesBatch.action.importPsion.existingData.help= tutti.editSpeciesBatch.action.importPsion.existingData.message= @@ -2357,6 +2394,12 @@ tutti.todo= tutti.toolbar.menu.action= tutti.toolbar.menu.action.mnemonic= tutti.toolbar.menu.action.tip= +tutti.toolbar.menuExportMultiPost.action= +tutti.toolbar.menuExportMultiPost.action.mnemonic= +tutti.toolbar.menuExportMultiPost.action.tip= +tutti.toolbar.menuImportMultiPost.action= +tutti.toolbar.menuImportMultiPost.action.mnemonic= +tutti.toolbar.menuImportMultiPost.action.tip= tutti.ui.change.species.decorator= tutti.update.db= tutti.update.error.with.auth= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 732bc5c..540ca1c 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -91,9 +91,11 @@ tutti.common.file.protocol=Extension d'un fichier de protocole Allegro Campagne tutti.common.file.tuttiAccidental=Fichier d'import/export des lots de captures accidentelles tutti.common.file.tuttiBenthos=Fichier d'import/export des lots de benthos tutti.common.file.tuttiCatch=Fichier d'import/export des poids de capture -tutti.common.file.tuttiIndividualObservation=Fichier d'import/export des lots d'observations individuelles tutti.common.file.tuttiMarineLitter=Fichier d'import/export des lots de déchets -tutti.common.file.tuttiSpecies=Fichier d'import/export des lots d'espèces +tutti.common.file.tuttiSpecies= +tutti.common.file.tuttiSpeciesFull=Fichier d'import/export des lots d'espèces (mensurations et observations individuelles) +tutti.common.file.tuttiSpeciesOnlyFrequencies=Fichier d'import/export des lots d'espèces avec uniquement les mensurations +tutti.common.file.tuttiSpeciesOnlyIndividualObservations=Fichier d'import/export des lots d'espèces avec uniquement les observations individuelles tutti.common.file.zip=Fichier zip tutti.common.referential.gear=Engin tutti.common.referential.person=utilisateur @@ -1233,12 +1235,24 @@ tutti.editSpeciesBatch.action.doNotShowReport=Continuer tutti.editSpeciesBatch.action.editFrequencies=Mensurations tutti.editSpeciesBatch.action.editFrequencies.mnemonic=M tutti.editSpeciesBatch.action.editFrequencies.tip=Éditer les mensurations -tutti.editSpeciesBatch.action.exportMultiPost=Exporter les lots d'espèces -tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.button=Exporter -tutti.editSpeciesBatch.action.exportMultiPost.destinationFile.title=Exporter les lots d'espèces -tutti.editSpeciesBatch.action.exportMultiPost.mnemonic=E -tutti.editSpeciesBatch.action.exportMultiPost.success=Les lots d'espèces ont été exportés dans le fichier %s -tutti.editSpeciesBatch.action.exportMultiPost.tip=Exporter les lots d'espèces pour les importer sur le poste maître +tutti.editSpeciesBatch.action.exportMultiPostFull=Lots d'espèces, mensurations et observations individuelles +tutti.editSpeciesBatch.action.exportMultiPostFull.destinationFile.button=Exporter +tutti.editSpeciesBatch.action.exportMultiPostFull.destinationFile.title=Exporter les lots d'espèces, mensurations et observations individuelles +tutti.editSpeciesBatch.action.exportMultiPostFull.mnemonic=F +tutti.editSpeciesBatch.action.exportMultiPostFull.success=Les lots d'espèces ont été exportés dans le fichier %s +tutti.editSpeciesBatch.action.exportMultiPostFull.tip=Exporter les lots d'espèces, mensurations et observations individuelles pour les importer sur le poste maître +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies=Les lots d'espèces et mensurations +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.destinationFile.button=Exporter +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.destinationFile.title=Exporter les lots d'espèces et mensurations +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.mnemonic=M +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.success=Les lots d'espèces et mensurations ont été exportés dans le fichier %s +tutti.editSpeciesBatch.action.exportMultiPostOnlyFrequencies.tip=Exporter les lots d'espèces et mensurations pour les importer sur le poste maître +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations=Lots d'espèces et observations individuelles +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.destinationFile.button=Exporter +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.destinationFile.title=Exporter les lots d'espèces et observations individuelles +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.mnemonic=O +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.success=Les lots d'espèces et observations individuelles ont été exportés dans le fichier %s +tutti.editSpeciesBatch.action.exportMultiPostOnlyIndividualObservations.tip=Exporter les lots d'espèces et les observations individuelles pour les importer sur le poste maître tutti.editSpeciesBatch.action.importBigfin=Import Bigfin tutti.editSpeciesBatch.action.importBigfin.errors.fishingOperation=L'import Bigfin a été réalisé, mais des erreurs ont été détectées \:<ul>%s</ul><br/> tutti.editSpeciesBatch.action.importBigfin.errors.fishingOperation.title=Import Bigfin @@ -1248,12 +1262,24 @@ tutti.editSpeciesBatch.action.importBigfin.fatal.fishingOperation.title=Import B tutti.editSpeciesBatch.action.importBigfin.mnemonic=B tutti.editSpeciesBatch.action.importBigfin.success=Import Bigfin réussi \: %1s mensurations importées, %2s mensurations supprimées tutti.editSpeciesBatch.action.importBigfin.tip=Import Bigfin -tutti.editSpeciesBatch.action.importMultiPost=Importer des lots d'espèces -tutti.editSpeciesBatch.action.importMultiPost.mnemonic=I -tutti.editSpeciesBatch.action.importMultiPost.sourceFile.button=Importer -tutti.editSpeciesBatch.action.importMultiPost.sourceFile.title=Importer des lots d'espèces -tutti.editSpeciesBatch.action.importMultiPost.success=Des lots d'espèces ont été importés depuis le fichier %s -tutti.editSpeciesBatch.action.importMultiPost.tip=Importer des lots d'espèces créés sur un poste satellite +tutti.editSpeciesBatch.action.importMultiPostFull=Lots d'espèces, mensurations et observations individuelles +tutti.editSpeciesBatch.action.importMultiPostFull.mnemonic=F +tutti.editSpeciesBatch.action.importMultiPostFull.sourceFile.button=Importer +tutti.editSpeciesBatch.action.importMultiPostFull.sourceFile.title=Importer des lots d'espèces, mensurations et observations individuelles +tutti.editSpeciesBatch.action.importMultiPostFull.success=Des lots d'espèces, mensurations et observations individuelles ont été importés depuis le fichier %s +tutti.editSpeciesBatch.action.importMultiPostFull.tip=Importer des lots d'espèces, mensurations et observations individuelles créés sur un poste satellite +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies=Lots d'espèces et mensurations +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.mnemonic=M +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.sourceFile.button=Importer +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.sourceFile.title=Importer des lots d'espèces et des mensurations +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.success=Des lots d'espèces et mensurations ont été importés depuis le fichier %s +tutti.editSpeciesBatch.action.importMultiPostOnlyFrequencies.tip=Importer des lots d'espèces et des mensurations créés sur un poste satellite +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations=Lot espèces et observations individuelles +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.mnemonic=O +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.sourceFile.button=Importer +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.sourceFile.title=Importer des lots d'espèces et des observations individuelles +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.success=Des lots d'espèces et observations individuelles ont été importés depuis le fichier %s +tutti.editSpeciesBatch.action.importMultiPostOnlyIndividualObservations.tip=Importer des lots d'espèces et des observations individuelles créés sur un poste satellite tutti.editSpeciesBatch.action.importPsion=Import Psion tutti.editSpeciesBatch.action.importPsion.existingData.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas importer les données Pupitri et conserver les espèces saisies</li><li><strong>OK</strong> pour supprimer les espèces existantes et les remplacer par les données de Pupitri</li></ul> tutti.editSpeciesBatch.action.importPsion.existingData.message=Des espèces ont déjà été saisies dans la capture. Si vous continuez, elles vont être écrasées. @@ -2161,6 +2187,12 @@ tutti.todo= tutti.toolbar.menu.action=Actions tutti.toolbar.menu.action.mnemonic=A tutti.toolbar.menu.action.tip=Actions possibles pour cet onglet +tutti.toolbar.menuExportMultiPost.action=Export multi-postes +tutti.toolbar.menuExportMultiPost.action.mnemonic=E +tutti.toolbar.menuExportMultiPost.action.tip=Exporter des lots espèces +tutti.toolbar.menuImportMultiPost.action=Import multi-postes +tutti.toolbar.menuImportMultiPost.action.mnemonic=I +tutti.toolbar.menuImportMultiPost.action.tip=Import des lots espèces tutti.ui.change.species.decorator=Changer la décoration tutti.update.db=Base de données tutti.update.error.with.auth=Impossible de télécharger la mise à jour du module <strong>%s</strong>.<br/>Le login / mot de passe que vous avez saisis n'étaient peut-être pas corrects.<br/>Si le problème persiste, veuillez consulter l'administrateur. -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8061 in repository tutti. See http://git.codelutin.com/tutti.git commit 5200dbe30662e789e243c9072fe79a857e25d60d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Mar 9 17:11:56 2016 +0100 Fix api --- .../operation/catches/benthos/actions/ExportMultiPostBenthosAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/actions/ExportMultiPostBenthosAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/actions/ExportMultiPostBenthosAction.java index 82e2a6c..0e680ce 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/actions/ExportMultiPostBenthosAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/actions/ExportMultiPostBenthosAction.java @@ -71,7 +71,7 @@ public class ExportMultiPostBenthosAction extends ExportMultiPostActionSupport<B @Override protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { - multiPostImportExportService.exportBenthos(file, fishingOperation); + multiPostImportExportService.exportBenthos(file, fishingOperation, true, true); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm