branch develop updated (9f19d6d -> 18ce0bf)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 9f19d6d Fixes #8118 Merge branch 'feature/8118' into develop new bb7298d Ave Cesar... new 6e7d6b8 On met tous les classes d'import/export csv dans un paquetage csv + import/export sur un lot (See #8119) new 29caf78 réusinage actions d'import sur le trait new 98fc416 Import/export au niveau d'un lot (See #8119) new 6181678 Ajout avertissement avant import multi-poste si des données existent (See #8119) new 18ce0bf Fixes #8119 Merge branch 'feature/8119' into develop The 6 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 18ce0bf9f235df1c410a8598c83550751731a900 Merge: 9f19d6d 6181678 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 16:23:07 2016 +0100 Fixes #8119 Merge branch 'feature/8119' into develop commit 6181678977b183757cd7aa9aa10137f334b776d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 16:23:04 2016 +0100 Ajout avertissement avant import multi-poste si des données existent (See #8119) commit 98fc416b778536a44693ccc186cfb163ca9bd61e Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 15:59:16 2016 +0100 Import/export au niveau d'un lot (See #8119) commit 29caf78330512264981e6fb798b1d75304cf6661 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 15:58:36 2016 +0100 réusinage actions d'import sur le trait commit 6e7d6b843ffc7bd77536c8c31ed3fd42505b28ca Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 15:33:19 2016 +0100 On met tous les classes d'import/export csv dans un paquetage csv + import/export sur un lot (See #8119) commit bb7298dfa33111a0c1096db9842101c92a20bd6d Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 09:18:32 2016 +0100 Ave Cesar... Summary of changes: .../catches/multipost/MultiPostExportContext.java | 105 +++-- .../catches/multipost/MultiPostExportService.java | 161 ++++--- .../catches/multipost/MultiPostImportContext.java | 6 +- .../catches/multipost/MultiPostImportService.java | 481 +++++++++++++++++---- .../{ => csv}/AbstractFishingOperationRow.java | 2 +- .../AbstractFishingOperationRowModel.java | 12 +- .../multipost/{ => csv}/AccidentalCatchRow.java | 13 +- .../{ => csv}/AccidentalCatchRowModel.java | 28 +- .../catches/multipost/{ => csv}/AttachmentRow.java | 9 +- .../multipost/{ => csv}/AttachmentRowModel.java | 19 +- .../multipost/{ => csv}/CaracteristicRow.java | 8 +- .../multipost/{ => csv}/CaracteristicRowModel.java | 19 +- .../catches/multipost/{ => csv}/CatchBatchRow.java | 2 +- .../multipost/{ => csv}/CatchBatchRowModel.java | 5 +- .../multipost/{ => csv}/CatchFrequencyRow.java | 22 +- .../{ => csv}/CatchFrequencyRowModel.java | 22 +- .../catches/multipost/{ => csv}/CatchRow.java | 15 +- .../catches/multipost/{ => csv}/CatchRowModel.java | 21 +- .../multipost/{ => csv}/CatchWeightsRow.java | 2 +- .../multipost/{ => csv}/CatchWeightsRowModel.java | 5 +- .../multipost/{ => csv}/FishingOperationRow.java | 2 +- .../{ => csv}/FishingOperationRowModel.java | 6 +- .../{ => csv}/IndividualObservationRow.java | 14 +- .../{ => csv}/IndividualObservationRowModel.java | 19 +- .../multipost/{ => csv}/MarineLitterRow.java | 11 +- .../multipost/{ => csv}/MarineLitterRowModel.java | 19 +- .../multipost/{ => csv}/MarineLitterWeightRow.java | 2 +- .../{ => csv}/MarineLitterWeightRowModel.java | 5 +- .../resources/i18n/tutti-service_en_GB.properties | 1 + .../resources/i18n/tutti-service_fr_FR.properties | 1 + .../filtered-resources/tutti-help-fr.properties | 31 +- .../content/operation/catches/EditCatchesUI.jcss | 4 + .../operation/catches/EditCatchesUIHandler.java | 3 +- .../actions/ImportMultiPostActionSupport.java | 2 +- .../catches/species/SpeciesBatchRowModel.java | 22 +- .../actions/ExportMultiPostSpeciesFullAction.java | 4 +- ...xportMultiPostSpeciesOnlyFrequenciesAction.java | 4 +- ...ostSpeciesOnlyIndividualObservationsAction.java | 4 +- .../actions/ImportMultiPostSpeciesFullAction.java | 62 +-- ...mportMultiPostSpeciesOnlyFrequenciesAction.java | 62 +-- ...ostSpeciesOnlyIndividualObservationsAction.java | 62 +-- ...va => ImportMultiPostSpeciesSupportAction.java} | 40 +- .../frequency/SpeciesFrequencyCellComponent.java | 2 +- .../species/frequency/SpeciesFrequencyUI.jaxx | 17 + .../species/frequency/SpeciesFrequencyUI.jcss | 88 ++++ .../frequency/SpeciesFrequencyUIHandler.java | 11 +- .../actions/ExportMultiPostSpeciesFullAction.java | 30 +- ...xportMultiPostSpeciesOnlyFrequenciesAction.java | 30 +- ...ostSpeciesOnlyIndividualObservationsAction.java | 30 +- .../actions/ImportMultiPostSpeciesFullAction.java} | 44 +- ...portMultiPostSpeciesOnlyFrequenciesAction.java} | 44 +- ...stSpeciesOnlyIndividualObservationsAction.java} | 44 +- .../ImportMultiPostSpeciesSupportAction.java | 157 +++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 43 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 48 +- 55 files changed, 1259 insertions(+), 666 deletions(-) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/AbstractFishingOperationRow.java (97%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/AbstractFishingOperationRowModel.java (81%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/AccidentalCatchRow.java (98%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/AccidentalCatchRowModel.java (73%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/AttachmentRow.java (97%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/AttachmentRowModel.java (81%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CaracteristicRow.java (96%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CaracteristicRowModel.java (77%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CatchBatchRow.java (98%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CatchBatchRowModel.java (93%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CatchFrequencyRow.java (87%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CatchFrequencyRowModel.java (70%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CatchRow.java (98%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CatchRowModel.java (83%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CatchWeightsRow.java (97%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/CatchWeightsRowModel.java (91%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/FishingOperationRow.java (94%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/FishingOperationRowModel.java (88%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/IndividualObservationRow.java (98%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/IndividualObservationRowModel.java (78%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/MarineLitterRow.java (97%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/MarineLitterRowModel.java (76%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/MarineLitterWeightRow.java (95%) rename tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/{ => csv}/MarineLitterWeightRowModel.java (90%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/{ImportMultiPostSpeciesFullAction.java => ImportMultiPostSpeciesSupportAction.java} (70%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{ => frequency}/actions/ExportMultiPostSpeciesFullAction.java (65%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{ => frequency}/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java (64%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{ => frequency}/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java (64%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{actions/ExportMultiPostSpeciesFullAction.java => frequency/actions/ImportMultiPostSpeciesFullAction.java} (50%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{actions/ExportMultiPostSpeciesFullAction.java => frequency/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java} (50%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/{actions/ExportMultiPostSpeciesFullAction.java => frequency/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java} (50%) create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit bb7298dfa33111a0c1096db9842101c92a20bd6d Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 09:18:32 2016 +0100 Ave Cesar... --- .../catches/species/actions/ExportMultiPostSpeciesFullAction.java | 4 ++-- .../species/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java | 4 ++-- .../ExportMultiPostSpeciesOnlyIndividualObservationsAction.java | 4 ++-- .../catches/species/actions/ImportMultiPostSpeciesFullAction.java | 4 ++-- .../species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java | 4 ++-- .../ImportMultiPostSpeciesOnlyIndividualObservationsAction.java | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesFullAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesFullAction.java index 0d31ffd..3d73bcf 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesFullAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesFullAction.java @@ -34,8 +34,8 @@ import java.io.File; import static org.nuiton.i18n.I18n.t; /** - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.2 + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 */ public class ExportMultiPostSpeciesFullAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java index dcf17f1..4c31491 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java @@ -34,8 +34,8 @@ import java.io.File; import static org.nuiton.i18n.I18n.t; /** - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.2 + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 */ public class ExportMultiPostSpeciesOnlyFrequenciesAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java index 0570e07..ab7e679 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java @@ -34,8 +34,8 @@ import java.io.File; import static org.nuiton.i18n.I18n.t; /** - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.2 + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 */ public class ExportMultiPostSpeciesOnlyIndividualObservationsAction extends ExportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java index 0ea6cf4..80daa5e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java @@ -40,8 +40,8 @@ import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.2 + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 */ public class ImportMultiPostSpeciesFullAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java index 2798ed0..dc2d351 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java @@ -40,8 +40,8 @@ import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.2 + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 */ public class ImportMultiPostSpeciesOnlyFrequenciesAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java index 36161df..ca6a22c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java @@ -40,8 +40,8 @@ import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.2 + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 */ public class ImportMultiPostSpeciesOnlyIndividualObservationsAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6e7d6b843ffc7bd77536c8c31ed3fd42505b28ca Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 15:33:19 2016 +0100 On met tous les classes d'import/export csv dans un paquetage csv + import/export sur un lot (See #8119) --- .../catches/multipost/MultiPostExportContext.java | 105 +++-- .../catches/multipost/MultiPostExportService.java | 161 ++++--- .../catches/multipost/MultiPostImportContext.java | 6 +- .../catches/multipost/MultiPostImportService.java | 480 +++++++++++++++++---- .../{ => csv}/AbstractFishingOperationRow.java | 2 +- .../AbstractFishingOperationRowModel.java | 12 +- .../multipost/{ => csv}/AccidentalCatchRow.java | 13 +- .../{ => csv}/AccidentalCatchRowModel.java | 28 +- .../catches/multipost/{ => csv}/AttachmentRow.java | 9 +- .../multipost/{ => csv}/AttachmentRowModel.java | 19 +- .../multipost/{ => csv}/CaracteristicRow.java | 8 +- .../multipost/{ => csv}/CaracteristicRowModel.java | 19 +- .../catches/multipost/{ => csv}/CatchBatchRow.java | 2 +- .../multipost/{ => csv}/CatchBatchRowModel.java | 5 +- .../multipost/{ => csv}/CatchFrequencyRow.java | 22 +- .../{ => csv}/CatchFrequencyRowModel.java | 22 +- .../catches/multipost/{ => csv}/CatchRow.java | 15 +- .../catches/multipost/{ => csv}/CatchRowModel.java | 21 +- .../multipost/{ => csv}/CatchWeightsRow.java | 2 +- .../multipost/{ => csv}/CatchWeightsRowModel.java | 5 +- .../multipost/{ => csv}/FishingOperationRow.java | 2 +- .../{ => csv}/FishingOperationRowModel.java | 6 +- .../{ => csv}/IndividualObservationRow.java | 14 +- .../{ => csv}/IndividualObservationRowModel.java | 19 +- .../multipost/{ => csv}/MarineLitterRow.java | 11 +- .../multipost/{ => csv}/MarineLitterRowModel.java | 19 +- .../multipost/{ => csv}/MarineLitterWeightRow.java | 2 +- .../{ => csv}/MarineLitterWeightRowModel.java | 5 +- 28 files changed, 699 insertions(+), 335 deletions(-) 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 index 7c3fb47..6aaf183 100644 --- 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 @@ -5,13 +5,26 @@ 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 fr.ifremer.tutti.service.catches.multipost.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.catches.multipost.csv.AccidentalCatchRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.AttachmentRow; +import fr.ifremer.tutti.service.catches.multipost.csv.AttachmentRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CaracteristicRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CaracteristicRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchFrequencyRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchFrequencyRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.catches.multipost.csv.IndividualObservationRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterRow; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterRowModel; import org.nuiton.csv.Export; import org.nuiton.csv.ExportModel; import org.nuiton.jaxx.application.ApplicationIOUtil; @@ -37,7 +50,6 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { private final File targetFile; private final File temporaryDirectory; - private final FishingOperation operation; private final PersistenceService persistenceService; @@ -57,10 +69,9 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { private final List<File> file2zip = new ArrayList<>(); - public MultiPostExportContext(File targetFile, FishingOperation operation, PersistenceService persistenceService) { + public MultiPostExportContext(File targetFile, PersistenceService persistenceService) { this.targetFile = targetFile; this.temporaryDirectory = Files.createTempDir(); - this.operation = operation; this.persistenceService = persistenceService; } @@ -80,38 +91,47 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { public void storeSpeciesOrBenthosBatches(String fileName, boolean exportFrequencies, boolean exportIndividualObservations) { export(fileName, - new CatchRowModel(CSV_SEPARATOR), + CatchRowModel.forExport(), 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")); - + storeFrequencies(); } if (exportIndividualObservations) { + storeIndividualObservations(); + } - 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 storeFrequencies() { - } + export(FREQUENCIES_FILE, + CatchFrequencyRowModel.forExport(), + frequencyRows, + n("tutti.service.multipost.export.frequencies.error")); } + public void storeIndividualObservations() { + + export(INDIVIDUAL_OBSERVATION_FILE, + IndividualObservationRowModel.forExport(), + individualObservationRows, + n("tutti.service.multipost.export.batches.error")); + + export(CARACTERISTIC_FILE, + CaracteristicRowModel.forExport(), + caracteristicRows, + n("tutti.service.multipost.export.batches.error")); + + } + + public void storeAttachments() { - AttachmentRowModel csvAttachmentModel = new AttachmentRowModel(CSV_SEPARATOR); + AttachmentRowModel csvAttachmentModel = AttachmentRowModel.forExport(); File attachmentDirectory = new File(temporaryDirectory, ATTACHMENTS_DIRECTORY); ApplicationIOUtil.forceMkdir(attachmentDirectory, t("tutti.service.multipost.attachment.mkdir.error", attachmentDirectory)); @@ -178,15 +198,16 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { frequencyRow.setLengthStep(frequency.getLengthStep()); frequencyRow.setNumber(frequency.getNumber()); frequencyRow.setWeight(frequency.getWeight()); + frequencyRow.setSpecies(frequency.getBatch().getSpecies()); frequencyRows.add(frequencyRow); } } - public void addIndividualObservations(String id, IndividualObservationBatch batch) { + public void addIndividualObservations(String batchId, IndividualObservationBatch batch) { IndividualObservationRow row = new IndividualObservationRow(); - row.setBatchId(id); + row.setBatchId(batchId); // on conserve l'id d'export du lot parent de l'observation String speciesOrBenthosBatchId = speciesOrBenthosIdTranslations.get(batch.getBatchId()); @@ -202,16 +223,9 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { 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); - } + addCaracteristics(batchId, batch.getCaracteristics()); - addAttachments(id, batch.getIdAsInt(), ObjectTypeCode.SAMPLE); + addAttachments(batchId, batch.getIdAsInt(), ObjectTypeCode.SAMPLE); } @@ -248,14 +262,7 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { 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); - } + addCaracteristics(batchId, batch.getCaracteristics()); addAttachments(batchId, batch.getIdAsInt(), ObjectTypeCode.SAMPLE); @@ -284,14 +291,14 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { public void storeAccidentalCatches() { export(ACCIDENTAL_CATCHES_FILE, - new AccidentalCatchRowModel(CSV_SEPARATOR), + AccidentalCatchRowModel.forExport(), accidentialCatchRows, n("tutti.service.multipost.export.batches.error")); // export caracteristics export(CARACTERISTIC_FILE, - new CaracteristicRowModel(CSV_SEPARATOR), + CaracteristicRowModel.forExport(), caracteristicRows, n("tutti.service.multipost.export.batches.error")); @@ -300,7 +307,7 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { public void storeMarineLitterBatches() { export(MARINE_LITTER_FILE, - new MarineLitterRowModel(CSV_SEPARATOR), + MarineLitterRowModel.forExport(), marineLitterRows, n("tutti.service.multipost.export.batches.error")); @@ -309,4 +316,16 @@ public class MultiPostExportContext implements MultiPostConstants, Closeable { protected void addFile(File file) { file2zip.add(file); } + + protected void addCaracteristics(String batchId, CaracteristicMap caracteristicMap) { + + for (Caracteristic caracteristic : caracteristicMap.keySet()) { + CaracteristicRow caracteristicRow = new CaracteristicRow(); + caracteristicRow.setBatchId(batchId); + caracteristicRow.setCaracteristic(caracteristic); + caracteristicRow.setValue(caracteristicMap.get(caracteristic)); + caracteristicRows.add(caracteristicRow); + } + + } } 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 49a0767..23ba72d 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 @@ -40,19 +40,25 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; -import org.apache.commons.io.IOUtils; -import org.nuiton.csv.Export; -import org.nuiton.csv.ExportModel; -import org.nuiton.jaxx.application.ApplicationIOUtil; -import org.nuiton.jaxx.application.ApplicationTechnicalException; +import fr.ifremer.tutti.service.catches.multipost.csv.AbstractFishingOperationRow; +import fr.ifremer.tutti.service.catches.multipost.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchBatchRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchBatchRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchWeightsRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchWeightsRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.FishingOperationRow; +import fr.ifremer.tutti.service.catches.multipost.csv.FishingOperationRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterRow; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterWeightRow; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterWeightRowModel; import java.io.File; -import java.io.Writer; import java.util.List; import java.util.Map; import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * Service to export batches from a satellite post into a master post. @@ -92,7 +98,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult Integer operationId = operation.getIdAsInt(); if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { - try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, persistenceService)) { // Load data to export @@ -111,7 +117,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult exportContext.addAttachments(catchBatch.getId(), catchBatch.getIdAsInt(), ObjectTypeCode.CATCH_BATCH); - CatchBatchRowModel csvModel = new CatchBatchRowModel(CSV_SEPARATOR); + CatchBatchRowModel csvModel = new CatchBatchRowModel(); exportContext.export(CATCH_BATCH_FILE, csvModel, @@ -138,7 +144,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult Integer operationId = operation.getIdAsInt(); if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { - try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, persistenceService)) { // Export catch weights + attachments @@ -152,7 +158,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult exportContext.addAttachments(catchBatch.getId(), catchBatch.getIdAsInt(), ObjectTypeCode.CATCH_BATCH); exportContext.export(WEIGHTS_FILE, - new CatchWeightsRowModel(CSV_SEPARATOR), + new CatchWeightsRowModel(), Lists.newArrayList(weights), n("tutti.service.multipost.export.weights.error")); @@ -161,7 +167,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult BatchContainer<SpeciesBatch> speciesBatchContainer = persistenceService.getRootSpeciesBatch(operationId, false); for (SpeciesBatch batch : speciesBatchContainer.getChildren()) { - createSpeciesRow(exportContext, batch, null, exportFrequencies); + addSpecies(exportContext, batch, null, exportFrequencies); } if (exportIndividualObservations) { @@ -177,6 +183,41 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult } /** + * Export species batches. + * + * @param file the file to export the batches into + * @param operation the operation to export + */ + public void exportSpeciesBatch(File file, + FishingOperation operation, + SpeciesBatch speciesBatch, + boolean exportFrequencies, + boolean exportIndividualObservations) { + + Integer operationId = operation.getIdAsInt(); + if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { + + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, persistenceService)) { + + // Export frequencies + if (exportFrequencies) { + addFrequencies(exportContext, speciesBatch); + exportContext.storeFrequencies(); + } + + // Export individual observations + if (exportIndividualObservations) { + addIndividualObservations(exportContext, speciesBatch); + exportContext.storeIndividualObservations(); + } + + } + + } + + } + + /** * Export benthos batches. * * @param file the file to export the batches into @@ -190,7 +231,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult Integer operationId = operation.getIdAsInt(); if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { - try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, persistenceService)) { // Export catch weights @@ -204,7 +245,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult exportContext.addAttachments(catchBatch.getId(), catchBatch.getIdAsInt(), ObjectTypeCode.CATCH_BATCH); exportContext.export(WEIGHTS_FILE, - new CatchWeightsRowModel(CSV_SEPARATOR), + new CatchWeightsRowModel(), Lists.newArrayList(weights), n("tutti.service.multipost.export.weights.error")); @@ -213,7 +254,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult BatchContainer<BenthosBatch> benthosBatchContainer = persistenceService.getRootBenthosBatch(operationId, false); for (BenthosBatch batch : benthosBatchContainer.getChildren()) { - createBenthosRow(exportContext, batch, null, exportFrequencies); + addBenthos(exportContext, batch, null, exportFrequencies); } if (exportIndividualObservations) { @@ -238,7 +279,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult Integer operationId = operation.getIdAsInt(); if (persistenceService.isFishingOperationWithCatchBatch(operationId)) { - try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, persistenceService)) { // export weights @@ -248,7 +289,7 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult exportOperation(weight, operation); exportContext.export(WEIGHTS_FILE, - new MarineLitterWeightRowModel(CSV_SEPARATOR), + new MarineLitterWeightRowModel(), Lists.newArrayList(weight), n("tutti.service.multipost.export.weight.error")); @@ -279,14 +320,14 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult */ public void exportAccidentalCatch(File file, FishingOperation operation) { - try (MultiPostExportContext exportContext = new MultiPostExportContext(file, operation, persistenceService)) { + try (MultiPostExportContext exportContext = new MultiPostExportContext(file, persistenceService)) { // export operation FishingOperationRow foRow = new FishingOperationRow(); exportOperation(foRow, operation); - FishingOperationRowModel foRowModel = new FishingOperationRowModel(CSV_SEPARATOR); + FishingOperationRowModel foRowModel = new FishingOperationRowModel(); exportContext.export(WEIGHTS_FILE, foRowModel, @@ -316,45 +357,68 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult //-- Internal methods --// //------------------------------------------------------------------------// - protected void createSpeciesRow(MultiPostExportContext exportContext, - SpeciesBatch batch, - String parentId, - boolean addFrequencies) { + protected void addSpecies(MultiPostExportContext exportContext, SpeciesBatch batch, String parentId, boolean addFrequencies) { String id = context.generateId(CatchRow.class); exportContext.addSpeciesOrBenthosBatch(id, parentId, batch); if (addFrequencies) { - List<SpeciesBatchFrequency> frequencies = persistenceService.getAllSpeciesBatchFrequency(batch.getIdAsInt()); + List<SpeciesBatchFrequency> frequencies = getFrequencies(batch); exportContext.addFrequencies(id, frequencies); } for (SpeciesBatch child : batch.getChildBatchs()) { - createSpeciesRow(exportContext, child, id, addFrequencies); + addSpecies(exportContext, child, id, addFrequencies); } + } - protected void createBenthosRow(MultiPostExportContext exportContext, - BenthosBatch batch, - String parentId, - boolean addFrequencies) { + protected void addFrequencies(MultiPostExportContext exportContext, SpeciesBatch batch) { + + String id = context.generateId(CatchRow.class); + + List<SpeciesBatchFrequency> frequencies = getFrequencies(batch); + exportContext.addFrequencies(id, frequencies); + + for (SpeciesBatch child : batch.getChildBatchs()) { + addFrequencies(exportContext, child); + } + + } + + protected List<SpeciesBatchFrequency> getFrequencies(SpeciesBatch batch) { + + List<SpeciesBatchFrequency> frequencies = persistenceService.getAllSpeciesBatchFrequency(batch.getIdAsInt()); + frequencies.forEach(speciesBatchFrequency -> speciesBatchFrequency.setBatch(batch)); + return frequencies; + + } + + protected void addBenthos(MultiPostExportContext exportContext, BenthosBatch batch, String parentId, boolean addFrequencies) { String id = context.generateId(CatchRow.class); exportContext.addSpeciesOrBenthosBatch(id, parentId, batch); if (addFrequencies) { - List<BenthosBatchFrequency> frequencies = - persistenceService.getAllBenthosBatchFrequency(batch.getIdAsInt()); + List<BenthosBatchFrequency> frequencies = getFrequencies(batch); exportContext.addFrequencies(id, frequencies); } for (BenthosBatch child : batch.getChildBatchs()) { - createBenthosRow(exportContext, child, id, addFrequencies); + addBenthos(exportContext, child, id, addFrequencies); } } + protected List<BenthosBatchFrequency> getFrequencies(BenthosBatch batch) { + + List<BenthosBatchFrequency> frequencies = persistenceService.getAllBenthosBatchFrequency(batch.getIdAsInt()); + frequencies.forEach(speciesBatchFrequency -> speciesBatchFrequency.setBatch(batch)); + return frequencies; + + } + protected void addIndividualObservations(MultiPostExportContext exportContext, FishingOperation operation) { List<IndividualObservationBatch> individualObservations = @@ -362,9 +426,21 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult for (IndividualObservationBatch batch : individualObservations) { - String id = context.generateId(IndividualObservationRow.class); + exportContext.addIndividualObservations(id, batch); + } + + } + + protected void addIndividualObservations(MultiPostExportContext exportContext, SpeciesBatch speciesOrBenthosBatch) { + + List<IndividualObservationBatch> individualObservations = + persistenceService.getAllIndividualObservationBatchsForBatch(speciesOrBenthosBatch.getIdAsInt()); + + for (IndividualObservationBatch batch : individualObservations) { + + String id = context.generateId(IndividualObservationRow.class); exportContext.addIndividualObservations(id, batch); } @@ -378,23 +454,4 @@ public class MultiPostExportService extends AbstractTuttiService implements Mult afoRow.setDate(operation.getGearShootingStartDate()); } - protected <R> void export(File file, - ExportModel<R> exportModel, - List<R> rows, - String errorMessage) { - Writer writer = ApplicationIOUtil.newWriter( - file, - n("tutti.service.multipost.export.file.writer.error")); - try { - Export export = Export.newExport(exportModel, rows); - export.write(writer); - writer.close(); - - } catch (Exception e) { - throw new ApplicationTechnicalException(t(errorMessage, file), e); - } finally { - IOUtils.closeQuietly(writer); - } - } - } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportContext.java index 132f7f9..0771cc2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportContext.java @@ -6,6 +6,8 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.TuttiServiceContext; +import fr.ifremer.tutti.service.catches.multipost.csv.AbstractFishingOperationRow; +import fr.ifremer.tutti.service.catches.multipost.csv.AbstractFishingOperationRowModel; import org.apache.commons.lang3.ObjectUtils; import org.nuiton.csv.Import; import org.nuiton.decorator.Decorator; @@ -34,11 +36,11 @@ public class MultiPostImportContext implements MultiPostConstants, Closeable { private final File file; private final TuttiServiceContext context; - private File explodedDirectory; private final FishingOperation operation; protected List<Species> speciesList; protected List<Caracteristic> caracteristics; protected List<Caracteristic> caracteristicsWithProtected; + private File explodedDirectory; public MultiPostImportContext(TuttiServiceContext context, File file, FishingOperation operation) { this.file = file; @@ -110,7 +112,7 @@ public class MultiPostImportContext implements MultiPostConstants, Closeable { } public <FO extends AbstractFishingOperationRow> void checkSameOperation(String fileName, - AbstractFishingOperationRowModel<FO> fishingOperationRowModel) throws IOException { + AbstractFishingOperationRowModel<FO> fishingOperationRowModel) throws IOException { try (Reader reader = Files.newBufferedReader(new File(getExplodedDirectory(), fileName).toPath())) { 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 dc7d74a..499ed46 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 @@ -48,6 +48,7 @@ import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatchs; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatchFrequency; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequencys; @@ -60,10 +61,33 @@ import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiServiceContext; +import fr.ifremer.tutti.service.catches.multipost.csv.AccidentalCatchRow; +import fr.ifremer.tutti.service.catches.multipost.csv.AccidentalCatchRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.AttachmentRow; +import fr.ifremer.tutti.service.catches.multipost.csv.AttachmentRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CaracteristicRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CaracteristicRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchBatchRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchBatchRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchFrequencyRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchFrequencyRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchWeightsRow; +import fr.ifremer.tutti.service.catches.multipost.csv.CatchWeightsRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.FishingOperationRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.IndividualObservationRow; +import fr.ifremer.tutti.service.catches.multipost.csv.IndividualObservationRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterRow; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterRowModel; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterWeightRow; +import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterWeightRowModel; import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.nuiton.csv.Import; +import org.nuiton.decorator.Decorator; +import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; @@ -74,8 +98,12 @@ import java.text.ParseException; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.function.Supplier; + +import static org.nuiton.i18n.I18n.t; /** * Service to export batches from a satellite post or import batches @@ -121,7 +149,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (MultiPostImportContext importContext = new MultiPostImportContext(context, file, operation)) { //check operation - CatchBatchRowModel weightsModel = new CatchBatchRowModel(CSV_SEPARATOR); + CatchBatchRowModel weightsModel = new CatchBatchRowModel(); importContext.checkSameOperation(CATCH_BATCH_FILE, weightsModel); Map<String, Object> notImportedData = new HashMap<>(); @@ -227,7 +255,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (MultiPostImportContext importContext = new MultiPostImportContext(context, file, operation)) { //check operation - CatchWeightsRowModel weightsModel = new CatchWeightsRowModel(CSV_SEPARATOR); + CatchWeightsRowModel weightsModel = new CatchWeightsRowModel(); importContext.checkSameOperation(WEIGHTS_FILE, weightsModel); Map<String, Object> notImportedData = new HashMap<>(); @@ -244,7 +272,21 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult // Import frequencies if (importFrequencies) { - importSpeciesFrequencies(importContext, batches, notImportedBatches); + + ListMultimap<String, SpeciesBatchFrequency> frequencyListMultimap = importFrequencies(importContext, + batches, + notImportedBatches, + SpeciesBatchFrequencys::newSpeciesBatchFrequency); + + for (String batchId : frequencyListMultimap.keySet()) { + + List<SpeciesBatchFrequency> frequencies = frequencyListMultimap.get(batchId); + SpeciesBatch speciesBatch = batches.get(batchId); + frequencies.forEach(speciesBatchFrequency -> speciesBatchFrequency.setBatch(speciesBatch)); + persistenceService.saveSpeciesBatchFrequency(speciesBatch.getIdAsInt(), frequencies); + + } + } // Import indivudal observations @@ -294,7 +336,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (Reader reader = importContext.newFileReader(SPECIES_FILE)) { - CatchRowModel csvModel = new CatchRowModel(CSV_SEPARATOR, importContext.getSpeciesList()); + CatchRowModel csvModel = CatchRowModel.forImport(importContext.getSpeciesList()); try (Import<CatchRow> importer = Import.newImport(csvModel, reader)) { @@ -363,42 +405,50 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult } - protected void importSpeciesFrequencies(MultiPostImportContext importContext, - Map<String, SpeciesBatch> batches, - Map<String, SpeciesBatch> notImportedBatches) throws IOException { - - ListMultimap<Integer, SpeciesBatchFrequency> frequencyMap = ArrayListMultimap.create(); - - try (Reader reader = importContext.newFileReader(FREQUENCIES_FILE)) { - - CatchFrequencyRowModel frequencyModel = new CatchFrequencyRowModel(CSV_SEPARATOR, importContext.getCaracteristics()); - - try (Import<CatchFrequencyRow> importer = Import.newImport(frequencyModel, reader)) { - - for (CatchFrequencyRow frequencyRow : importer) { - String frequencyRowBatchId = frequencyRow.getBatchId(); - if (notImportedBatches.get(frequencyRowBatchId) == null) { - SpeciesBatch batch = batches.get(frequencyRowBatchId); - if (batch != null) { - SpeciesBatchFrequency frequency = SpeciesBatchFrequencys.newSpeciesBatchFrequency(); - frequency.setLengthStepCaracteristic(frequencyRow.getLengthStepCaracteristic()); - frequency.setLengthStep(frequencyRow.getLengthStep()); - frequency.setNumber(frequencyRow.getNumber()); - frequency.setWeight(frequencyRow.getWeight()); - frequency.setBatch(batch); - frequencyMap.put(batch.getIdAsInt(), frequency); - } - } - } - } - } - - for (Integer batchId : frequencyMap.keySet()) { - List<SpeciesBatchFrequency> frequencies = frequencyMap.get(batchId); - persistenceService.saveSpeciesBatchFrequency(batchId, frequencies); - } - - } +// protected void importSpeciesFrequencies(MultiPostImportContext importContext, +// Map<String, SpeciesBatch> batches, +// Map<String, SpeciesBatch> notImportedBatches) throws IOException { +// +// ListMultimap<Integer, SpeciesBatchFrequency> frequencyMap = ArrayListMultimap.create(); +// +// try (Reader reader = importContext.newFileReader(FREQUENCIES_FILE)) { +// +// CatchFrequencyRowModel frequencyModel = new CatchFrequencyRowModel(CSV_SEPARATOR, importContext.getSpeciesList(), importContext.getCaracteristics()); +// +// try (Import<CatchFrequencyRow> importer = Import.newImport(frequencyModel, reader)) { +// +// for (CatchFrequencyRow frequencyRow : importer) { +// String frequencyRowBatchId = frequencyRow.getBatchId(); +// if (!notImportedBatches.containsKey(frequencyRowBatchId)) { +// +// // not imported +// continue; +// } +// SpeciesBatch batch = batches.get(frequencyRowBatchId); +// if (batch == null) { +// +// // not imported (FIXME Should be an error ?) +// continue; +// } +// +// SpeciesBatchFrequency frequency = SpeciesBatchFrequencys.newSpeciesBatchFrequency(); +// frequency.setLengthStepCaracteristic(frequencyRow.getLengthStepCaracteristic()); +// frequency.setLengthStep(frequencyRow.getLengthStep()); +// frequency.setNumber(frequencyRow.getNumber()); +// frequency.setWeight(frequencyRow.getWeight()); +// frequency.setBatch(batch); +// frequencyMap.put(batch.getIdAsInt(), frequency); +// +// } +// } +// } +// +// for (Integer batchId : frequencyMap.keySet()) { +// List<SpeciesBatchFrequency> frequencies = frequencyMap.get(batchId); +// persistenceService.saveSpeciesBatchFrequency(batchId, frequencies); +// } +// +// } protected void importSpeciesWeights(MultiPostImportContext importContext, CatchWeightsRowModel weightsModel, @@ -448,6 +498,66 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult } //------------------------------------------------------------------------// + //-- Import Species Batches data --// + //------------------------------------------------------------------------// + + /** + * Import species batches frequencies or individual observations from a satellite post. + * + * @param file the file to import the batches from + * @param operation the operation in which to add the batches + * @return the list of the species which have not been imported, because there were concurrent batches + */ + public Map<String, Object> importSpeciesBatch(File file, + FishingOperation operation, + SpeciesBatch speciesBatch, + boolean importFrequencies, + boolean importIndividualObservations) { + + return persistenceService.invoke(() -> { + + try (MultiPostImportContext importContext = new MultiPostImportContext(context, file, operation)) { + + // Import frequencies + + if (importFrequencies) { + + List<SpeciesBatchFrequency> frequenciesToSave = importFrequencies(importContext, speciesBatch, SpeciesBatchFrequencys::newSpeciesBatchFrequency); + + frequenciesToSave.forEach(speciesBatchFrequency -> speciesBatchFrequency.setBatch(speciesBatch)); + persistenceService.saveSpeciesBatchFrequency(speciesBatch.getIdAsInt(), frequenciesToSave); + } + + // Import indivudal observations + + if (importIndividualObservations) { + + // Import batches + // map containing the batches by their persistence id + Map<String, IndividualObservationBatch> individualObservationsBatches = importIndividualObservationBatches(importContext, speciesBatch); + + // Import caracteristics + + importCaracteristics(importContext, individualObservationsBatches); + + // Persist batches + + persistenceService.createIndividualObservationBatches(individualObservationsBatches.values()); + + // Import attachments + + importAttachments(importContext, individualObservationsBatches, ObjectTypeCode.SAMPLE); + + } + + return new HashMap<>(); + + } + }); + + } + + //------------------------------------------------------------------------// //-- Import Benthos --// //------------------------------------------------------------------------// @@ -460,12 +570,15 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult */ public Map<String, Object> importBenthos(File file, FishingOperation operation) { + boolean importFrequencies = true; + boolean importIndividualObservations = true; + return persistenceService.invoke(() -> { try (MultiPostImportContext importContext = new MultiPostImportContext(context, file, operation)) { //check operation - CatchWeightsRowModel weightsModel = new CatchWeightsRowModel(CSV_SEPARATOR); + CatchWeightsRowModel weightsModel = new CatchWeightsRowModel(); importContext.checkSameOperation(WEIGHTS_FILE, weightsModel); Map<String, Object> notImportedData = new HashMap<>(); @@ -479,7 +592,47 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult // Import frequencies - importBenthosFrequencies(importContext, batches, notImportedBatches); + if (importFrequencies) { + + ListMultimap<String, BenthosBatchFrequency> frequencyListMultimap = importFrequencies(importContext, + batches, + notImportedBatches, + BenthosBatchFrequencys::newBenthosBatchFrequency); + + for (String batchId : frequencyListMultimap.keySet()) { + + List<BenthosBatchFrequency> frequencies = frequencyListMultimap.get(batchId); + BenthosBatch speciesBatch = batches.get(batchId); + frequencies.forEach(speciesBatchFrequency -> speciesBatchFrequency.setBatch(speciesBatch)); + persistenceService.saveBenthosBatchFrequency(speciesBatch.getIdAsInt(), frequencies); + + } + + } + +// importBenthosFrequencies(importContext, batches, notImportedBatches); + + // Import indivudal observations + + if (importIndividualObservations) { + + // Import batches + // map containing the batches by their persistence id + Map<String, IndividualObservationBatch> individualObservationsBatches = importIndividualObservationBatches(importContext, batches, notImportedBatches); + + // Import caracteristics + + importCaracteristics(importContext, individualObservationsBatches); + + // Persist batches + + persistenceService.createIndividualObservationBatches(individualObservationsBatches.values()); + + // Import attachments + + importAttachments(importContext, individualObservationsBatches, ObjectTypeCode.SAMPLE); + + } // Import attachments @@ -505,7 +658,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (Reader reader = importContext.newFileReader(BENTHOS_FILE)) { - CatchRowModel csvModel = new CatchRowModel(CSV_SEPARATOR, importContext.getSpeciesList()); + CatchRowModel csvModel = CatchRowModel.forImport(importContext.getSpeciesList()); try (Import<CatchRow> importer = Import.newImport(csvModel, reader)) { @@ -577,42 +730,42 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult } - protected void importBenthosFrequencies(MultiPostImportContext importContext, - Map<String, BenthosBatch> batches, - Map<String, BenthosBatch> notImportedBatches) throws IOException { - - ListMultimap<Integer, BenthosBatchFrequency> frequencyMap = ArrayListMultimap.create(); - - try (Reader reader = importContext.newFileReader(FREQUENCIES_FILE)) { - - CatchFrequencyRowModel frequencyModel = new CatchFrequencyRowModel(CSV_SEPARATOR, importContext.getCaracteristics()); - try (Import<CatchFrequencyRow> importer = Import.newImport(frequencyModel, reader)) { - - - for (CatchFrequencyRow frequencyRow : importer) { - if (notImportedBatches.get(frequencyRow.getBatchId()) == null) { - BenthosBatch batch = batches.get(frequencyRow.getBatchId()); - if (batch != null) { - BenthosBatchFrequency frequency = BenthosBatchFrequencys.newBenthosBatchFrequency(); - frequency.setLengthStepCaracteristic(frequencyRow.getLengthStepCaracteristic()); - frequency.setLengthStep(frequencyRow.getLengthStep()); - frequency.setNumber(frequencyRow.getNumber()); - frequency.setWeight(frequencyRow.getWeight()); - frequency.setBatch(batch); - frequencyMap.put(batch.getIdAsInt(), frequency); - } - } - } - } - - } - - for (Integer batchId : frequencyMap.keySet()) { - List<BenthosBatchFrequency> frequencies = frequencyMap.get(batchId); - persistenceService.saveBenthosBatchFrequency(batchId, frequencies); - } - - } +// protected void importBenthosFrequencies(MultiPostImportContext importContext, +// Map<String, BenthosBatch> batches, +// Map<String, BenthosBatch> notImportedBatches) throws IOException { +// +// ListMultimap<Integer, BenthosBatchFrequency> frequencyMap = ArrayListMultimap.create(); +// +// try (Reader reader = importContext.newFileReader(FREQUENCIES_FILE)) { +// +// CatchFrequencyRowModel frequencyModel = new CatchFrequencyRowModel(CSV_SEPARATOR, importContext.getSpeciesList(), importContext.getCaracteristics()); +// try (Import<CatchFrequencyRow> importer = Import.newImport(frequencyModel, reader)) { +// +// +// for (CatchFrequencyRow frequencyRow : importer) { +// if (notImportedBatches.get(frequencyRow.getBatchId()) == null) { +// BenthosBatch batch = batches.get(frequencyRow.getBatchId()); +// if (batch != null) { +// BenthosBatchFrequency frequency = BenthosBatchFrequencys.newBenthosBatchFrequency(); +// frequency.setLengthStepCaracteristic(frequencyRow.getLengthStepCaracteristic()); +// frequency.setLengthStep(frequencyRow.getLengthStep()); +// frequency.setNumber(frequencyRow.getNumber()); +// frequency.setWeight(frequencyRow.getWeight()); +// frequency.setBatch(batch); +// frequencyMap.put(batch.getIdAsInt(), frequency); +// } +// } +// } +// } +// +// } +// +// for (Integer batchId : frequencyMap.keySet()) { +// List<BenthosBatchFrequency> frequencies = frequencyMap.get(batchId); +// persistenceService.saveBenthosBatchFrequency(batchId, frequencies); +// } +// +// } protected void importBenthosWeights(MultiPostImportContext importContext, CatchWeightsRowModel weightsModel, @@ -681,7 +834,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (MultiPostImportContext importContext = new MultiPostImportContext(context, file, operation)) { //check operation - MarineLitterWeightRowModel weightModel = new MarineLitterWeightRowModel(CSV_SEPARATOR); + MarineLitterWeightRowModel weightModel = new MarineLitterWeightRowModel(); importContext.checkSameOperation(WEIGHTS_FILE, weightModel); Map<String, Object> notImportedData = new HashMap<>(); @@ -723,9 +876,9 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (Reader reader = importContext.newFileReader(MARINE_LITTER_FILE)) { - MarineLitterRowModel csvModel = new MarineLitterRowModel(CSV_SEPARATOR, - categoryCaracteristic, - sizeCategoryCaracteristic); + MarineLitterRowModel csvModel = MarineLitterRowModel.forImport( + categoryCaracteristic, + sizeCategoryCaracteristic); try (Import<MarineLitterRow> importer = Import.newImport(csvModel, reader)) { @@ -870,7 +1023,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (MultiPostImportContext importContext = new MultiPostImportContext(context, file, operation)) { //check operation - FishingOperationRowModel operationModel = new FishingOperationRowModel(CSV_SEPARATOR); + FishingOperationRowModel operationModel = new FishingOperationRowModel(); importContext.checkSameOperation(WEIGHTS_FILE, operationModel); // Import batches @@ -905,11 +1058,11 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (Reader reader = importContext.newFileReader(ACCIDENTAL_CATCHES_FILE)) { - AccidentalCatchRowModel csvModel = new AccidentalCatchRowModel(CSV_SEPARATOR, - importContext.getSpeciesList(), - sexCaracteristic, - deadOrAliveCaracteristic, - importContext.getCaracteristicsWithProtected()); + AccidentalCatchRowModel csvModel = AccidentalCatchRowModel.forImport( + importContext.getSpeciesList(), + sexCaracteristic, + deadOrAliveCaracteristic, + importContext.getCaracteristicsWithProtected()); try (Import<AccidentalCatchRow> importer = Import.newImport(csvModel, reader)) { @@ -1008,7 +1161,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (Reader reader = importContext.newFileReader(ATTACHMENTS_FILE)) { AttachmentRowModel attachmentModel = - new AttachmentRowModel(CSV_SEPARATOR, importContext.newFile(ATTACHMENTS_DIRECTORY)); + AttachmentRowModel.forImport(importContext.newFile(ATTACHMENTS_DIRECTORY)); try (Import<AttachmentRow> importer = Import.newImport(attachmentModel, reader)) { for (AttachmentRow row : importer) { @@ -1035,7 +1188,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult try (Reader reader = importContext.newFileReader(CARACTERISTIC_FILE)) { - CaracteristicRowModel caracteristicModel = new CaracteristicRowModel(CSV_SEPARATOR, importContext.getCaracteristicsWithProtected()); + CaracteristicRowModel caracteristicModel = CaracteristicRowModel.forImport(importContext.getCaracteristicsWithProtected()); try (Import<CaracteristicRow> importer = Import.newImport(caracteristicModel, reader)) { @@ -1066,15 +1219,15 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult protected <B extends SpeciesAbleBatch> Map<String, IndividualObservationBatch> importIndividualObservationBatches(MultiPostImportContext importContext, Map<String, B> speciesOrBenthosBatches, - Map<String, SpeciesBatch> notImportedBatches) throws IOException { + Map<String, B> notImportedBatches) throws IOException { Map<String, IndividualObservationBatch> batches = new LinkedHashMap<>(); try (Reader reader = importContext.newFileReader(INDIVIDUAL_OBSERVATION_FILE)) { - IndividualObservationRowModel csvModel = new IndividualObservationRowModel(CSV_SEPARATOR, - importContext.getSpeciesList(), - importContext.getCaracteristicsWithProtected()); + IndividualObservationRowModel csvModel = IndividualObservationRowModel.forImport( + importContext.getSpeciesList(), + importContext.getCaracteristicsWithProtected()); try (Import<IndividualObservationRow> importer = Import.newImport(csvModel, reader)) { @@ -1117,4 +1270,141 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult } + protected <B extends SpeciesAbleBatch, F extends SpeciesAbleBatchFrequency> ListMultimap<String, F> importFrequencies(MultiPostImportContext importContext, + Map<String, B> batches, + Map<String, B> notImportedBatches, + Supplier<F> newFrequencySupplier) throws IOException { + + ListMultimap<String, F> frequencyMap = ArrayListMultimap.create(); + + try (Reader reader = importContext.newFileReader(FREQUENCIES_FILE)) { + + CatchFrequencyRowModel frequencyModel = CatchFrequencyRowModel.forImport(importContext.getSpeciesList(), importContext.getCaracteristics()); + + try (Import<CatchFrequencyRow> importer = Import.newImport(frequencyModel, reader)) { + + for (CatchFrequencyRow frequencyRow : importer) { + String frequencyRowBatchId = frequencyRow.getBatchId(); + if (!notImportedBatches.containsKey(frequencyRowBatchId)) { + + // not imported + continue; + } + B batch = batches.get(frequencyRowBatchId); + if (batch == null) { + + // not imported (FIXME Should be an error ?) + continue; + } + + F frequency = newFrequencySupplier.get(); + frequency.setLengthStepCaracteristic(frequencyRow.getLengthStepCaracteristic()); + frequency.setLengthStep(frequencyRow.getLengthStep()); + frequency.setNumber(frequencyRow.getNumber()); + frequency.setWeight(frequencyRow.getWeight()); +// frequency.setBatch(batch); + frequencyMap.put(frequencyRowBatchId, frequency); + + } + } + } + + return frequencyMap; + + } + + protected <B extends SpeciesAbleBatch, F extends SpeciesAbleBatchFrequency> List<F> importFrequencies(MultiPostImportContext importContext, B speciesBatch, Supplier<F> newFrequencySupplier) throws IOException { + + List<F> frequenciesToSave = new LinkedList<>(); + + try (Reader reader = importContext.newFileReader(FREQUENCIES_FILE)) { + + CatchFrequencyRowModel frequencyModel = CatchFrequencyRowModel.forImport(importContext.getSpeciesList(), importContext.getCaracteristics()); + + try (Import<CatchFrequencyRow> importer = Import.newImport(frequencyModel, reader)) { + + Integer requiredSpeciesId = speciesBatch.getSpecies().getIdAsInt(); + + for (CatchFrequencyRow frequencyRow : importer) { + + Integer speciesId = frequencyRow.getSpecies().getIdAsInt(); + + if (!requiredSpeciesId.equals(speciesId)) { + + // Bad species, import fail + Decorator<Species> fishingOperationDecorator = context.getService(DecoratorService.class).getDecoratorByType(Species.class); + throw new ApplicationBusinessException(t("tutti.service.multipost.import.wrongSpecies.error", + fishingOperationDecorator.toString(speciesBatch.getSpecies()))); + + } + + F frequency = newFrequencySupplier.get(); + frequency.setLengthStepCaracteristic(frequencyRow.getLengthStepCaracteristic()); + frequency.setLengthStep(frequencyRow.getLengthStep()); + frequency.setNumber(frequencyRow.getNumber()); + frequency.setWeight(frequencyRow.getWeight()); +// frequency.setBatch(speciesBatch); + frequenciesToSave.add(frequency); + + } + } + + } + + return frequenciesToSave; + + } + + protected <B extends SpeciesAbleBatch> Map<String, IndividualObservationBatch> importIndividualObservationBatches(MultiPostImportContext importContext, + B speciesOfBenthosBatch) throws IOException { + + Map<String, IndividualObservationBatch> batches = new LinkedHashMap<>(); + + try (Reader reader = importContext.newFileReader(INDIVIDUAL_OBSERVATION_FILE)) { + + IndividualObservationRowModel csvModel = IndividualObservationRowModel.forImport( + importContext.getSpeciesList(), + importContext.getCaracteristicsWithProtected()); + + try (Import<IndividualObservationRow> importer = Import.newImport(csvModel, reader)) { + + FishingOperation operation = importContext.getOperation(); + + Integer speciesOrBenthosBatchId = speciesOfBenthosBatch.getSpecies().getIdAsInt(); + + for (IndividualObservationRow row : importer) { + + if (!speciesOrBenthosBatchId.equals(row.getSpecies().getIdAsInt())) { + + // Bad species, import fail + Decorator<Species> fishingOperationDecorator = context.getService(DecoratorService.class).getDecoratorByType(Species.class); + throw new ApplicationBusinessException(t("tutti.service.multipost.import.wrongSpecies.error", + fishingOperationDecorator.toString(speciesOfBenthosBatch.getSpecies()))); + + } + + // create batch + IndividualObservationBatch batch = IndividualObservationBatchs.newIndividualObservationBatch(); + batch.setFishingOperation(operation); + + batch.setBatchId(speciesOrBenthosBatchId); + + batch.setSpecies(row.getSpecies()); + batch.setWeight(row.getWeight()); + batch.setSize(row.getSize()); + batch.setLengthStepCaracteristic(row.getLengthStepCaracteristic()); + batch.setComment(row.getComment()); + batch.setCaracteristics(new CaracteristicMap()); + + batches.put(row.getBatchId(), batch); + } + + } + + } + + return batches; + + } + } \ No newline at end of file diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AbstractFishingOperationRow.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AbstractFishingOperationRow.java index 98225ba..e95aa8f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AbstractFishingOperationRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AbstractFishingOperationRowModel.java similarity index 81% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AbstractFishingOperationRowModel.java index 143092e..062007f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AbstractFishingOperationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AbstractFishingOperationRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -22,18 +22,18 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; /** * @author Kevin Morin - kmorin@codelutin.com * @since 2.3.1 */ -public abstract class AbstractFishingOperationRowModel<FO extends AbstractFishingOperationRow> - extends AbstractTuttiImportExportModel<FO> { +public abstract class AbstractFishingOperationRowModel<FO extends AbstractFishingOperationRow> extends AbstractTuttiImportExportModel<FO> { - public AbstractFishingOperationRowModel(char separator) { - super(separator); + public AbstractFishingOperationRowModel() { + super(MultiPostConstants.CSV_SEPARATOR); newColumnForImportExport(FishingOperationRow.STATION_NUMBER); newColumnForImportExport(FishingOperationRow.OPERATION_NUMBER, TuttiCsvUtil.INTEGER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AccidentalCatchRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AccidentalCatchRow.java index 24e7b2e..cb0da54 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AccidentalCatchRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -34,24 +34,15 @@ import java.io.Serializable; */ public class AccidentalCatchRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String BATCH_ID = "batchId"; - public static final String SPECIES = "species"; - public static final String GENDER = "gender"; - public static final String WEIGHT = "weight"; - public static final String SIZE = "size"; - public static final String LENGTH_STEP_CARACTERISTIC = "lengthStepCaracteristic"; - public static final String DEAD_OR_ALIVE = "deadOrAlive"; - public static final String COMMENT = "comment"; - + private static final long serialVersionUID = 1L; protected String batchId; protected Species species; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AccidentalCatchRowModel.java similarity index 73% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AccidentalCatchRowModel.java index 57f622c..c86c874 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AccidentalCatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AccidentalCatchRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -24,6 +24,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; @@ -38,16 +39,11 @@ import java.util.List; */ public class AccidentalCatchRowModel extends AbstractTuttiImportExportModel<AccidentalCatchRow> { - public AccidentalCatchRowModel(char separator) { - this(separator, null, null, null, null); - } - - public AccidentalCatchRowModel(char separator, - List<Species> species, - Caracteristic sexCaracteristic, - Caracteristic dedOrAliveCaracteristic, - List<Caracteristic> lengthStepCaracteristics) { - super(separator); + private AccidentalCatchRowModel(List<Species> species, + Caracteristic sexCaracteristic, + Caracteristic dedOrAliveCaracteristic, + List<Caracteristic> lengthStepCaracteristics) { + super(MultiPostConstants.CSV_SEPARATOR); newColumnForImportExport(AccidentalCatchRow.BATCH_ID); @@ -71,6 +67,16 @@ public class AccidentalCatchRowModel extends AbstractTuttiImportExportModel<Acci } + public static AccidentalCatchRowModel forExport() { + return new AccidentalCatchRowModel( null, null, null, null); + } + + public static AccidentalCatchRowModel forImport(List<Species> species, Caracteristic sexCaracteristic, + Caracteristic dedOrAliveCaracteristic, + List<Caracteristic> lengthStepCaracteristics) { + return new AccidentalCatchRowModel(species, sexCaracteristic, dedOrAliveCaracteristic, lengthStepCaracteristics); + } + @Override public AccidentalCatchRow newEmptyInstance() { return new AccidentalCatchRow(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AttachmentRow.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AttachmentRow.java index 2137831..0f14605 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AttachmentRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -31,16 +31,11 @@ import java.io.Serializable; */ public class AttachmentRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String ATTACHMENT_NAME = "name"; - public static final String ATTACHMENT_BATCH_ID = "batchId"; - public static final String ATTACHMENT_COMMENT = "comment"; - public static final String ATTACHMENT_FILE = "file"; - + private static final long serialVersionUID = 1L; protected String name; protected String batchId; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AttachmentRowModel.java similarity index 81% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AttachmentRowModel.java index de1ad8d..37efc56 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/AttachmentRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/AttachmentRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -22,6 +22,7 @@ package fr.ifremer.tutti.service.catches.multipost; * #L% */ +import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import org.nuiton.csv.ValueFormatter; @@ -33,12 +34,8 @@ import java.io.File; */ public class AttachmentRowModel extends AbstractTuttiImportExportModel<AttachmentRow> { - public AttachmentRowModel(char separator) { - this(separator, null); - } - - public AttachmentRowModel(char separator, final File directory) { - super(separator); + private AttachmentRowModel(final File directory) { + super(MultiPostConstants.CSV_SEPARATOR); newColumnForImportExport(AttachmentRow.ATTACHMENT_BATCH_ID); @@ -61,6 +58,14 @@ public class AttachmentRowModel extends AbstractTuttiImportExportModel<Attachmen } + public static AttachmentRowModel forExport() { + return new AttachmentRowModel(null); + } + + public static AttachmentRowModel forImport(File directory) { + return new AttachmentRowModel(directory); + } + @Override public AttachmentRow newEmptyInstance() { return new AttachmentRow(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CaracteristicRow.java similarity index 96% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CaracteristicRow.java index 3d59513..4202caa 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CaracteristicRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -32,14 +32,10 @@ import java.io.Serializable; */ public class CaracteristicRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String BATCH_ID = "batchId"; - public static final String CARACTERISTIC = "caracteristic"; - public static final String VALUE = "value"; - + private static final long serialVersionUID = 1L; protected String batchId; protected Caracteristic caracteristic; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CaracteristicRowModel.java similarity index 77% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CaracteristicRowModel.java index 61c8cff..4df2f0f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CaracteristicRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CaracteristicRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -23,6 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; @@ -34,12 +35,8 @@ import java.util.List; */ public class CaracteristicRowModel extends AbstractTuttiImportExportModel<CaracteristicRow> { - public CaracteristicRowModel(char separator) { - this(separator, null); - } - - public CaracteristicRowModel(char separator, List<Caracteristic> caracteristics) { - super(separator); + private CaracteristicRowModel(List<Caracteristic> caracteristics) { + super(MultiPostConstants.CSV_SEPARATOR); newColumnForImportExport(CaracteristicRow.BATCH_ID); @@ -51,6 +48,14 @@ public class CaracteristicRowModel extends AbstractTuttiImportExportModel<Caract } + public static CaracteristicRowModel forExport() { + return new CaracteristicRowModel(null); + } + + public static CaracteristicRowModel forImport(List<Caracteristic> caracteristics) { + return new CaracteristicRowModel(caracteristics); + } + @Override public CaracteristicRow newEmptyInstance() { return new CaracteristicRow(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchBatchRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchBatchRow.java index a092722..155af3c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchBatchRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchBatchRowModel.java similarity index 93% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchBatchRowModel.java index 503ac9e..2dc41cb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchBatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchBatchRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -34,8 +34,7 @@ import fr.ifremer.tutti.service.csv.TuttiCsvUtil; */ public class CatchBatchRowModel extends AbstractFishingOperationRowModel<CatchBatchRow> { - public CatchBatchRowModel(char separator) { - super(separator); + public CatchBatchRowModel() { newColumnForImportExport(CatchBatchRow.CATCH_TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); newColumnForImportExport(CatchBatchRow.CATCH_TOTAL_REJECTED_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchFrequencyRow.java similarity index 87% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchFrequencyRow.java index c0abceb..665011c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchFrequencyRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -23,6 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Species; import java.io.Serializable; @@ -32,18 +33,13 @@ import java.io.Serializable; */ public class CatchFrequencyRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String BATCH_ID = "batchId"; - public static final String FREQUENCY_LENGTH_STEP_CARACTERISTIC = "lengthStepCaracteristic"; - public static final String FREQUENCY_LENGTH_STEP = "lengthStep"; - public static final String FREQUENCY_WEIGHT = "weight"; - public static final String FREQUENCY_NUMBER = "number"; - + public static final String SPECIES = "species"; + private static final long serialVersionUID = 1L; protected String batchId; protected Caracteristic lengthStepCaracteristic; @@ -54,6 +50,8 @@ public class CatchFrequencyRow implements Serializable { protected Integer number; + protected Species species; + public String getBatchId() { return batchId; } @@ -93,4 +91,12 @@ public class CatchFrequencyRow implements Serializable { public void setNumber(Integer number) { this.number = number; } + + public Species getSpecies() { + return species; + } + + public void setSpecies(Species species) { + this.species = species; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchFrequencyRowModel.java similarity index 70% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchFrequencyRowModel.java index 7e5522a..4bd9ec7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchFrequencyRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchFrequencyRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -23,6 +23,8 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; @@ -36,12 +38,9 @@ import java.util.List; */ public class CatchFrequencyRowModel extends AbstractTuttiImportExportModel<CatchFrequencyRow> { - public CatchFrequencyRowModel(char separator) { - this(separator, null); - } + private CatchFrequencyRowModel(List<Species> species, List<Caracteristic> caracteristics) { - public CatchFrequencyRowModel(char separator, List<Caracteristic> caracteristics) { - super(separator); + super(MultiPostConstants.CSV_SEPARATOR); newColumnForImportExport(CatchFrequencyRow.BATCH_ID); @@ -54,6 +53,17 @@ public class CatchFrequencyRowModel extends AbstractTuttiImportExportModel<Catch newColumnForImportExport(CatchFrequencyRow.FREQUENCY_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); + newColumnForExport(CatchFrequencyRow.SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); + newSpeciesForeignKeyColumn(CatchFrequencyRow.SPECIES, species); + + } + + public static CatchFrequencyRowModel forExport() { + return new CatchFrequencyRowModel(null, null); + } + + public static CatchFrequencyRowModel forImport(List<Species> species, List<Caracteristic> caracteristics) { + return new CatchFrequencyRowModel(species, caracteristics); } @Override diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchRow.java index 8f38c15..08841ea 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -34,28 +34,17 @@ import java.io.Serializable; */ public class CatchRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String ID = "id"; - public static final String PARENT_ID = "parentId"; - public static final String SPECIES = "species"; - public static final String CATEGORY_ID = "categoryId"; - public static final String CATEGORY_VALUE = "categoryValue"; - public static final String CATEGORY_WEIGHT = "categoryWeight"; - public static final String WEIGHT = "weight"; - public static final String NUMBER = "number"; - public static final String COMMENT = "comment"; - public static final String TO_CONFIRM = "toConfirm"; - + private static final long serialVersionUID = 1L; protected String id; protected String parentId; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchRowModel.java similarity index 83% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchRowModel.java index e8eb6a7..df7c37a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -23,8 +23,9 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.csv.TuttiCsvUtil; +import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; +import fr.ifremer.tutti.service.csv.TuttiCsvUtil; import java.util.List; @@ -36,12 +37,8 @@ import java.util.List; */ public class CatchRowModel extends AbstractTuttiImportExportModel<CatchRow> { - public CatchRowModel(char separator) { - this(separator, null); - } - - public CatchRowModel(char separator, List<Species> species) { - super(separator); + private CatchRowModel(List<Species> species) { + super(MultiPostConstants.CSV_SEPARATOR); newColumnForImportExport(CatchRow.ID); @@ -67,6 +64,14 @@ public class CatchRowModel extends AbstractTuttiImportExportModel<CatchRow> { } + public static CatchRowModel forExport() { + return new CatchRowModel(null); + } + + public static CatchRowModel forImport(List<Species> species) { + return new CatchRowModel(species); + } + @Override public CatchRow newEmptyInstance() { return new CatchRow(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchWeightsRow.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchWeightsRow.java index 654bb46..0d15ba2 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchWeightsRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchWeightsRowModel.java similarity index 91% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchWeightsRowModel.java index 9842c97..09f949e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/CatchWeightsRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/CatchWeightsRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -30,8 +30,7 @@ import fr.ifremer.tutti.service.csv.TuttiCsvUtil; */ public class CatchWeightsRowModel extends AbstractFishingOperationRowModel<CatchWeightsRow> { - public CatchWeightsRowModel(char separator) { - super(separator); + public CatchWeightsRowModel() { newColumnForImportExport(CatchWeightsRow.TOTAL_SORTED_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); newColumnForImportExport(CatchWeightsRow.INERT_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/FishingOperationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/FishingOperationRow.java similarity index 94% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/FishingOperationRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/FishingOperationRow.java index 172263b..76b404b 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/FishingOperationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/FishingOperationRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/FishingOperationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/FishingOperationRowModel.java similarity index 88% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/FishingOperationRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/FishingOperationRowModel.java index c19bbc2..909fcde 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/FishingOperationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/FishingOperationRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -28,10 +28,6 @@ package fr.ifremer.tutti.service.catches.multipost; */ public class FishingOperationRowModel extends AbstractFishingOperationRowModel<FishingOperationRow> { - public FishingOperationRowModel(char separator) { - super(separator); - } - @Override public FishingOperationRow newEmptyInstance() { return new FishingOperationRow(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRow.java similarity index 98% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRow.java index 4828282..82adf9e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -33,26 +33,18 @@ import java.io.Serializable; */ public class IndividualObservationRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String BATCH_ID = "batchId"; - public static final String SPECIES_BATCH_ID = "speciesBatchId"; - public static final String SPECIES = "species"; - public static final String WEIGHT = "weight"; - public static final String SIZE = "size"; - public static final String LENGTH_STEP_CARACTERISTIC = "lengthStepCaracteristic"; + public static final String COMMENT = "comment"; // public static final String SAMPLING_CODE = "samplingCode"; // // public static final String CALCIFIED_PIECE_SAMPLING_CODE = "calcifiedPieceSamplingCode"; - - public static final String COMMENT = "comment"; - + private static final long serialVersionUID = 1L; protected String batchId; protected String speciesBatchId; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRowModel.java similarity index 78% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRowModel.java index 652a718..d188147 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/IndividualObservationRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/IndividualObservationRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -24,6 +24,7 @@ package fr.ifremer.tutti.service.catches.multipost; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; @@ -37,12 +38,8 @@ import java.util.List; */ public class IndividualObservationRowModel extends AbstractTuttiImportExportModel<IndividualObservationRow> { - public IndividualObservationRowModel(char separator) { - this(separator, null, null); - } - - public IndividualObservationRowModel(char separator, List<Species> species, List<Caracteristic> lengthStepCaracteristics) { - super(separator); + private IndividualObservationRowModel(List<Species> species, List<Caracteristic> lengthStepCaracteristics) { + super(MultiPostConstants.CSV_SEPARATOR); newColumnForImportExport(IndividualObservationRow.BATCH_ID); newColumnForImportExport(IndividualObservationRow.SPECIES_BATCH_ID); @@ -61,6 +58,14 @@ public class IndividualObservationRowModel extends AbstractTuttiImportExportMode } + public static IndividualObservationRowModel forExport() { + return new IndividualObservationRowModel(null, null); + } + + public static IndividualObservationRowModel forImport(List<Species> species, List<Caracteristic> lengthStepCaracteristics) { + return new IndividualObservationRowModel(species, lengthStepCaracteristics); + } + @Override public IndividualObservationRow newEmptyInstance() { return new IndividualObservationRow(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterRow.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterRow.java index 403cf3a..06fb3f4 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -32,20 +32,13 @@ import java.io.Serializable; */ public class MarineLitterRow implements Serializable { - private static final long serialVersionUID = 1L; - public static final String BATCH_ID = "batchId"; - public static final String CATEGORY = "category"; - public static final String SIZE_CATEGORY = "sizeCategory"; - public static final String NUMBER = "number"; - public static final String WEIGHT = "weight"; - public static final String COMMENT = "comment"; - + private static final long serialVersionUID = 1L; protected String batchId; protected CaracteristicQualitativeValue category; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterRowModel.java similarity index 76% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterRowModel.java index b33de3a..89414ef 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -23,6 +23,7 @@ package fr.ifremer.tutti.service.catches.multipost; */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.catches.multipost.MultiPostConstants; import fr.ifremer.tutti.service.csv.AbstractTuttiImportExportModel; import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.service.csv.TuttiCsvUtil; @@ -33,12 +34,8 @@ import fr.ifremer.tutti.service.csv.TuttiCsvUtil; */ public class MarineLitterRowModel extends AbstractTuttiImportExportModel<MarineLitterRow> { - public MarineLitterRowModel(char separator) { - this(separator, null, null); - } - - public MarineLitterRowModel(char separator, Caracteristic categoryCaracteristic, Caracteristic sizeCategoryCaracteristic) { - super(separator); + private MarineLitterRowModel(Caracteristic categoryCaracteristic, Caracteristic sizeCategoryCaracteristic) { + super(MultiPostConstants.CSV_SEPARATOR); newColumnForImportExport(MarineLitterRow.BATCH_ID); @@ -55,6 +52,14 @@ public class MarineLitterRowModel extends AbstractTuttiImportExportModel<MarineL newColumnForImportExport(MarineLitterRow.COMMENT); } + public static MarineLitterRowModel forExport() { + return new MarineLitterRowModel(null, null); + } + + public static MarineLitterRowModel forImport(Caracteristic categoryCaracteristic, Caracteristic sizeCategoryCaracteristic) { + return new MarineLitterRowModel(categoryCaracteristic, sizeCategoryCaracteristic); + } + @Override public MarineLitterRow newEmptyInstance() { return new MarineLitterRow(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterWeightRow.java similarity index 95% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRow.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterWeightRow.java index 7216d36..cd4b394 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterWeightRow.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterWeightRowModel.java similarity index 90% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterWeightRowModel.java index d8e9cb0..405c231 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MarineLitterWeightRowModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/csv/MarineLitterWeightRowModel.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.catches.multipost; +package fr.ifremer.tutti.service.catches.multipost.csv; /* * #%L @@ -30,8 +30,7 @@ import fr.ifremer.tutti.service.csv.TuttiCsvUtil; */ public class MarineLitterWeightRowModel extends AbstractFishingOperationRowModel<MarineLitterWeightRow> { - public MarineLitterWeightRowModel(char separator) { - super(separator); + public MarineLitterWeightRowModel() { newColumnForImportExport(MarineLitterWeightRow.TOTAL_WEIGHT, TuttiCsvUtil.WEIGHT_PARSER_FORMATTER); } -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 29caf78330512264981e6fb798b1d75304cf6661 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 15:58:36 2016 +0100 réusinage actions d'import sur le trait --- .../actions/ImportMultiPostSpeciesFullAction.java | 58 ++++------------------ ...mportMultiPostSpeciesOnlyFrequenciesAction.java | 58 ++++------------------ ...ostSpeciesOnlyIndividualObservationsAction.java | 58 ++++------------------ ...va => ImportMultiPostSpeciesSupportAction.java} | 36 +++----------- 4 files changed, 40 insertions(+), 170 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java index 80daa5e..f912774 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java @@ -22,34 +22,33 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.CatchBatch; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; -import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ImportMultiPostActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; import java.io.File; -import java.util.Collection; -import java.util.Map; -import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** * @author Tony Chemit - chemit@codelutin.com * @since 4.5 */ -public class ImportMultiPostSpeciesFullAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ImportMultiPostSpeciesFullAction extends ImportMultiPostSpeciesSupportAction { public ImportMultiPostSpeciesFullAction(SpeciesBatchUIHandler handler) { super(handler); } @Override + public boolean isImportFrequencies() { + return true; + } + + @Override + public boolean isImportIndivudalObservations() { + return true; + } + + @Override protected String getFileExtension() { return "tuttiSpeciesFull"; } @@ -74,39 +73,4 @@ public class ImportMultiPostSpeciesFullAction extends ImportMultiPostActionSuppo return t("tutti.editSpeciesBatch.action.importMultiPostFull.success", file); } - @Override - protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { - - return multiPostImportExportService.importSpecies(file, operation, true, true); - - } - - @Override - protected String buildNotImportedDataReportText(Map<String, Object> notImportedData) { - - WeightUnit speciesWeightUnit = getConfig().getSpeciesWeightUnit(); - - StringBuilder builder = new StringBuilder(); - - Float totalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT); - addNotImportedWeightToReport(builder, totalSortedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.totalSortedWeight")); - - Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT); - addNotImportedWeightToReport(builder, inertWeight, speciesWeightUnit, n("tutti.multiPostImportLog.inertWeight")); - - Float livingNotItemizedWeight = - (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); - addNotImportedWeightToReport(builder, livingNotItemizedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.livingNotItemizedWeight")); - - Collection<SpeciesBatch> notImportedSpeciesBatches = - (Collection<SpeciesBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); - - for (SpeciesBatch sb : notImportedSpeciesBatches) { - builder.append("- ").append(decorate(sb.getSpecies())).append(" / ").append(decorate(sb.getSampleCategoryValue())).append("\n"); - } - - return builder.toString(); - - } - } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java index dc2d351..02bb679 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java @@ -22,34 +22,33 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.CatchBatch; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; -import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ImportMultiPostActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; import java.io.File; -import java.util.Collection; -import java.util.Map; -import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** * @author Tony Chemit - chemit@codelutin.com * @since 4.5 */ -public class ImportMultiPostSpeciesOnlyFrequenciesAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ImportMultiPostSpeciesOnlyFrequenciesAction extends ImportMultiPostSpeciesSupportAction{ public ImportMultiPostSpeciesOnlyFrequenciesAction(SpeciesBatchUIHandler handler) { super(handler); } @Override + public boolean isImportFrequencies() { + return true; + } + + @Override + public boolean isImportIndivudalObservations() { + return false; + } + + @Override protected String getFileExtension() { return "tuttiSpeciesOnlyFrequencies"; } @@ -74,39 +73,4 @@ public class ImportMultiPostSpeciesOnlyFrequenciesAction extends ImportMultiPost 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, true, false); - - } - - @Override - protected String buildNotImportedDataReportText(Map<String, Object> notImportedData) { - - WeightUnit speciesWeightUnit = getConfig().getSpeciesWeightUnit(); - - StringBuilder builder = new StringBuilder(); - - Float totalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT); - addNotImportedWeightToReport(builder, totalSortedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.totalSortedWeight")); - - Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT); - addNotImportedWeightToReport(builder, inertWeight, speciesWeightUnit, n("tutti.multiPostImportLog.inertWeight")); - - Float livingNotItemizedWeight = - (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); - addNotImportedWeightToReport(builder, livingNotItemizedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.livingNotItemizedWeight")); - - Collection<SpeciesBatch> notImportedSpeciesBatches = - (Collection<SpeciesBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); - - for (SpeciesBatch sb : notImportedSpeciesBatches) { - builder.append("- ").append(decorate(sb.getSpecies())).append(" / ").append(decorate(sb.getSampleCategoryValue())).append("\n"); - } - - return builder.toString(); - - } - } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java index ca6a22c..87d69bd 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java @@ -22,34 +22,33 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.actions; * #L% */ -import fr.ifremer.tutti.persistence.entities.data.CatchBatch; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; -import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ImportMultiPostActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; import java.io.File; -import java.util.Collection; -import java.util.Map; -import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** * @author Tony Chemit - chemit@codelutin.com * @since 4.5 */ -public class ImportMultiPostSpeciesOnlyIndividualObservationsAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public class ImportMultiPostSpeciesOnlyIndividualObservationsAction extends ImportMultiPostSpeciesSupportAction { public ImportMultiPostSpeciesOnlyIndividualObservationsAction(SpeciesBatchUIHandler handler) { super(handler); } @Override + public boolean isImportFrequencies() { + return false; + } + + @Override + public boolean isImportIndivudalObservations() { + return true; + } + + @Override protected String getFileExtension() { return "tuttiSpeciesOnlyIndividualObservations"; } @@ -74,39 +73,4 @@ public class ImportMultiPostSpeciesOnlyIndividualObservationsAction extends Impo 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, false, true); - - } - - @Override - protected String buildNotImportedDataReportText(Map<String, Object> notImportedData) { - - WeightUnit speciesWeightUnit = getConfig().getSpeciesWeightUnit(); - - StringBuilder builder = new StringBuilder(); - - Float totalSortedWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT); - addNotImportedWeightToReport(builder, totalSortedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.totalSortedWeight")); - - Float inertWeight = (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT); - addNotImportedWeightToReport(builder, inertWeight, speciesWeightUnit, n("tutti.multiPostImportLog.inertWeight")); - - Float livingNotItemizedWeight = - (Float) notImportedData.get(CatchBatch.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); - addNotImportedWeightToReport(builder, livingNotItemizedWeight, speciesWeightUnit, n("tutti.multiPostImportLog.livingNotItemizedWeight")); - - Collection<SpeciesBatch> notImportedSpeciesBatches = - (Collection<SpeciesBatch>) notImportedData.get(MultiPostImportService.BATCHES_KEY); - - for (SpeciesBatch sb : notImportedSpeciesBatches) { - builder.append("- ").append(decorate(sb.getSpecies())).append(" / ").append(decorate(sb.getSampleCategoryValue())).append("\n"); - } - - return builder.toString(); - - } - } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesSupportAction.java similarity index 72% copy from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java copy to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesSupportAction.java index 80daa5e..02d8c0f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesFullAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/actions/ImportMultiPostSpeciesSupportAction.java @@ -37,52 +37,30 @@ import java.util.Collection; import java.util.Map; import static org.nuiton.i18n.I18n.n; -import static org.nuiton.i18n.I18n.t; /** * @author Tony Chemit - chemit@codelutin.com * @since 4.5 */ -public class ImportMultiPostSpeciesFullAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { +public abstract class ImportMultiPostSpeciesSupportAction extends ImportMultiPostActionSupport<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - public ImportMultiPostSpeciesFullAction(SpeciesBatchUIHandler handler) { + protected ImportMultiPostSpeciesSupportAction(SpeciesBatchUIHandler handler) { super(handler); } - @Override - protected String getFileExtension() { - return "tuttiSpeciesFull"; - } + public abstract boolean isImportFrequencies(); - @Override - protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiSpeciesFull"); - } - - @Override - protected String getFileChooserTitle() { - return t("tutti.editSpeciesBatch.action.importMultiPostFull.sourceFile.title"); - } - - @Override - protected String getFileChooserButton() { - return t("tutti.editSpeciesBatch.action.importMultiPostFull.sourceFile.button"); - } - - @Override - protected String getSuccessMessage(File file) { - return t("tutti.editSpeciesBatch.action.importMultiPostFull.success", file); - } + public abstract boolean isImportIndivudalObservations(); @Override - protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + protected final Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { - return multiPostImportExportService.importSpecies(file, operation, true, true); + return multiPostImportExportService.importSpecies(file, operation, isImportFrequencies(), isImportIndivudalObservations()); } @Override - protected String buildNotImportedDataReportText(Map<String, Object> notImportedData) { + protected final String buildNotImportedDataReportText(Map<String, Object> notImportedData) { WeightUnit speciesWeightUnit = getConfig().getSpeciesWeightUnit(); -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 98fc416b778536a44693ccc186cfb163ca9bd61e Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 15:59:16 2016 +0100 Import/export au niveau d'un lot (See #8119) --- .../catches/multipost/MultiPostImportService.java | 5 +- .../resources/i18n/tutti-service_en_GB.properties | 1 + .../resources/i18n/tutti-service_fr_FR.properties | 1 + .../filtered-resources/tutti-help-fr.properties | 31 ++----- .../content/operation/catches/EditCatchesUI.jcss | 4 + .../operation/catches/EditCatchesUIHandler.java | 3 +- .../actions/ImportMultiPostActionSupport.java | 2 +- .../catches/species/SpeciesBatchRowModel.java | 22 ++++- .../frequency/SpeciesFrequencyCellComponent.java | 2 +- .../species/frequency/SpeciesFrequencyUI.jaxx | 17 ++++ .../species/frequency/SpeciesFrequencyUI.jcss | 88 ++++++++++++++++++++ .../frequency/SpeciesFrequencyUIHandler.java | 11 ++- .../actions/ExportMultiPostSpeciesFullAction.java | 80 ++++++++++++++++++ ...xportMultiPostSpeciesOnlyFrequenciesAction.java | 80 ++++++++++++++++++ ...ostSpeciesOnlyIndividualObservationsAction.java | 80 ++++++++++++++++++ .../actions/ImportMultiPostSpeciesFullAction.java | 76 +++++++++++++++++ ...mportMultiPostSpeciesOnlyFrequenciesAction.java | 76 +++++++++++++++++ ...ostSpeciesOnlyIndividualObservationsAction.java | 76 +++++++++++++++++ .../ImportMultiPostSpeciesSupportAction.java | 97 ++++++++++++++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 39 +++++++++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 43 +++++++++- 21 files changed, 796 insertions(+), 38 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 499ed46..a2402b3 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 @@ -1370,11 +1370,12 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult FishingOperation operation = importContext.getOperation(); - Integer speciesOrBenthosBatchId = speciesOfBenthosBatch.getSpecies().getIdAsInt(); + Integer requiredSpeciesId = speciesOfBenthosBatch.getSpecies().getIdAsInt(); + Integer speciesOrBenthosBatchId = speciesOfBenthosBatch.getIdAsInt(); for (IndividualObservationRow row : importer) { - if (!speciesOrBenthosBatchId.equals(row.getSpecies().getIdAsInt())) { + if (!requiredSpeciesId.equals(row.getSpecies().getIdAsInt())) { // Bad species, import fail Decorator<Species> fishingOperationDecorator = context.getService(DecoratorService.class).getDecoratorByType(Species.class); diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index 0d885b8..5d79d71 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -280,6 +280,7 @@ tutti.service.multipost.import.frequencies.error= tutti.service.multipost.import.operation.error= tutti.service.multipost.import.weights.error= tutti.service.multipost.import.wrongOperation.error= +tutti.service.multipost.import.wrongSpecies.error= tutti.service.multipost.uncompress.error= tutti.service.operations.cleanWeights.benthos.batch= tutti.service.operations.cleanWeights.error.redundant.frequencyWeight= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 0af8d17..c064cbe 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -242,6 +242,7 @@ tutti.service.multipost.import.frequencies.error=Erreur lors de l'import des men tutti.service.multipost.import.operation.error=Erreur lors de l'import des données du trait tutti.service.multipost.import.weights.error=Erreur lors de l'import des poids tutti.service.multipost.import.wrongOperation.error=Opération est impossible<hr/>Les lots que vous essayez d'importer proviennent d'un autre trait \:<br/>%s +tutti.service.multipost.import.wrongSpecies.error=Espèce impossible<hr/>Les lots que vous essayez d'importer proviennent d'un autre lot \:<br/>%s tutti.service.multipost.uncompress.error=Erreur lors de la décompression de l'archive %s tutti.service.operations.cleanWeights.benthos.batch=Lot benthos tutti.service.operations.cleanWeights.error.redundant.frequencyWeight=Le poids (%s%s) du <strong>sous-échantillon</strong> vaut la somme des poids des <strong>échantillons mesurés</strong> 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 fbdf670..99c8e15 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,28 +1,5 @@ -### -# #%L -# Tutti :: UI -# $Id:$ -# $HeadURL:$ -# %% -# Copyright (C) 2012 - 2016 Ifremer -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Wed Mar 09 16:42:42 CET 2016 +#Mon Mar 14 08:39:04 CET 2016 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -329,7 +306,13 @@ tutti.editSpeciesBatch.help=editFishingOperation.html\#captureEspeces tutti.editSpeciesBatch.sortSpeciesBatch.help=editFishingOperation.html\#captureEspecesFields tutti.editSpeciesFrequencies.action.addLengthStepCaracteristic.help=editFishingOperation.html\#captureEspecesMensurationActions tutti.editSpeciesFrequencies.action.cancel.help=editFishingOperation.html\#captureEspecesMensurationActions +tutti.editSpeciesFrequencies.action.exportMultiPostFull.help= +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies.help= +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations.help= tutti.editSpeciesFrequencies.action.generate.help=editFishingOperation.html\#captureEspecesMensurationActions +tutti.editSpeciesFrequencies.action.importMultiPostFull.help= +tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies.help= +tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations.help= tutti.editSpeciesFrequencies.action.removeObservation.help= tutti.editSpeciesFrequencies.action.reset.help=editFishingOperation.html\#captureEspecesMensurationActions tutti.editSpeciesFrequencies.action.saveAndClose.help=editFishingOperation.html\#captureEspecesMensurationActions diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jcss index 5551975..a0113b2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jcss @@ -84,6 +84,10 @@ ComputableDataEditor { rightDecoration: {accidentalTabContent.getAccidentalBatchTabToolBar()}; } +#speciesTabFrequencyEditorReminderLabel { + rightDecoration: {speciesTabFrequencyEditor.getSpeciesFrequencyTabToolBar()}; +} + #speciesTabPanel { layout:{speciesTabPanelLayout}; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java index 3b5a1de..e251162 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java @@ -52,6 +52,7 @@ import javax.swing.JTabbedPane; import javax.swing.table.TableColumn; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Optional; import java.util.Set; import static org.nuiton.i18n.I18n.n; @@ -459,7 +460,7 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi ui.getSpeciesTabFishingOperationReminderLabel().getTitle(), "", false); - frequencyEditor.getHandler().editBatch(editor, frequenciesTitle); + frequencyEditor.getHandler().editBatch(editor, Optional.of(frequenciesTitle)); // open frequency editor setSpeciesSelectedCard(EditCatchesUIHandler.EDIT_FREQUENCY_CARD); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/actions/ImportMultiPostActionSupport.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/actions/ImportMultiPostActionSupport.java index 2eb4683..2b35acb 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/actions/ImportMultiPostActionSupport.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/actions/ImportMultiPostActionSupport.java @@ -220,7 +220,7 @@ public abstract class ImportMultiPostActionSupport<M extends AbstractBean, UI ex } @Override - public final void postSuccessAction() { + public void postSuccessAction() { super.postSuccessAction(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java index e5df709..618a24c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java @@ -206,14 +206,30 @@ public class SpeciesBatchRowModel extends AbstractTuttiBeanUIModel<SpeciesBatch, fromEntity(aBatch); - List<SpeciesFrequencyRowModel> frequencyRows = - SpeciesFrequencyRowModel.fromEntity(weightUnit, frequencies); + loadFrequencies(frequencies); + + loadIndividualObservations(observationWeightUnit, defautObservationCaracteristic, individualObservations); + + } + + public void loadFrequencies(List<SpeciesBatchFrequency> frequencies) { + + List<SpeciesFrequencyRowModel> frequencyRows = SpeciesFrequencyRowModel.fromEntity(weightUnit, frequencies); + frequency.clear(); frequency.addAll(frequencyRows); Collections.sort(frequency); + } + + public void loadIndividualObservations(WeightUnit observationWeightUnit, + List<Caracteristic> defautObservationCaracteristic, + List<IndividualObservationBatch> individualObservations) { + List<IndividualObservationBatchRowModel> obsRows = IndividualObservationBatchRowModel.fromEntity(observationWeightUnit, defautObservationCaracteristic, individualObservations); + individualObservation.clear(); individualObservation.addAll(obsRows); + } //------------------------------------------------------------------------// @@ -513,7 +529,7 @@ public class SpeciesBatchRowModel extends AbstractTuttiBeanUIModel<SpeciesBatch, SampleCategory<?> sampleCategory = getSampleCategoryById(sampleCategoryId); JavaBeanObjectUtil.setProperty(sampleCategory, - SampleCategory.PROPERTY_CATEGORY_VALUE, value); + SampleCategory.PROPERTY_CATEGORY_VALUE, value); firePropertyChange(PROPERTY_SAMPLE_CATEGORY_VALUE, null, sampleCategory); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java index 504a284..04ac9f2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java @@ -276,7 +276,7 @@ public class SpeciesFrequencyCellComponent extends DefaultTableCellRenderer { // set the weigth editRow.setWeight(frequencyModel.getTotalWeight()); - // DO THIS BEFORE SETTING THE FREQUENCIES AS THE FREAQUENCIES MODIFICATIONS TRIGGERS THE SAVE + // DO THIS BEFORE SETTING THE FREQUENCIES AS THE FREQUENCIES MODIFICATIONS TRIGGERS THE SAVE // set individual observations to the incoming batch editRow.setIndividualObservation(individualObservation); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx index 3b859b5..d43e850 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx @@ -86,6 +86,23 @@ public SpeciesFrequencyUI(TuttiUI parentUI) { <SaveAndCloseSpeciesFrequencyAction id="saveAndCloseAction" constructorParams="this"/> <SaveAndContinueSpeciesFrequencyAction id="saveAndContinueAction" constructorParams="this"/> + <JToolBar id='speciesFrequencyTabToolBar'> + <JMenuBar id='menu'> + <JMenu id='menuAction'> + <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> + </JToolBar> + <JPopupMenu id='obsTablePopup'> <JMenuItem id='deleteObsRowsMenu'/> </JPopupMenu> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jcss index bdf350f..bb9b5a0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jcss @@ -46,6 +46,94 @@ ComputableDataEditor { visible: {!model.isSimpleCountingMode()}; } +#speciesFrequencyTabToolBar { + floatable: false; + opaque: true; + borderPainted: false; +} + +#menu { + border:{null}; + background:{javax.swing.UIManager.getColor("MenuBar.background")}; +} + +#menuAction { + opaque: true; + text: "tutti.toolbar.menu.action"; + toolTipText: "tutti.toolbar.menu.action.tip"; + 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"; +} + +#importMultiPostFullButton { + actionIcon: import; + text: "tutti.editSpeciesFrequencies.action.importMultiPostFull"; + toolTipText: "tutti.editSpeciesFrequencies.action.importMultiPostFull.tip"; + i18nMnemonic: "tutti.editSpeciesFrequencies.action.importMultiPostFull.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ImportMultiPostSpeciesFullAction.class}; + _help: {"tutti.editSpeciesFrequencies.action.importMultiPostFull.help"}; +} + +#importMultiPostOnlyFrequenciesButton { + actionIcon: import; + text: "tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies"; + toolTipText: "tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies.tip"; + i18nMnemonic: "tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ImportMultiPostSpeciesOnlyFrequenciesAction.class}; + _help: {"tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies.help"}; +} + +#importMultiPostOnlyIndividualObservationsButton { + actionIcon: import; + text: "tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations"; + toolTipText: "tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations.tip"; + i18nMnemonic: "tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ImportMultiPostSpeciesOnlyIndividualObservationsAction.class}; + _help: {"tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations.help"}; +} + +#exportMultiPostFullButton { + actionIcon: export; + text: "tutti.editSpeciesFrequencies.action.exportMultiPostFull"; + toolTipText: "tutti.editSpeciesFrequencies.action.exportMultiPostFull.tip"; + i18nMnemonic: "tutti.editSpeciesFrequencies.action.exportMultiPostFull.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ExportMultiPostSpeciesFullAction.class}; + _help: {"tutti.editSpeciesFrequencies.action.exportMultiPostFull.help"}; +} + +#exportMultiPostOnlyFrequenciesButton { + actionIcon: export; + text: "tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies"; + toolTipText: "tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies.tip"; + i18nMnemonic: "tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ExportMultiPostSpeciesOnlyFrequenciesAction.class}; + _help: {"tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies.help"}; +} + +#exportMultiPostOnlyIndividualObservationsButton { + actionIcon: export; + text: "tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations"; + toolTipText: "tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations.tip"; + i18nMnemonic: "tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ExportMultiPostSpeciesOnlyIndividualObservationsAction.class}; + _help: {"tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations.help"}; +} + #editSpeciesFrequenciesTopPanel { _help: {"tutti.editSpeciesFrequencies.help"}; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java index 5744459..183e2f9 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -660,7 +660,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } } - public void editBatch(FrequencyCellEditor editor, String title) { + public void editBatch(FrequencyCellEditor editor, Optional<String> optionalTitle) { // on enlève la colonne spécifique à l'espèce précédente if (maturityColumnId.isPresent()) { @@ -672,8 +672,13 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci FrequencyConfigurationMode mode = FrequencyConfigurationMode.FREQUENCIES; FrequencyConfigurationMode frequenciesMode = FrequencyConfigurationMode.AUTO_GEN; - frequenciesHistogramPopup.setTitle(title + t("tutti.editSpeciesFrequencies.title")); - averageWeightsHistogramPopup.setTitle(title + weightUnit.decorateLabel(t("tutti.editSpeciesFrequencies.field.graphAverageWeight"))); + if (optionalTitle.isPresent()) { + + String title = optionalTitle.get(); + frequenciesHistogramPopup.setTitle(title + t("tutti.editSpeciesFrequencies.title")); + averageWeightsHistogramPopup.setTitle(title + weightUnit.decorateLabel(t("tutti.editSpeciesFrequencies.field.graphAverageWeight"))); + + } SpeciesBatchRowModel speciesBatch = editor.getEditRow(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesFullAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesFullAction.java new file mode 100644 index 0000000..0feb0bd --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesFullAction.java @@ -0,0 +1,80 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; +import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ExportMultiPostActionSupport; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 + */ +public class ExportMultiPostSpeciesFullAction extends ExportMultiPostActionSupport<SpeciesFrequencyUIModel, SpeciesFrequencyUI, SpeciesFrequencyUIHandler> { + + public ExportMultiPostSpeciesFullAction(SpeciesFrequencyUIHandler handler) { + super(handler); + } + + @Override + protected String getFileExtension() { + return "tuttiSpeciesBatchFull"; + } + + @Override + protected String getFileExtensionDescription() { + return t("tutti.common.file.tuttiSpeciesBatchFull"); + } + + @Override + protected String getFileChooserTitle() { + return t("tutti.editSpeciesFrequency.action.exportMultiPostFull.destinationFile.title"); + } + + @Override + protected String getFileChooserButton() { + return t("tutti.editSpeciesFrequency.action.exportMultiPostFull.destinationFile.button"); + } + + @Override + protected String getSuccessMessage(File file) { + return t("tutti.editSpeciesFrequency.action.exportMultiPostFull.success", file); + } + + @Override + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + SpeciesBatch speciesBatch = getModel().getBatch().toEntity(); + multiPostImportExportService.exportSpeciesBatch(file, fishingOperation,speciesBatch, true, true); + + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java new file mode 100644 index 0000000..0357cae --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesOnlyFrequenciesAction.java @@ -0,0 +1,80 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; +import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ExportMultiPostActionSupport; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 + */ +public class ExportMultiPostSpeciesOnlyFrequenciesAction extends ExportMultiPostActionSupport<SpeciesFrequencyUIModel, SpeciesFrequencyUI, SpeciesFrequencyUIHandler> { + + public ExportMultiPostSpeciesOnlyFrequenciesAction(SpeciesFrequencyUIHandler handler) { + super(handler); + } + + @Override + protected String getFileExtension() { + return "tuttiSpeciesBatchOnlyFrequencies"; + } + + @Override + protected String getFileExtensionDescription() { + return t("tutti.common.file.tuttiSpeciesBatchOnlyFrequencies"); + } + + @Override + protected String getFileChooserTitle() { + return t("tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.destinationFile.title"); + } + + @Override + protected String getFileChooserButton() { + return t("tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.destinationFile.button"); + } + + @Override + protected String getSuccessMessage(File file) { + return t("tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.success", file); + } + + @Override + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + SpeciesBatch speciesBatch = getModel().getBatch().toEntity(); + multiPostImportExportService.exportSpeciesBatch(file, fishingOperation,speciesBatch, true, false); + + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java new file mode 100644 index 0000000..b951483 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesOnlyIndividualObservationsAction.java @@ -0,0 +1,80 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; +import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ExportMultiPostActionSupport; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 + */ +public class ExportMultiPostSpeciesOnlyIndividualObservationsAction extends ExportMultiPostActionSupport<SpeciesFrequencyUIModel, SpeciesFrequencyUI, SpeciesFrequencyUIHandler> { + + public ExportMultiPostSpeciesOnlyIndividualObservationsAction(SpeciesFrequencyUIHandler handler) { + super(handler); + } + + @Override + protected String getFileExtension() { + return "tuttiSpeciesBatchOnlyIndividualObservations"; + } + + @Override + protected String getFileExtensionDescription() { + return t("tutti.common.file.tuttiSpeciesBatchOnlyIndividualObservations"); + } + + @Override + protected String getFileChooserTitle() { + return t("tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.destinationFile.title"); + } + + @Override + protected String getFileChooserButton() { + return t("tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.destinationFile.button"); + } + + @Override + protected String getSuccessMessage(File file) { + return t("tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.success", file); + } + + @Override + protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { + + SpeciesBatch speciesBatch = getModel().getBatch().toEntity(); + multiPostImportExportService.exportSpeciesBatch(file, fishingOperation,speciesBatch, false, true); + + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesFullAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesFullAction.java new file mode 100644 index 0000000..7603b0b --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesFullAction.java @@ -0,0 +1,76 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 + */ +public class ImportMultiPostSpeciesFullAction extends ImportMultiPostSpeciesSupportAction { + + public ImportMultiPostSpeciesFullAction(SpeciesFrequencyUIHandler handler) { + super(handler); + } + + @Override + public boolean isImportFrequencies() { + return true; + } + + @Override + public boolean isImportIndivudalObservations() { + return true; + } + + @Override + protected String getFileExtension() { + return "tuttiSpeciesBatchFull"; + } + + @Override + protected String getFileExtensionDescription() { + return t("tutti.common.file.tuttiSpeciesBatchFull"); + } + + @Override + protected String getFileChooserTitle() { + return t("tutti.editSpeciesFrequency.action.importMultiPostFull.sourceFile.title"); + } + + @Override + protected String getFileChooserButton() { + return t("tutti.editSpeciesFrequency.action.importMultiPostFull.sourceFile.button"); + } + + @Override + protected String getSuccessMessage(File file) { + return t("tutti.editSpeciesFrequency.action.importMultiPostFull.success", file); + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java new file mode 100644 index 0000000..4375e7b --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesOnlyFrequenciesAction.java @@ -0,0 +1,76 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 + */ +public class ImportMultiPostSpeciesOnlyFrequenciesAction extends ImportMultiPostSpeciesSupportAction { + + public ImportMultiPostSpeciesOnlyFrequenciesAction(SpeciesFrequencyUIHandler handler) { + super(handler); + } + + @Override + public boolean isImportFrequencies() { + return true; + } + + @Override + public boolean isImportIndivudalObservations() { + return false; + } + + @Override + protected String getFileExtension() { + return "tuttiSpeciesBatchOnlyFrequencies"; + } + + @Override + protected String getFileExtensionDescription() { + return t("tutti.common.file.tuttiSpeciesBatchOnlyFrequencies"); + } + + @Override + protected String getFileChooserTitle() { + return t("tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.sourceFile.title"); + } + + @Override + protected String getFileChooserButton() { + return t("tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.sourceFile.button"); + } + + @Override + protected String getSuccessMessage(File file) { + return t("tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.success", file); + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java new file mode 100644 index 0000000..50afb5e --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesOnlyIndividualObservationsAction.java @@ -0,0 +1,76 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; + +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 + */ +public class ImportMultiPostSpeciesOnlyIndividualObservationsAction extends ImportMultiPostSpeciesSupportAction { + + public ImportMultiPostSpeciesOnlyIndividualObservationsAction(SpeciesFrequencyUIHandler handler) { + super(handler); + } + + @Override + public boolean isImportFrequencies() { + return false; + } + + @Override + public boolean isImportIndivudalObservations() { + return true; + } + + @Override + protected String getFileExtension() { + return "tuttiSpeciesBatchOnlyIndividualObservations"; + } + + @Override + protected String getFileExtensionDescription() { + return t("tutti.common.file.tuttiSpeciesBatchOnlyIndividualObservations"); + } + + @Override + protected String getFileChooserTitle() { + return t("tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.sourceFile.title"); + } + + @Override + protected String getFileChooserButton() { + return t("tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.sourceFile.button"); + } + + @Override + protected String getSuccessMessage(File file) { + return t("tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.success", file); + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java new file mode 100644 index 0000000..13cbea6 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java @@ -0,0 +1,97 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; +import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ImportMultiPostActionSupport; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyCellComponent; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.File; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 + */ +public abstract class ImportMultiPostSpeciesSupportAction extends ImportMultiPostActionSupport<SpeciesFrequencyUIModel, SpeciesFrequencyUI, SpeciesFrequencyUIHandler> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ImportMultiPostSpeciesSupportAction.class); + + protected ImportMultiPostSpeciesSupportAction(SpeciesFrequencyUIHandler handler) { + super(handler); + } + + public abstract boolean isImportFrequencies(); + + public abstract boolean isImportIndivudalObservations(); + + @Override + protected final Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { + + SpeciesBatch speciesBatch = getModel().getBatch().toEntity(); + return multiPostImportExportService.importSpeciesBatch(file, operation, speciesBatch, isImportFrequencies(), isImportIndivudalObservations()); + + } + + @Override + public final void postSuccessAction() { + super.postSuccessAction(); + + SpeciesFrequencyCellComponent.FrequencyCellEditor frequencyEditor = getHandler().getFrequencyEditor(); + SpeciesBatchRowModel editRow = frequencyEditor.getEditRow(); + + Integer speciesBatchId = editRow.getIdAsInt(); + PersistenceService persistenceService = getContext().getPersistenceService(); + + List<SpeciesBatchFrequency> frequencies = persistenceService.getAllSpeciesBatchFrequency(speciesBatchId); + if (log.isInfoEnabled()) { + log.info("[SpeciesBatch: " + speciesBatchId + "] Frequencies: " + frequencies.size()); + } + editRow.loadFrequencies(frequencies); + + List<IndividualObservationBatch> individualObservations = persistenceService.getAllIndividualObservationBatchsForBatch(speciesBatchId); + editRow.loadIndividualObservations(getConfig().getIndividualObservationWeightUnit(), + getDataContext().getDefaultIndividualObservationCaracteristics(), + individualObservations); + + if (log.isInfoEnabled()) { + log.info("[SpeciesBatch: " + speciesBatchId + "] Individual Observations: " + individualObservations.size()); + } + getHandler().editBatch(frequencyEditor, Optional.empty()); + + } +} 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 05034cc..15e2788 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.tuttiSpeciesBatchFull= +tutti.common.file.tuttiSpeciesBatchOnlyFrequencies= +tutti.common.file.tuttiSpeciesBatchOnlyIndividualObservations= tutti.common.file.tuttiSpeciesFull= tutti.common.file.tuttiSpeciesOnlyFrequencies= tutti.common.file.tuttiSpeciesOnlyIndividualObservations= @@ -1480,9 +1483,27 @@ tutti.editSpeciesFrequencies.action.addLengthStepCaracteristic.tip= tutti.editSpeciesFrequencies.action.cancel= tutti.editSpeciesFrequencies.action.cancel.mnemonic= tutti.editSpeciesFrequencies.action.cancel.tip= +tutti.editSpeciesFrequencies.action.exportMultiPostFull= +tutti.editSpeciesFrequencies.action.exportMultiPostFull.mnemonic= +tutti.editSpeciesFrequencies.action.exportMultiPostFull.tip= +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies= +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies.mnemonic= +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies.tip= +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations= +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations.mnemonic= +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations.tip= tutti.editSpeciesFrequencies.action.generate= tutti.editSpeciesFrequencies.action.generate.mnemonic= tutti.editSpeciesFrequencies.action.generate.tip= +tutti.editSpeciesFrequencies.action.importMultiPostFull= +tutti.editSpeciesFrequencies.action.importMultiPostFull.mnemonic= +tutti.editSpeciesFrequencies.action.importMultiPostFull.tip= +tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies= +tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies.mnemonic= +tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies.tip= +tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations= +tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations.mnemonic= +tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations.tip= tutti.editSpeciesFrequencies.action.removeObservation= tutti.editSpeciesFrequencies.action.removeObservation.confirm.message= tutti.editSpeciesFrequencies.action.removeObservation.mnemonic= @@ -1579,6 +1600,24 @@ tutti.editSpeciesFrequencies.table.header.weight= tutti.editSpeciesFrequencies.title= tutti.editSpeciesFrequencies.title.addLengthStepCaracteristic= tutti.editSpeciesFrequencies.unkownStepUnit= +tutti.editSpeciesFrequency.action.exportMultiPostFull.destinationFile.button= +tutti.editSpeciesFrequency.action.exportMultiPostFull.destinationFile.title= +tutti.editSpeciesFrequency.action.exportMultiPostFull.success= +tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.destinationFile.button= +tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.destinationFile.title= +tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.success= +tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.destinationFile.button= +tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.destinationFile.title= +tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.success= +tutti.editSpeciesFrequency.action.importMultiPostFull.sourceFile.button= +tutti.editSpeciesFrequency.action.importMultiPostFull.sourceFile.title= +tutti.editSpeciesFrequency.action.importMultiPostFull.success= +tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.sourceFile.button= +tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.sourceFile.title= +tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.success= +tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.sourceFile.button= +tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.sourceFile.title= +tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.success= tutti.error.application.already.started= tutti.error.delete.startActionFile=Could not delete start action file %s tutti.error.read.startActionFile=Could not read start action file content %s 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 5d2675f..f5e2d2c 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 @@ -92,6 +92,9 @@ tutti.common.file.tuttiAccidental=Fichier d'import/export (multi-poste) des lots tutti.common.file.tuttiBenthos=Fichier d'import/export (multi-poste) des lots de benthos tutti.common.file.tuttiCatch=Fichier d'import/export (multi-poste) des poids de capture tutti.common.file.tuttiMarineLitter=Fichier d'import/export (multi-poste) des lots de déchets +tutti.common.file.tuttiSpeciesBatchFull=Fichier d'import/export (multi-poste) des mensurations et observations individuelles d'un lot +tutti.common.file.tuttiSpeciesBatchOnlyFrequencies=Fichier d'import/export (multi-poste) des mensurations d'un lot +tutti.common.file.tuttiSpeciesBatchOnlyIndividualObservations=Fichier d'import/export (multi-poste) des observations individuelles d'un lot tutti.common.file.tuttiSpeciesFull=Fichier d'import/export (multi-poste) des lots d'espèces, mensurations et observations individuelles tutti.common.file.tuttiSpeciesOnlyFrequencies=Fichier d'import/export (multi-poste) des lots d'espèces et mensurations tutti.common.file.tuttiSpeciesOnlyIndividualObservations=Fichier d'import/export (multi-poste) des lots d'espèces et observations individuelles @@ -1238,7 +1241,7 @@ tutti.editSpeciesBatch.action.exportMultiPostFull=Lots d'espèces, mensurations 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.success=Les lots d'espèces, mensurations et observations individuelles 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 @@ -1261,8 +1264,6 @@ 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.sourceFile.button= -tutti.editSpeciesBatch.action.importMultiPost.success= 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 @@ -1383,9 +1384,27 @@ tutti.editSpeciesFrequencies.action.addLengthStepCaracteristic.tip=Sélectionner tutti.editSpeciesFrequencies.action.cancel=Annuler tutti.editSpeciesFrequencies.action.cancel.mnemonic=A tutti.editSpeciesFrequencies.action.cancel.tip=Annuler l'édition des mensurations +tutti.editSpeciesFrequencies.action.exportMultiPostFull=Mensurations et observations individuelles +tutti.editSpeciesFrequencies.action.exportMultiPostFull.mnemonic=e +tutti.editSpeciesFrequencies.action.exportMultiPostFull.tip=Exporter les mensurations et observations individuelles du lot pour les importer sur le poste maître +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies=Mensurations +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies.mnemonic=M +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyFrequencies.tip=Exporter les mensurations du lot pour les importer sur le poste maître +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations=Observations individuelles +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations.mnemonic=O +tutti.editSpeciesFrequencies.action.exportMultiPostOnlyIndividualObservations.tip=Exporter les observations individuelles du lot pour les importer sur le poste maître tutti.editSpeciesFrequencies.action.generate=Générer tutti.editSpeciesFrequencies.action.generate.mnemonic=G tutti.editSpeciesFrequencies.action.generate.tip=Générer les mensurations +tutti.editSpeciesFrequencies.action.importMultiPostFull=Mensurations et observations individuelles +tutti.editSpeciesFrequencies.action.importMultiPostFull.mnemonic=e +tutti.editSpeciesFrequencies.action.importMultiPostFull.tip=Importer les mensurations et observations individuelles du lot créés sur un poste satellite +tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies=Mensurations +tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies.mnemonic=M +tutti.editSpeciesFrequencies.action.importMultiPostOnlyFrequencies.tip=Importer les mensurations du lot créés sur un poste satellite +tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations=Observations individuelles +tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations.mnemonic=O +tutti.editSpeciesFrequencies.action.importMultiPostOnlyIndividualObservations.tip=Importer les observations individuelles du lot créés sur un poste satellite tutti.editSpeciesFrequencies.action.removeObservation=Supprimer tutti.editSpeciesFrequencies.action.removeObservation.confirm.message=<html>Vous êtes sur le point de supprimer l'observation sélectionnée.<hr/>Êtes-vous sur de vouloir la supprimer ?</html> tutti.editSpeciesFrequencies.action.removeObservation.mnemonic=S @@ -1468,6 +1487,24 @@ tutti.editSpeciesFrequencies.table.header.weight=Poids observé tutti.editSpeciesFrequencies.title=Mensuration tutti.editSpeciesFrequencies.title.addLengthStepCaracteristic=Choisir une autre caractéristique tutti.editSpeciesFrequencies.unkownStepUnit=NA +tutti.editSpeciesFrequency.action.exportMultiPostFull.destinationFile.button=Exporter +tutti.editSpeciesFrequency.action.exportMultiPostFull.destinationFile.title=Exporter les mensurations et observations individuelles +tutti.editSpeciesFrequency.action.exportMultiPostFull.success=Les mensurations et observations individuelles du lot ont été exportés dans le fichier %s +tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.destinationFile.button=Exporter +tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.destinationFile.title=Exporter les mensurations +tutti.editSpeciesFrequency.action.exportMultiPostOnlyFrequencies.success=Les mensurations du lot ont été exportés dans le fichier %s +tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.destinationFile.button=Exporter +tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.destinationFile.title=Exporter les observations individuelles +tutti.editSpeciesFrequency.action.exportMultiPostOnlyIndividualObservations.success=Les observations individuelles du lot ont été exportés dans le fichier %s +tutti.editSpeciesFrequency.action.importMultiPostFull.sourceFile.button=Importer +tutti.editSpeciesFrequency.action.importMultiPostFull.sourceFile.title=Importer les mensurations et observations individuelles +tutti.editSpeciesFrequency.action.importMultiPostFull.success=Les mensurations et observations individuelles du lot ont été importées depuis le fichier %s +tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.sourceFile.button=Importer +tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.sourceFile.title=Importer les mensurations +tutti.editSpeciesFrequency.action.importMultiPostOnlyFrequencies.success=Les mensurations du lot ont été importées depuis le fichier %s +tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.sourceFile.button=Importer +tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.sourceFile.title=Importer les observations individuelles +tutti.editSpeciesFrequency.action.importMultiPostOnlyIndividualObservations.success=Les observations individuelles du lot ont été importées depuis le fichier %s tutti.error.application.already.started=<html><body>L'application est déjà démarrée.<br/>Si ce n'était pas le cas, veuillez supprimer le fichier <strong>tutti.lock</strong> présent dans le répertoire de l'outil avant de lancer l'applicatif.</body></html> tutti.error.delete.startActionFile=Impossible de supprimer le fichier %s tutti.error.read.startActionFile=Impossible de lire le contenu du fichier %s -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 6181678977b183757cd7aa9aa10137f334b776d4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 16:23:04 2016 +0100 Ajout avertissement avant import multi-poste si des données existent (See #8119) --- .../ImportMultiPostSpeciesSupportAction.java | 60 ++++++++++++++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 4 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 5 ++ 3 files changed, 69 insertions(+) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java index 13cbea6..dc1c8b0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ImportMultiPostSpeciesSupportAction.java @@ -36,12 +36,16 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.Spe import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; +import javax.swing.JOptionPane; import java.io.File; import java.util.List; import java.util.Map; import java.util.Optional; +import static org.nuiton.i18n.I18n.t; + /** * @author Tony Chemit - chemit@codelutin.com * @since 4.5 @@ -60,6 +64,62 @@ public abstract class ImportMultiPostSpeciesSupportAction extends ImportMultiPos public abstract boolean isImportIndivudalObservations(); @Override + public boolean prepareAction() throws Exception { + boolean doAction = super.prepareAction(); + + if (doAction) { + + String message = "<ul>"; + boolean ask = false; + if (isImportFrequencies() && getModel().getRowCount() > 0) { + ask = true; + message = "<li>" + t("tutti.askBeforeMultiPostImport.frequencies.message") + "</li>"; + } + + if (isImportIndivudalObservations() && getModel().getIndividualObservationRows().size() > 0) { + ask = true; + message += "<li>" + t("tutti.askBeforeMultiPostImport.frequencies.message") + "</li>"; + } + message += "</ul>"; + + if (ask) { + + String htmlMessage = String.format(AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askBeforeMultiPostImport.message", message), + t("tutti.askBeforeMultiPostImport.help")); + + int saveResponse = JOptionPane.showOptionDialog( + getHandler().getTopestUI(), + htmlMessage, + t("tutti.askBeforeMultiPostImport.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + new String[]{t("tutti.option.cleanAndImport"), t("tutti.option.cancelImport")}, + t("tutti.option.cleanAndImport")); + + switch (saveResponse) { + case 0: + + // do action + doAction = true; + break; + case 1: + + // cancel import + doAction = false; + + } + + + } + } + + return doAction; + + } + + @Override protected final Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { SpeciesBatch speciesBatch = getModel().getBatch().toEntity(); 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 15e2788..28567e9 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 @@ -45,6 +45,10 @@ tutti.applicationUpdater.updateDone.deleteDirectory.caches.error= tutti.applicationUpdater.updateDone.deleteDirectory.dbConf.error= tutti.applicationUpdater.updateDone.deleteDirectory.enum.error= tutti.applicationUpdater.updateDone.deleteDirectory.i18n.error= +tutti.askBeforeMultiPostImport.frequencies.message= +tutti.askBeforeMultiPostImport.help= +tutti.askBeforeMultiPostImport.message= +tutti.askBeforeMultiPostImport.title= tutti.askToSaveCatch.help= tutti.askToSaveCatch.message= tutti.askToSaveCatch.title= 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 f5e2d2c..c191c3f 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 @@ -30,6 +30,11 @@ tutti.applicationUpdater.updateDone.deleteDirectory.caches.error=Erreur lors de tutti.applicationUpdater.updateDone.deleteDirectory.dbConf.error=Erreur lors de la suppression du dossier de configuration de base de données tutti.applicationUpdater.updateDone.deleteDirectory.enum.error=Erreur lors de la suppression du dossier d'énumération tutti.applicationUpdater.updateDone.deleteDirectory.i18n.error=Erreur lors de la suppression du dossier d'internationalisation +tutti.askBeforeMultiPostImport.frequencies.message=Des mensurations existent +tutti.askBeforeMultiPostImport.help=Que voulez-vous faire ?<ul><li><strong>Annuler l'import</strong> pour annuler l'opération d'import</li><li><strong>Réaliser l'import</strong> pour supprimer les données existantes puis réaliser l'import</li></ul> +tutti.askBeforeMultiPostImport.individualObservations.message=Des observations individuelles existent +tutti.askBeforeMultiPostImport.message=%s<br/>Elles seront supprimées avant l'import. +tutti.askBeforeMultiPostImport.title=Des données existent; elles seront supprimées avant l'import ! tutti.askToSaveCatch.message=Des modifications sur la capture ne sont pas enregistrées tutti.askToSaveCatch.title=Modifications non enregistrées sur la capture tutti.askToSaveCatchBeforeExport.help=Que voulez-vous faire ?<ul><li><strong>Annuler l'export</strong> pour annuler l'opération d'export</li><li><strong>Ne pas enregistrer les modifications</strong> pour réaliser l'export sur les données non modifiées</li><li><strong>Enregistrer les modifications</strong> pour enregistrer les modifications puis réaliser l'export</li></ul> -- 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 18ce0bf9f235df1c410a8598c83550751731a900 Merge: 9f19d6d 6181678 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Mar 14 16:23:07 2016 +0100 Fixes #8119 Merge branch 'feature/8119' into develop .../catches/multipost/MultiPostExportContext.java | 105 +++-- .../catches/multipost/MultiPostExportService.java | 161 ++++--- .../catches/multipost/MultiPostImportContext.java | 6 +- .../catches/multipost/MultiPostImportService.java | 481 +++++++++++++++++---- .../{ => csv}/AbstractFishingOperationRow.java | 2 +- .../AbstractFishingOperationRowModel.java | 12 +- .../multipost/{ => csv}/AccidentalCatchRow.java | 13 +- .../{ => csv}/AccidentalCatchRowModel.java | 28 +- .../catches/multipost/{ => csv}/AttachmentRow.java | 9 +- .../multipost/{ => csv}/AttachmentRowModel.java | 19 +- .../multipost/{ => csv}/CaracteristicRow.java | 8 +- .../multipost/{ => csv}/CaracteristicRowModel.java | 19 +- .../catches/multipost/{ => csv}/CatchBatchRow.java | 2 +- .../multipost/{ => csv}/CatchBatchRowModel.java | 5 +- .../multipost/{ => csv}/CatchFrequencyRow.java | 22 +- .../{ => csv}/CatchFrequencyRowModel.java | 22 +- .../catches/multipost/{ => csv}/CatchRow.java | 15 +- .../catches/multipost/{ => csv}/CatchRowModel.java | 21 +- .../multipost/{ => csv}/CatchWeightsRow.java | 2 +- .../multipost/{ => csv}/CatchWeightsRowModel.java | 5 +- .../multipost/{ => csv}/FishingOperationRow.java | 2 +- .../{ => csv}/FishingOperationRowModel.java | 6 +- .../{ => csv}/IndividualObservationRow.java | 14 +- .../{ => csv}/IndividualObservationRowModel.java | 19 +- .../multipost/{ => csv}/MarineLitterRow.java | 11 +- .../multipost/{ => csv}/MarineLitterRowModel.java | 19 +- .../multipost/{ => csv}/MarineLitterWeightRow.java | 2 +- .../{ => csv}/MarineLitterWeightRowModel.java | 5 +- .../resources/i18n/tutti-service_en_GB.properties | 1 + .../resources/i18n/tutti-service_fr_FR.properties | 1 + .../filtered-resources/tutti-help-fr.properties | 31 +- .../content/operation/catches/EditCatchesUI.jcss | 4 + .../operation/catches/EditCatchesUIHandler.java | 3 +- .../actions/ImportMultiPostActionSupport.java | 2 +- .../catches/species/SpeciesBatchRowModel.java | 22 +- .../actions/ExportMultiPostSpeciesFullAction.java | 4 +- ...xportMultiPostSpeciesOnlyFrequenciesAction.java | 4 +- ...ostSpeciesOnlyIndividualObservationsAction.java | 4 +- .../actions/ImportMultiPostSpeciesFullAction.java | 62 +-- ...mportMultiPostSpeciesOnlyFrequenciesAction.java | 62 +-- ...ostSpeciesOnlyIndividualObservationsAction.java | 62 +-- ...va => ImportMultiPostSpeciesSupportAction.java} | 40 +- .../frequency/SpeciesFrequencyCellComponent.java | 2 +- .../species/frequency/SpeciesFrequencyUI.jaxx | 17 + .../species/frequency/SpeciesFrequencyUI.jcss | 88 ++++ .../frequency/SpeciesFrequencyUIHandler.java | 11 +- .../actions/ExportMultiPostSpeciesFullAction.java | 30 +- ...xportMultiPostSpeciesOnlyFrequenciesAction.java | 30 +- ...ostSpeciesOnlyIndividualObservationsAction.java | 30 +- .../actions/ImportMultiPostSpeciesFullAction.java} | 44 +- ...portMultiPostSpeciesOnlyFrequenciesAction.java} | 44 +- ...stSpeciesOnlyIndividualObservationsAction.java} | 44 +- .../ImportMultiPostSpeciesSupportAction.java | 157 +++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 43 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 48 +- 55 files changed, 1259 insertions(+), 666 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm