This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git from ec2d2c0 Ne pas fermer de nouveau l'écran des mensurations si on change d'onglet quand on change de trait :(... new 5d02bbe Exporter le mode de recopie des observations indidividuelles (See #8252) new a77918f Lorsque l'on créé des observations individuelles, on les renvoient dans l'ordre d'entrée new 0f1ccc2 Suppression du cache sur les écrans d'import/export générique et de rapport new 7167329 Passer le trait pour persister les observations individuelles + gestion du cache potentiellement non présent lors de la sauvegarde d'un trait sur l'import générique new 2d72c41 Modification du modèle d'import/export des observations individuelles pour y ajouter l'id du lot + le rankOrder + impacts sur l'export (See #8252) new e9b7163 Import des observations individuelles ok (See #8252) new 241feac Bien export la code de prélèvement aussi (See #8252) new 3caec5e On préfère explicitement mettre le code de prélèvement plutôt que de l'importer en lâche via la map de caractéristiques (See #8252) new 8f8f477 Livrable #8252 Merge branch 'feature/8252' into develop The 9 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 8f8f477ad999354237942ab1c3f5f58d094cbad5 Merge: ec2d2c0 3caec5e Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 14:00:31 2016 +0200 Livrable #8252 Merge branch 'feature/8252' into develop commit 3caec5e7725ddf94df985d387f017f2bddacb644 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 14:00:16 2016 +0200 On préfère explicitement mettre le code de prélèvement plutôt que de l'importer en lâche via la map de caractéristiques (See #8252) commit 241feac89b37de70214c483a02ffc6b938d78df5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 13:46:40 2016 +0200 Bien export la code de prélèvement aussi (See #8252) commit e9b7163e496e96ff5b1f5051ef1a8230427e243d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 13:35:09 2016 +0200 Import des observations individuelles ok (See #8252) commit 2d72c41595dab9f1be732aa646f40ae31be5496e Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 12:23:48 2016 +0200 Modification du modèle d'import/export des observations individuelles pour y ajouter l'id du lot + le rankOrder + impacts sur l'export (See #8252) commit 7167329cee29152b47a53fd7d6457a3e74300d14 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 12:16:30 2016 +0200 Passer le trait pour persister les observations individuelles + gestion du cache potentiellement non présent lors de la sauvegarde d'un trait sur l'import générique commit 0f1ccc22d9e18ff1f85074407b7c5ce5940350e2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 09:14:33 2016 +0200 Suppression du cache sur les écrans d'import/export générique et de rapport commit a77918f322811877c4dd5b0d84b352a030809ece Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 08:42:52 2016 +0200 Lorsque l'on créé des observations individuelles, on les renvoient dans l'ordre d'entrée commit 5d02bbe712d3a3571a85083a5bda07a575bbe664 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 26 16:18:50 2016 +0200 Exporter le mode de recopie des observations indidividuelles (See #8252) Summary of changes: .../tutti/persistence/TuttiPersistenceImpl.java | 4 +- .../persistence/TuttiPersistenceNoDbImpl.java | 2 +- ...dividualObservationBatchPersistenceService.java | 3 +- ...dualObservationBatchPersistenceServiceImpl.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 49 ++++++++------- .../catches/multipost/MultiPostImportService.java | 2 +- .../genericformat/GenericFormatExportContext.java | 10 ++- .../GenericFormatExportOperationContext.java | 16 ++++- .../GenericFormatImportOperationContext.java | 24 +++++++- .../genericformat/GenericFormatImportService.java | 2 +- .../GenericformatImportPersistenceHelper.java | 42 +++++++++++++ .../CsvConsumerForIndividualObservation.java | 23 +++---- .../csv/IndividualObservationModel.java | 11 +++- .../csv/IndividualObservationRow.java | 20 +++++- .../importactions/ImportCatchAction.java | 3 + .../ImportIndividualObservationAction.java | 61 +++++++++++++----- .../ValidateIndividualObservationAction.java | 72 +++++++++++++++++++++- .../CsvProducerForIndividualObservation.java | 21 ++++++- .../actions/OpenGenericFormatExportScreen.java | 3 + .../actions/OpenGenericFormatImportScreen.java | 3 + .../content/actions/OpenReportScreenAction.java | 3 + 21 files changed, 306 insertions(+), 70 deletions(-) -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit 5d02bbe712d3a3571a85083a5bda07a575bbe664 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 26 16:18:50 2016 +0200 Exporter le mode de recopie des observations indidividuelles (See #8252) --- .../service/genericformat/GenericFormatExportContext.java | 6 +++++- .../genericformat/GenericFormatExportOperationContext.java | 9 ++++++++- .../producer/CsvProducerForIndividualObservation.java | 11 +++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java index 5d87c67..c13c648 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java @@ -96,6 +96,8 @@ public class GenericFormatExportContext implements Closeable, Iterable<GenericFo private final Caracteristic genderCaracteristic; + private final Caracteristic copyIndividualObservationModeCaracteristic; + private final Caracteristic weightMeasuredCaracteristic; private final Caracteristic pmfmIdCaracteristic; @@ -154,6 +156,7 @@ public class GenericFormatExportContext implements Closeable, Iterable<GenericFo this.pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); this.deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); this.genderCaracteristic = persistenceService.getSexCaracteristic(); + this.copyIndividualObservationModeCaracteristic = persistenceService.getCopyIndividualObservationModeCaracteristic(); this.cruiseContexts = new LinkedHashSet<>(); List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); @@ -323,7 +326,8 @@ public class GenericFormatExportContext implements Closeable, Iterable<GenericFo weightMeasuredCaracteristic, pmfmIdCaracteristic, deadOrAliveCaracteristic, - genderCaracteristic); + genderCaracteristic, + copyIndividualObservationModeCaracteristic); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java index e694318..b00c996 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java @@ -89,6 +89,7 @@ public class GenericFormatExportOperationContext { protected final Caracteristic deadOrAliveCaracteristic; protected final Caracteristic genderCaracteristic; + private final Caracteristic copyIndividualObservationModeCaracteristic; private final SampleCategoryModel sampleCategoryModel; @@ -117,7 +118,8 @@ public class GenericFormatExportOperationContext { Caracteristic weightMeasuredCaracteristic, Caracteristic pmfmIdCaracteristic, Caracteristic deadOrAliveCaracteristic, - Caracteristic genderCaracteristic) { + Caracteristic genderCaracteristic, + Caracteristic copyIndividualObservationModeCaracteristic) { this.cruise = cruise; this.operation = operation; this.operationLabel = operationLabel; @@ -127,6 +129,7 @@ public class GenericFormatExportOperationContext { this.pmfmIdCaracteristic = pmfmIdCaracteristic; this.deadOrAliveCaracteristic = deadOrAliveCaracteristic; this.genderCaracteristic = genderCaracteristic; + this.copyIndividualObservationModeCaracteristic = copyIndividualObservationModeCaracteristic; this.attachmentRows = new ArrayList<>(); Integer operationId = operation.getIdAsInt(); @@ -248,6 +251,10 @@ public class GenericFormatExportOperationContext { return genderCaracteristic; } + public Caracteristic getCopyIndividualObservationModeCaracteristic() { + return copyIndividualObservationModeCaracteristic; + } + public List<AccidentalBatch> getAccidentalBatches() { return accidentalBatches; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java index bff1089..ddf3cf7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java @@ -25,6 +25,7 @@ package fr.ifremer.tutti.service.genericformat.producer; */ import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.csv.CsvProducer; @@ -39,6 +40,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Created on 2/6/15. @@ -78,6 +80,15 @@ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualO operationExportContext.getWeightMeasuredCaracteristic(), child.getWeight()); + Caracteristic copyIndividualObservationModeCaracteristic = operationExportContext.getCopyIndividualObservationModeCaracteristic(); + CopyIndividualObservationMode copyIndividualObservationMode = child.getCopyIndividualObservationMode(); + Objects.requireNonNull(copyIndividualObservationMode, "Mode de recopie null sur l'observation individuelle " + child.getId()); + addCaracteristicRow(operationExportContext, + rows, + child, + copyIndividualObservationModeCaracteristic, + copyIndividualObservationMode.getQualitativeValue(copyIndividualObservationModeCaracteristic)); + if (child.getLengthStepCaracteristic() != null) { addCaracteristicRow(operationExportContext, rows, -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit a77918f322811877c4dd5b0d84b352a030809ece Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 08:42:52 2016 +0200 Lorsque l'on créé des observations individuelles, on les renvoient dans l'ordre d'entrée --- .../main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java | 2 +- .../java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java | 2 +- .../service/IndividualObservationBatchPersistenceService.java | 2 +- .../service/IndividualObservationBatchPersistenceServiceImpl.java | 2 +- .../src/main/java/fr/ifremer/tutti/service/PersistenceService.java | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index b2cf9ab..5945e3a 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -1378,7 +1378,7 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public Collection<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { + public List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { return getIndividualObservationBatchService().createIndividualObservationBatches(individualObservations); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java index ea0eba0..edd4a60 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java @@ -927,7 +927,7 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override - public Collection<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { + public List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { throw notImplemented(); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java index 75b27f2..6ad5509 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java @@ -55,7 +55,7 @@ public interface IndividualObservationBatchPersistenceService extends TuttiPersi boolean isSamplingCodeAvailable(Integer cruiseId, Integer referenceTaxonId, String samplingCodeSuffix); @Transactional(readOnly = false) - Collection<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations); + List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations); @Transactional(readOnly = false) List<IndividualObservationBatch> saveBatchIndividualObservation(Integer batchId, List<IndividualObservationBatch> individualObservation); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java index 3af20f5..aad5320 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java @@ -200,7 +200,7 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe } @Override - public Collection<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { + public List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { Preconditions.checkNotNull(individualObservations); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index 3318223..c6d1e67 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -1689,7 +1689,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public Collection<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { + public List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { Optional<CruiseCache> optionalCruiseCache = getOptionalCruiseCache(); @@ -1708,7 +1708,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } - Collection<IndividualObservationBatch> individualObservationBatches = driver.createIndividualObservationBatches(individualObservations); + List<IndividualObservationBatch> individualObservationBatches = driver.createIndividualObservationBatches(individualObservations); if (optionalCruiseCache.isPresent()) { -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit 0f1ccc22d9e18ff1f85074407b7c5ce5940350e2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 09:14:33 2016 +0200 Suppression du cache sur les écrans d'import/export générique et de rapport --- .../tutti/ui/swing/content/actions/OpenGenericFormatExportScreen.java | 3 +++ .../tutti/ui/swing/content/actions/OpenGenericFormatImportScreen.java | 3 +++ .../ifremer/tutti/ui/swing/content/actions/OpenReportScreenAction.java | 3 +++ 3 files changed, 9 insertions(+) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenGenericFormatExportScreen.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenGenericFormatExportScreen.java index fbd71c6..fac66ce 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenGenericFormatExportScreen.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenGenericFormatExportScreen.java @@ -42,6 +42,9 @@ public class OpenGenericFormatExportScreen extends AbstractChangeScreenAction { @Override public void doAction() throws Exception { + // on ne veut pas de cache sur cet écran + getDataContext().closeCruiseCache(); + loadReferantials(true); super.doAction(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenGenericFormatImportScreen.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenGenericFormatImportScreen.java index 1b630c7..d5aa002 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenGenericFormatImportScreen.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenGenericFormatImportScreen.java @@ -42,6 +42,9 @@ public class OpenGenericFormatImportScreen extends AbstractChangeScreenAction { @Override public void doAction() throws Exception { + // on ne veut pas de cache sur cet écran + getDataContext().closeCruiseCache(); + loadReferantialsWithObsoletes(true); super.doAction(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenReportScreenAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenReportScreenAction.java index 41000fb..4042473 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenReportScreenAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/OpenReportScreenAction.java @@ -40,6 +40,9 @@ public class OpenReportScreenAction extends AbstractChangeScreenAction { @Override public void doAction() throws Exception { + // on ne veut pas de cache sur cet écran + getDataContext().closeCruiseCache(); + loadReferantials(true); super.doAction(); -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit 7167329cee29152b47a53fd7d6457a3e74300d14 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 12:16:30 2016 +0200 Passer le trait pour persister les observations individuelles + gestion du cache potentiellement non présent lors de la sauvegarde d'un trait sur l'import générique --- .../tutti/persistence/TuttiPersistenceImpl.java | 4 +- .../persistence/TuttiPersistenceNoDbImpl.java | 2 +- ...dividualObservationBatchPersistenceService.java | 3 +- ...dualObservationBatchPersistenceServiceImpl.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 49 ++++++++++++---------- .../catches/multipost/MultiPostImportService.java | 2 +- 6 files changed, 34 insertions(+), 28 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java index 5945e3a..6c49c25 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java @@ -1378,8 +1378,8 @@ public class TuttiPersistenceImpl implements TuttiPersistence { } @Override - public List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { - return getIndividualObservationBatchService().createIndividualObservationBatches(individualObservations); + public List<IndividualObservationBatch> createIndividualObservationBatches(FishingOperation fishingOperation, Collection<IndividualObservationBatch> individualObservations) { + return getIndividualObservationBatchService().createIndividualObservationBatches(fishingOperation, individualObservations); } public List<IndividualObservationBatch> saveBatchIndividualObservation(Integer batchId, diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java index edd4a60..eb4ef9b 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java @@ -927,7 +927,7 @@ public class TuttiPersistenceNoDbImpl implements TuttiPersistence { } @Override - public List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { + public List<IndividualObservationBatch> createIndividualObservationBatches(FishingOperation fishingOperation, Collection<IndividualObservationBatch> individualObservations) { throw notImplemented(); } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java index 6ad5509..d76dd77 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java @@ -23,6 +23,7 @@ package fr.ifremer.tutti.persistence.service; */ import fr.ifremer.tutti.persistence.TuttiPersistenceServiceImplementor; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import org.springframework.transaction.annotation.Transactional; @@ -55,7 +56,7 @@ public interface IndividualObservationBatchPersistenceService extends TuttiPersi boolean isSamplingCodeAvailable(Integer cruiseId, Integer referenceTaxonId, String samplingCodeSuffix); @Transactional(readOnly = false) - List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations); + List<IndividualObservationBatch> createIndividualObservationBatches(FishingOperation fishingOperation, Collection<IndividualObservationBatch> individualObservations); @Transactional(readOnly = false) List<IndividualObservationBatch> saveBatchIndividualObservation(Integer batchId, List<IndividualObservationBatch> individualObservation); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java index aad5320..bc6688c 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java @@ -200,7 +200,7 @@ public class IndividualObservationBatchPersistenceServiceImpl extends AbstractPe } @Override - public List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { + public List<IndividualObservationBatch> createIndividualObservationBatches(FishingOperation fishingOperation, Collection<IndividualObservationBatch> individualObservations) { Preconditions.checkNotNull(individualObservations); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java index c6d1e67..fdce407 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java @@ -1359,33 +1359,37 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer boolean reloadSamplingCache = false; - CruiseCache cruiseCache = optionalCruiseCache.orElseGet(null); - if (optionalCruiseCache.isPresent()) { - Optional<CruiseSamplingCache> optionalSamplingCruiseCache = cruiseCache.getSamplingCruiseCache(); + CruiseCache cruiseCache = optionalCruiseCache.get(); - if (optionalSamplingCruiseCache.isPresent()) { + if (optionalCruiseCache.isPresent()) { - // on doit vérifier si l'opération n'a pas changée de zone - CruiseSamplingCache cruiseSamplingCache = optionalSamplingCruiseCache.get(); + Optional<CruiseSamplingCache> optionalSamplingCruiseCache = cruiseCache.getSamplingCruiseCache(); - FishingOperation oldFishingOperation = getFishingOperation(bean.getIdAsInt()); + if (optionalSamplingCruiseCache.isPresent()) { - boolean zoneChanged = cruiseSamplingCache.isZoneChanged(oldFishingOperation, bean); + // on doit vérifier si l'opération n'a pas changée de zone + CruiseSamplingCache cruiseSamplingCache = optionalSamplingCruiseCache.get(); - if (zoneChanged) { + FishingOperation oldFishingOperation = getFishingOperation(bean.getIdAsInt()); - // les strates ou sous-strates ont changées, il faut recalculer le cache des échantillons - if (log.isInfoEnabled()) { - log.info("Zone has changed for fishingOperation: " + bean + ", remove fishing operation from cruise cache."); - } - reloadSamplingCache = true; + boolean zoneChanged = cruiseSamplingCache.isZoneChanged(oldFishingOperation, bean); + + if (zoneChanged) { + + // les strates ou sous-strates ont changées, il faut recalculer le cache des échantillons + if (log.isInfoEnabled()) { + log.info("Zone has changed for fishingOperation: " + bean + ", remove fishing operation from cruise cache."); + } + reloadSamplingCache = true; - cruiseSamplingCache.printInfos("Before removing fishing operation"); + cruiseSamplingCache.printInfos("Before removing fishing operation"); - List<IndividualObservationBatch> individualObservations = getAllIndividualObservationBatchsForFishingOperation(bean.getIdAsInt()); - cruiseCache.removeFishingOperation(oldFishingOperation, individualObservations); + List<IndividualObservationBatch> individualObservations = getAllIndividualObservationBatchsForFishingOperation(bean.getIdAsInt()); + cruiseCache.removeFishingOperation(oldFishingOperation, individualObservations); + + } } @@ -1395,12 +1399,14 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer FishingOperation fishingOperation = driver.saveFishingOperation(bean); - if (reloadSamplingCache) { + if (optionalCruiseCache.isPresent() && reloadSamplingCache) { if (log.isInfoEnabled()) { log.info("Zone has changed for fishingOperation: " + bean + ", recompute fishing operation from cruise cache."); } + CruiseCache cruiseCache = optionalCruiseCache.get(); + CruiseSamplingCache cruiseSamplingCache = cruiseCache.getSamplingCruiseCache().orElseGet(null); cruiseSamplingCache.printInfos("Before loading " + fishingOperation); @@ -1411,6 +1417,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer cruiseSamplingCache.printInfos("After loading " + fishingOperation); } + return fishingOperation; } @@ -1689,7 +1696,7 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } @Override - public List<IndividualObservationBatch> createIndividualObservationBatches(Collection<IndividualObservationBatch> individualObservations) { + public List<IndividualObservationBatch> createIndividualObservationBatches(FishingOperation fishingOperation, Collection<IndividualObservationBatch> individualObservations) { Optional<CruiseCache> optionalCruiseCache = getOptionalCruiseCache(); @@ -1698,7 +1705,6 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer // on supprime du cache les observation individuelles de l'opération CruiseCache cruiseCache = optionalCruiseCache.get(); - FishingOperation fishingOperation = context.getDataContext().getFishingOperation(); List<IndividualObservationBatch> individualObservationsToRemove = getAllIndividualObservationBatchsForFishingOperation(fishingOperation.getIdAsInt()); if (log.isInfoEnabled()) { @@ -1708,14 +1714,13 @@ public class PersistenceService extends AbstractTuttiService implements TuttiPer } - List<IndividualObservationBatch> individualObservationBatches = driver.createIndividualObservationBatches(individualObservations); + List<IndividualObservationBatch> individualObservationBatches = driver.createIndividualObservationBatches(fishingOperation, individualObservations); if (optionalCruiseCache.isPresent()) { // on ajoute les observation individuelles de l'opération du cache CruiseCache cruiseCache = optionalCruiseCache.get(); - FishingOperation fishingOperation = context.getDataContext().getFishingOperation(); List<IndividualObservationBatch> individualObservationsToAdd = getAllIndividualObservationBatchsForFishingOperation(fishingOperation.getIdAsInt()); if (log.isInfoEnabled()) { log.info("Add to cruise sampling cache: " + fishingOperation + " with " + individualObservationsToAdd.size() + " individual observations."); 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 efa78af..d4c0e5b 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 @@ -1322,7 +1322,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult // Persist batches - persistenceService.createIndividualObservationBatches(individualObservationsBatches.values()); + persistenceService.createIndividualObservationBatches(context.getDataContext().getFishingOperation(), individualObservationsBatches.values()); // Import attachments -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit 2d72c41595dab9f1be732aa646f40ae31be5496e Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 12:23:48 2016 +0200 Modification du modèle d'import/export des observations individuelles pour y ajouter l'id du lot + le rankOrder + impacts sur l'export (See #8252) --- .../csv/IndividualObservationModel.java | 11 +++++++++-- .../genericformat/csv/IndividualObservationRow.java | 20 ++++++++++++++++++-- .../CsvProducerForIndividualObservation.java | 4 +++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java index 9bce9a0..f388d86 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationModel.java @@ -74,9 +74,12 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newColumnForExport("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newColumnForExport("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newColumnForExport("Id_Lot", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newColumnForExport("Id_Lot", IndividualObservationBatch.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_TECHNICAL_FORMATTER); newColumnForExport("Nom_Scientifique", IndividualObservationBatch.PROPERTY_SPECIES, TuttiCsvUtil.SPECIES_FORMATTER); + + newColumnForExport("Id_Echantillon", IndividualObservationBatch.PROPERTY_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newColumnForExport("Numero_Ordre", IndividualObservationBatch.PROPERTY_RANK_ORDER, TuttiCsvUtil.PRIMITIVE_INTEGER); newColumnForExport("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newColumnForExport("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_TECHNICAL_FORMATTER); newColumnForExport("Libelle_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, TuttiCsvUtil.CARACTERISTIC_FORMATTER); @@ -85,6 +88,7 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newColumnForExport("Serie_Id", Cruise.PROPERTY_PROGRAM, TuttiCsvUtil.PROGRAM_TECHNICAL_FORMATTER); newColumnForExport("Valeur_Id", IndividualObservationRow.PROPERTY_CARACTERISTIC_VALUE, TuttiCsvUtil.CARACTERISTIC_VALUE_TECHNICAL_FORMATTER); + } protected void forImport(GenericFormatImportEntityParserFactory parserFactory) { @@ -97,9 +101,12 @@ public class IndividualObservationModel extends AbstractTuttiImportExportModel<I newMandatoryColumn("Id_Operation", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); newMandatoryColumn("Poche", FishingOperation.PROPERTY_MULTIRIG_AGGREGATION); - newMandatoryColumn("Id_Lot", IndividualObservationRow.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newMandatoryColumn("Id_Lot", IndividualObservationBatch.PROPERTY_BATCH_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); newMandatoryColumn("Code_Taxon", IndividualObservationBatch.PROPERTY_SPECIES, parserFactory.getSpeciesParser()); newIgnoredColumn("Nom_Scientifique"); + + newMandatoryColumn("Id_Echantillon", IndividualObservationBatch.PROPERTY_ID, TuttiCsvUtil.PRIMITIVE_INTEGER); + newMandatoryColumn("Numero_Ordre", IndividualObservationBatch.PROPERTY_RANK_ORDER, TuttiCsvUtil.PRIMITIVE_INTEGER); newMandatoryColumn("Commentaire", IndividualObservationBatch.PROPERTY_COMMENT, TuttiCsvUtil.COMMENT_PARSER_FORMATTER); newMandatoryColumn("Code_PMFM", IndividualObservationRow.PROPERTY_CARACTERISTIC, parserFactory.getCaracteristicWithProtectedParser()); newIgnoredColumn("Libelle_PMFM"); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java index de5dcdd..4754297 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/csv/IndividualObservationRow.java @@ -37,12 +37,12 @@ public class IndividualObservationRow extends RowWithOperationContextSupport { private static final long serialVersionUID = 1L; - public static final String PROPERTY_BATCH_ID = "batchId"; - public static final String PROPERTY_CARACTERISTIC = "caracteristic"; public static final String PROPERTY_CARACTERISTIC_VALUE = "caracteristicValue"; + private Integer id; + private Integer batchId; protected Species species; @@ -52,6 +52,7 @@ public class IndividualObservationRow extends RowWithOperationContextSupport { protected Caracteristic caracteristic; protected Serializable caracteristicValue; + private Integer rankOrder; public static IndividualObservationRow newEmptyInstance() { IndividualObservationRow row = new IndividualObservationRow(); @@ -59,6 +60,10 @@ public class IndividualObservationRow extends RowWithOperationContextSupport { return row; } + public void setId(Integer id) { + this.id = id; + } + public void setBatchId(Integer batchId) { this.batchId = batchId; } @@ -79,6 +84,10 @@ public class IndividualObservationRow extends RowWithOperationContextSupport { this.comment = comment; } + public Integer getId() { + return id; + } + public Integer getBatchId() { return batchId; } @@ -99,4 +108,11 @@ public class IndividualObservationRow extends RowWithOperationContextSupport { return species; } + public void setRankOrder(Integer rankOrder) { + this.rankOrder = rankOrder; + } + + public Integer getRankOrder() { + return rankOrder; + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java index ddf3cf7..ccc0fe8 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java @@ -128,7 +128,9 @@ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualO row.setComment(individualObservationBatch.getComment()); row.setSpecies(individualObservationBatch.getSpecies()); - row.setBatchId(individualObservationBatch.getIdAsInt()); + row.setId(individualObservationBatch.getIdAsInt()); + row.setBatchId(individualObservationBatch.getBatchId()); + row.setRankOrder(individualObservationBatch.getRankOrder()); row.setCaracteristic(caracteristic); row.setCaracteristicValue(caracteristicValue); -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit e9b7163e496e96ff5b1f5051ef1a8230427e243d Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 13:35:09 2016 +0200 Import des observations individuelles ok (See #8252) --- .../GenericFormatImportOperationContext.java | 24 +++++++- .../genericformat/GenericFormatImportService.java | 2 +- .../GenericformatImportPersistenceHelper.java | 36 ++++++++++++ .../CsvConsumerForIndividualObservation.java | 23 ++++---- .../importactions/ImportCatchAction.java | 3 + .../ImportIndividualObservationAction.java | 61 ++++++++++++++------ .../ValidateIndividualObservationAction.java | 67 +++++++++++++++++++++- 7 files changed, 181 insertions(+), 35 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java index bf65e20..b262a20 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportOperationContext.java @@ -87,8 +87,16 @@ public class GenericFormatImportOperationContext implements Closeable { private final Map<Integer, SpeciesBatch> horsVracBenthosBatches; + /** + * Dictionnaire des ids de lot espèces (clef : l'id assigné pendant l'import, valeur l'id dans les fichiers d'import). + */ private final Map<Integer, Integer> batchesObjectIds; + /** + * Dictionnaire des ids des lots espèces importés (clef : id dans les fichiers d'import, valeur l'id persisté). + */ + private final Map<Integer, Integer> speciesBatchIds; + private final ArrayListMultimap<Integer, SpeciesBatchFrequency> benthosFrequencies; private final CaracteristicMap gearUseFeatures; @@ -121,6 +129,7 @@ public class GenericFormatImportOperationContext implements Closeable { this.vesselUseFeatures = new CaracteristicMap(); this.checkErrors = new LinkedHashSet<>(); this.batchesObjectIds = new TreeMap<>(); + this.speciesBatchIds = new TreeMap<>(); } @@ -176,7 +185,7 @@ public class GenericFormatImportOperationContext implements Closeable { return accidentalBatchesById.get(accidentalBatchId); } - public IndividualObservationBatch getIndividualObservationBatchesById(Integer individualObservationBatchId) { + public IndividualObservationBatch getIndividualObservationBatchById(Integer individualObservationBatchId) { return individualObservationBatchesById.get(individualObservationBatchId); } @@ -236,7 +245,7 @@ public class GenericFormatImportOperationContext implements Closeable { return ImmutableList.copyOf(accidentalBatchesById.values()); } - public Collection<IndividualObservationBatch> getIndividualObservationBatches() { + public ImmutableList<IndividualObservationBatch> getIndividualObservationBatches() { return ImmutableList.copyOf(individualObservationBatchesById.values()); } @@ -304,6 +313,8 @@ public class GenericFormatImportOperationContext implements Closeable { speciesFrequencies.clear(); vracSpeciesBatches.clear(); horsVracSpeciesBatches.clear(); + batchesObjectIds.clear(); + speciesBatchIds.clear(); } @@ -318,6 +329,14 @@ public class GenericFormatImportOperationContext implements Closeable { } + public void registerPersistedSpeciesBatchId(Integer importBatchId, Integer persistBatchId) { + speciesBatchIds.put(importBatchId, persistBatchId); + } + + public Integer getSpeciesBatchId(Integer importBatchId) { + return speciesBatchIds.get(importBatchId); + } + public void setWeightsDeleted(boolean weightsDeleted) { this.weightsDeleted = weightsDeleted; } @@ -325,6 +344,5 @@ public class GenericFormatImportOperationContext implements Closeable { public boolean isWeightsDeleted() { return weightsDeleted; } - } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index cb4d6fe..c5bc415 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -339,7 +339,7 @@ public class GenericFormatImportService extends AbstractTuttiService { actions.add(new ValidateCatchAction(importContext)); actions.add(new ValidateMarineLitterAction(importContext)); actions.add(new ValidateAccidentalCatchAction(importContext)); - actions.add(new ValidateIndividualObservationAction(importContext)); + actions.add(new ValidateIndividualObservationAction(importContext, persitenceHelper)); return actions; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java index bee006e..d07a64c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.service.genericformat; * #L% */ +import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; @@ -32,11 +33,13 @@ import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; @@ -81,6 +84,10 @@ public class GenericformatImportPersistenceHelper { private final ProtocolImportExportService protocolImportExportService; + private final Caracteristic copyIndividualObservationModeCaracteristic; + private final Caracteristic weightMeasuredCaracteristic; + private final Caracteristic pmfmIdCaracteristic; + public GenericformatImportPersistenceHelper(TuttiServiceContext context, GenericFormatContextSupport importContext) { this.importContext = importContext; this.persistenceService = context.getService(PersistenceService.class); @@ -89,6 +96,9 @@ public class GenericformatImportPersistenceHelper { this.referentialTemporarySpeciesService = context.getService(ReferentialTemporarySpeciesService.class); this.referentialTemporaryVesselService = context.getService(ReferentialTemporaryVesselService.class); this.protocolImportExportService = context.getService(ProtocolImportExportService.class); + this.weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); + this.copyIndividualObservationModeCaracteristic = persistenceService.getCopyIndividualObservationModeCaracteristic(); + this.pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); } public Set<FishingOperation> getFishingOperations(Integer cruiseId) { @@ -275,4 +285,30 @@ public class GenericformatImportPersistenceHelper { public Map<Integer, Integer> getAllObsoleteReferentTaxons() { return persistenceService.getAllObsoleteReferentTaxons(); } + + public void deleteIndividualObservationBatchForFishingOperation(Integer fishingOperationId) { + persistenceService.deleteAllIndividualObservationsForFishingOperation(fishingOperationId); + } + + public List<IndividualObservationBatch> createIndividualObservationBatch(FishingOperation fishingOperation, ImmutableList<IndividualObservationBatch> individualObservationBatch) { + return persistenceService.createIndividualObservationBatches(fishingOperation, individualObservationBatch); + } + + public Caracteristic getCaracteristic(Integer caracteristicId) { + return persistenceService.getCaracteristic(caracteristicId); + } + + public Caracteristic getCopyIndividualObservationModeCaracteristic() { + return copyIndividualObservationModeCaracteristic; + } + + public Caracteristic getPmfmIdCaracteristic() { + return pmfmIdCaracteristic; + } + + public Caracteristic getWeightMeasuredCaracteristic() { + return weightMeasuredCaracteristic; + } + + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java index f0ca721..ee79cd3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForIndividualObservation.java @@ -63,18 +63,15 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO if (operationContext != null) { - //TODO checks! IndividualObservationRow bean = row.getBean(); - //TODO Use a validator ? Caracteristic caracteristic = bean.getCaracteristic(); if (caracteristic == null) { - //TODO Should done by parser ? + addCheckError(row, new NullPointerException("Caracteristique non définie.")); } - //TODO Use a validator ? if (bean.getCaracteristicValue() == null) { - + addCheckError(row, new NullPointerException("Valeur de caracteristique non définie.")); } // parse caracteristic value @@ -97,12 +94,12 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO public void prepareRowForPersist(GenericFormatImportOperationContext operationContext, ImportRow<IndividualObservationRow> row) { IndividualObservationRow bean = row.getBean(); - Integer batchId = bean.getBatchId(); - IndividualObservationBatch batch = operationContext.getIndividualObservationBatchesById(batchId); + Integer individualObservationBatchId = bean.getId(); + IndividualObservationBatch batch = operationContext.getIndividualObservationBatchById(individualObservationBatchId); if (batch == null) { if (log.isInfoEnabled()) { - log.info("Detects individualObservationBatch: " + batchId); + log.info("Detects individualObservationBatch: " + individualObservationBatchId); } batch = IndividualObservationBatchs.newIndividualObservationBatch(); @@ -110,12 +107,16 @@ public class CsvConsumerForIndividualObservation extends CsvComsumer<IndividualO batch.setCaracteristics(new CaracteristicMap()); batch.setComment(bean.getComment()); batch.setSpecies(bean.getSpecies()); - batch.setId(bean.getBatchId()); - operationContext.addIndividualObservationBatch(batchId, batch); + batch.setId(individualObservationBatchId); + batch.setBatchId(bean.getBatchId()); + batch.setRankOrder(bean.getRankOrder()); + operationContext.addIndividualObservationBatch(individualObservationBatchId, batch); } - batch.getCaracteristics().put(bean.getCaracteristic(), bean.getCaracteristicValue()); + Caracteristic caracteristic = bean.getCaracteristic(); + Serializable caracteristicValue = bean.getCaracteristicValue(); + batch.getCaracteristics().put(caracteristic, caracteristicValue); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java index a6685c5..5f17023 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportCatchAction.java @@ -191,6 +191,9 @@ public class ImportCatchAction extends ImportActionSupport { Collection<AttachmentRow> attachmentRows = importContext.popAttachmentRows(ObjectTypeCode.BATCH, batchObjectId); persistenceHelper.persistAttachments(createdBatch.getIdAsInt(), attachmentRows); + // keep id translation (will be used by individual observations) + fishingOperationContext.registerPersistedSpeciesBatchId(batchObjectId, createdBatch.getIdAsInt()); + if (CollectionUtils.isNotEmpty(frequencies)) { Integer batchId = batch.getIdAsInt(); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportIndividualObservationAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportIndividualObservationAction.java index fca8915..5d4a3ec 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportIndividualObservationAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ImportIndividualObservationAction.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import com.google.common.collect.ImmutableList; import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode; import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; @@ -44,6 +45,8 @@ import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.IOException; import java.util.Collection; +import java.util.List; +import java.util.Objects; import static org.nuiton.i18n.I18n.t; @@ -68,9 +71,9 @@ public class ImportIndividualObservationAction extends ImportActionSupport { @Override protected boolean canExecute() { return importContext.isTechnicalFilesValid() - && importContext.getSurveyFileResult().isValid() - && importContext.getOperationFileResult().isValid() - && importContext.getImportRequest().isImportIndividualObservation(); + && importContext.getSurveyFileResult().isValid() + && importContext.getOperationFileResult().isValid() + && importContext.getImportRequest().isImportIndividualObservation(); } @Override @@ -94,6 +97,7 @@ public class ImportIndividualObservationAction extends ImportActionSupport { importContext.increments(t("tutti.service.genericFormat.import.individualObservations")); GenericFormatCsvFileResult importFileResult = importContext.getIndividualObservationFileResult(); try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations(true)) { + for (ImportRow<IndividualObservationRow> row : consumer) { GenericFormatImportOperationContext operationContext = consumer.validateRow(row, importContext); @@ -102,6 +106,7 @@ public class ImportIndividualObservationAction extends ImportActionSupport { } } + } catch (IOException e) { throw new ApplicationTechnicalException("Could not close individualObservation.csv file", e); } catch (ImportRuntimeException e) { @@ -114,7 +119,7 @@ public class ImportIndividualObservationAction extends ImportActionSupport { } - private void persistIndividualObservationBatches() { + private void persistIndividualObservationBatches() { importContext.doActionOnCruiseContexts(new GenericFormatImportContext.CruiseContextAction() { @@ -138,11 +143,17 @@ public class ImportIndividualObservationAction extends ImportActionSupport { if (fishingOperationContext.withIndividualObservationBatches()) { - Collection<IndividualObservationBatch> individualObservationBatches = fishingOperationContext.getIndividualObservationBatches(); + ImmutableList<IndividualObservationBatch> individualObservationBatches = fishingOperationContext.getIndividualObservationBatches(); + + if (log.isInfoEnabled()) { + log.info("Check " + individualObservationBatches.size() + " individual observation(s) of " + operationStr + " for cruise: " + cruiseStr); + } + ValidateIndividualObservationAction.prepareIndividualObservationsForPersist(persistenceHelper, individualObservationBatches); + if (log.isInfoEnabled()) { log.info("Persist " + individualObservationBatches.size() + " individual observation(s) of " + operationStr + " for cruise: " + cruiseStr); } - persistIndividualObservationBatches(individualObservationBatches); + persistIndividualObservationBatches(fishingOperationContext, individualObservationBatches); } @@ -153,25 +164,41 @@ public class ImportIndividualObservationAction extends ImportActionSupport { private void deleteIndividualObservationBatches(GenericFormatImportOperationContext fishingOperationContext) { FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); - //FIXME -// persistenceHelper.deleteIndividualObservationBatchForFishingOperation(fishingOperation.getIdAsInt()); + persistenceHelper.deleteIndividualObservationBatchForFishingOperation(fishingOperation.getIdAsInt()); } - private void persistIndividualObservationBatches(Collection<IndividualObservationBatch> batches) { + private void persistIndividualObservationBatches(GenericFormatImportOperationContext fishingOperationContext, ImmutableList<IndividualObservationBatch> batches) { + + for (IndividualObservationBatch individualObservation : batches) { - for (IndividualObservationBatch individualObservationBatch : batches) { + Integer batchId = individualObservation.getBatchId(); + Integer speciesBatchId = fishingOperationContext.getSpeciesBatchId(batchId); + Objects.requireNonNull(speciesBatchId, "Persisted Species batch id not found for import species batch id: " + batchId); + individualObservation.setBatchId(speciesBatchId); - Integer objectId = individualObservationBatch.getIdAsInt(); - Collection<AttachmentRow> attachmentRows = importContext.popAttachmentRows(ObjectTypeCode.SAMPLE, objectId); + } + + + // On conserve l'ordre des ids d'imports qui vont servir ensuite pour persister les pièces jointes + ImmutableList.Builder<Integer> idsBuilder = ImmutableList.builder(); + batches.forEach(batch -> idsBuilder.add(batch.getIdAsInt())); + ImmutableList<Integer> importIds = idsBuilder.build(); + + // on enlève les ids pour la persistence + batches.forEach(batch -> batch.setId((String) null)); + + FishingOperation fishingOperation = fishingOperationContext.getFishingOperation(); - // Id was only here to get attachments - individualObservationBatch.setId((String) null); + List<IndividualObservationBatch> savedBatches = persistenceHelper.createIndividualObservationBatch(fishingOperation, batches); - //FIXME -// IndividualObservationBatch createdIndividualObservationBatch = persistenceHelper.createIndividualObservationBatch(individualObservationBatch); -// persistenceHelper.persistAttachments(createdIndividualObservationBatch.getIdAsInt(), attachmentRows); + // Persistence des pièces-jointes associées aux observations individuelles + int index = 0; + for (IndividualObservationBatch savedBatch : savedBatches) { + Integer importId = importIds.get(index++); + Collection<AttachmentRow> attachmentRows = importContext.popAttachmentRows(ObjectTypeCode.SAMPLE, importId); + persistenceHelper.persistAttachments(savedBatch.getIdAsInt(), attachmentRows); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java index dd62f13..2a53c6a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java @@ -24,9 +24,15 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import com.google.common.collect.ImmutableList; +import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode; +import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.service.genericformat.GenericFormatContextSupport; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; import fr.ifremer.tutti.service.genericformat.GenericFormatImportOperationContext; +import fr.ifremer.tutti.service.genericformat.GenericformatImportPersistenceHelper; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForIndividualObservation; import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import org.apache.commons.logging.Log; @@ -36,6 +42,7 @@ import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.IOException; +import java.util.Objects; import static org.nuiton.i18n.I18n.t; @@ -50,19 +57,22 @@ public class ValidateIndividualObservationAction extends ImportActionSupport { /** Logger. */ private static final Log log = LogFactory.getLog(ValidateIndividualObservationAction.class); - public ValidateIndividualObservationAction(GenericFormatContextSupport importContext) { + private final GenericformatImportPersistenceHelper persitenceHelper; + + public ValidateIndividualObservationAction(GenericFormatContextSupport importContext, + GenericformatImportPersistenceHelper persitenceHelper) { super(importContext); + this.persitenceHelper = persitenceHelper; } @Override protected boolean canExecute() { - return importContext.isTechnicalFilesValid()&& importContext.getOperationFileResult().isValid(); + return importContext.isTechnicalFilesValid() && importContext.getOperationFileResult().isValid(); } @Override protected void doExecute() { - if (log.isInfoEnabled()) { log.info("Validate individualObservation.csv file."); } @@ -71,6 +81,7 @@ public class ValidateIndividualObservationAction extends ImportActionSupport { GenericFormatCsvFileResult importFileResult = importContext.getIndividualObservationFileResult(); try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations(false)) { + for (ImportRow<IndividualObservationRow> row : consumer) { importContext.increments(t("tutti.service.genericFormat.validate.individualObservations", row.getLineNumber())); @@ -100,6 +111,56 @@ public class ValidateIndividualObservationAction extends ImportActionSupport { } + importContext.doActionOnCruiseContexts((cruiseContext, progressionModel) -> { + + for (GenericFormatImportOperationContext fishingOperationContext : cruiseContext) { + + String cruiseStr = cruiseContext.getCruiseLabel(); + String operationStr = fishingOperationContext.getFishingOperationLabel(); + + if (fishingOperationContext.withIndividualObservationBatches()) { + + ImmutableList<IndividualObservationBatch> individualObservationBatches = fishingOperationContext.getIndividualObservationBatches(); + + if (log.isInfoEnabled()) { + log.info("Check " + individualObservationBatches.size() + " individual observation(s) of " + operationStr + " for cruise: " + cruiseStr); + } + prepareIndividualObservationsForPersist(persitenceHelper, individualObservationBatches); + + } + + } + + }); + + } + + public static void prepareIndividualObservationsForPersist(GenericformatImportPersistenceHelper persistenceHelper, + ImmutableList<IndividualObservationBatch> individualObservations) { + + + for (IndividualObservationBatch individualObservation : individualObservations) { + + CaracteristicQualitativeValue copyModeCaracteristic = individualObservation.getCaracteristics().removeQualitativeValue(persistenceHelper.getCopyIndividualObservationModeCaracteristic()); + Objects.requireNonNull(copyModeCaracteristic, "No copy mode found for individual observation: " + individualObservation.getId()); + CopyIndividualObservationMode copyMode = CopyIndividualObservationMode.valueOf(copyModeCaracteristic.getIdAsInt()); + individualObservation.setCopyIndividualObservationMode(copyMode); + + String lengthClassId = individualObservation.getCaracteristics().removeStringValue(persistenceHelper.getPmfmIdCaracteristic()); + Objects.requireNonNull(lengthClassId, "No lengthClassId found for individual observation: " + individualObservation.getId()); + + Caracteristic lengthStepCaracteristic = persistenceHelper.getCaracteristic(Integer.valueOf(lengthClassId)); + Objects.requireNonNull(lengthStepCaracteristic, "lengthStepCaracteristic " + lengthClassId + " does not exist."); + individualObservation.setLengthStepCaracteristic(lengthStepCaracteristic); + + Float length = individualObservation.getCaracteristics().removeFloatValue(lengthStepCaracteristic); + individualObservation.setSize(length); + + Float weigth = individualObservation.getCaracteristics().removeFloatValue(persistenceHelper.getWeightMeasuredCaracteristic()); + individualObservation.setWeight(weigth); + + } + } } -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit 241feac89b37de70214c483a02ffc6b938d78df5 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 13:46:40 2016 +0200 Bien export la code de prélèvement aussi (See #8252) --- .../tutti/service/genericformat/GenericFormatExportContext.java | 6 +++++- .../genericformat/GenericFormatExportOperationContext.java | 9 ++++++++- .../producer/CsvProducerForIndividualObservation.java | 6 ++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java index c13c648..32c8330 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportContext.java @@ -98,6 +98,8 @@ public class GenericFormatExportContext implements Closeable, Iterable<GenericFo private final Caracteristic copyIndividualObservationModeCaracteristic; + private final Caracteristic sampleCodeCaracteristic ; + private final Caracteristic weightMeasuredCaracteristic; private final Caracteristic pmfmIdCaracteristic; @@ -157,6 +159,7 @@ public class GenericFormatExportContext implements Closeable, Iterable<GenericFo this.deadOrAliveCaracteristic = persistenceService.getDeadOrAliveCaracteristic(); this.genderCaracteristic = persistenceService.getSexCaracteristic(); this.copyIndividualObservationModeCaracteristic = persistenceService.getCopyIndividualObservationModeCaracteristic(); + this.sampleCodeCaracteristic = persistenceService.getSampleCodeCaracteristic(); this.cruiseContexts = new LinkedHashSet<>(); List<Species> allReferentSpecies = persistenceService.getAllReferentSpecies(); @@ -327,7 +330,8 @@ public class GenericFormatExportContext implements Closeable, Iterable<GenericFo pmfmIdCaracteristic, deadOrAliveCaracteristic, genderCaracteristic, - copyIndividualObservationModeCaracteristic); + copyIndividualObservationModeCaracteristic, + sampleCodeCaracteristic); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java index b00c996..4ccd225 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportOperationContext.java @@ -90,6 +90,7 @@ public class GenericFormatExportOperationContext { protected final Caracteristic genderCaracteristic; private final Caracteristic copyIndividualObservationModeCaracteristic; + private final Caracteristic sampleCodeCaracteristic; private final SampleCategoryModel sampleCategoryModel; @@ -119,7 +120,8 @@ public class GenericFormatExportOperationContext { Caracteristic pmfmIdCaracteristic, Caracteristic deadOrAliveCaracteristic, Caracteristic genderCaracteristic, - Caracteristic copyIndividualObservationModeCaracteristic) { + Caracteristic copyIndividualObservationModeCaracteristic, + Caracteristic sampleCodeCaracteristic) { this.cruise = cruise; this.operation = operation; this.operationLabel = operationLabel; @@ -130,6 +132,7 @@ public class GenericFormatExportOperationContext { this.deadOrAliveCaracteristic = deadOrAliveCaracteristic; this.genderCaracteristic = genderCaracteristic; this.copyIndividualObservationModeCaracteristic = copyIndividualObservationModeCaracteristic; + this.sampleCodeCaracteristic = sampleCodeCaracteristic; this.attachmentRows = new ArrayList<>(); Integer operationId = operation.getIdAsInt(); @@ -255,6 +258,10 @@ public class GenericFormatExportOperationContext { return copyIndividualObservationModeCaracteristic; } + public Caracteristic getSampleCodeCaracteristic() { + return sampleCodeCaracteristic; + } + public List<AccidentalBatch> getAccidentalBatches() { return accidentalBatches; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java index ccc0fe8..949ef25 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/producer/CsvProducerForIndividualObservation.java @@ -80,6 +80,12 @@ public class CsvProducerForIndividualObservation extends CsvProducer<IndividualO operationExportContext.getWeightMeasuredCaracteristic(), child.getWeight()); + addCaracteristicRow(operationExportContext, + rows, + child, + operationExportContext.getSampleCodeCaracteristic(), + child.getSamplingCode()); + Caracteristic copyIndividualObservationModeCaracteristic = operationExportContext.getCopyIndividualObservationModeCaracteristic(); CopyIndividualObservationMode copyIndividualObservationMode = child.getCopyIndividualObservationMode(); Objects.requireNonNull(copyIndividualObservationMode, "Mode de recopie null sur l'observation individuelle " + child.getId()); -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit 3caec5e7725ddf94df985d387f017f2bddacb644 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 14:00:16 2016 +0200 On préfère explicitement mettre le code de prélèvement plutôt que de l'importer en lâche via la map de caractéristiques (See #8252) --- .../GenericformatImportPersistenceHelper.java | 6 ++++++ .../ValidateIndividualObservationAction.java | 15 ++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java index d07a64c..507ec87 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericformatImportPersistenceHelper.java @@ -87,6 +87,7 @@ public class GenericformatImportPersistenceHelper { private final Caracteristic copyIndividualObservationModeCaracteristic; private final Caracteristic weightMeasuredCaracteristic; private final Caracteristic pmfmIdCaracteristic; + private final Caracteristic sampleCodeCaracteristic; public GenericformatImportPersistenceHelper(TuttiServiceContext context, GenericFormatContextSupport importContext) { this.importContext = importContext; @@ -99,6 +100,7 @@ public class GenericformatImportPersistenceHelper { this.weightMeasuredCaracteristic = persistenceService.getWeightMeasuredCaracteristic(); this.copyIndividualObservationModeCaracteristic = persistenceService.getCopyIndividualObservationModeCaracteristic(); this.pmfmIdCaracteristic = persistenceService.getPmfmIdCaracteristic(); + this.sampleCodeCaracteristic = persistenceService.getSampleCodeCaracteristic(); } public Set<FishingOperation> getFishingOperations(Integer cruiseId) { @@ -311,4 +313,8 @@ public class GenericformatImportPersistenceHelper { } + public Caracteristic getSampleCodeCaracteristic() { + return sampleCodeCaracteristic; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java index 2a53c6a..baf4d6f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateIndividualObservationAction.java @@ -25,6 +25,7 @@ package fr.ifremer.tutti.service.genericformat.importactions; */ import com.google.common.collect.ImmutableList; +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; @@ -138,27 +139,31 @@ public class ValidateIndividualObservationAction extends ImportActionSupport { public static void prepareIndividualObservationsForPersist(GenericformatImportPersistenceHelper persistenceHelper, ImmutableList<IndividualObservationBatch> individualObservations) { - for (IndividualObservationBatch individualObservation : individualObservations) { - CaracteristicQualitativeValue copyModeCaracteristic = individualObservation.getCaracteristics().removeQualitativeValue(persistenceHelper.getCopyIndividualObservationModeCaracteristic()); + CaracteristicMap caracteristics = individualObservation.getCaracteristics(); + + CaracteristicQualitativeValue copyModeCaracteristic = caracteristics.removeQualitativeValue(persistenceHelper.getCopyIndividualObservationModeCaracteristic()); Objects.requireNonNull(copyModeCaracteristic, "No copy mode found for individual observation: " + individualObservation.getId()); CopyIndividualObservationMode copyMode = CopyIndividualObservationMode.valueOf(copyModeCaracteristic.getIdAsInt()); individualObservation.setCopyIndividualObservationMode(copyMode); - String lengthClassId = individualObservation.getCaracteristics().removeStringValue(persistenceHelper.getPmfmIdCaracteristic()); + String lengthClassId = caracteristics.removeStringValue(persistenceHelper.getPmfmIdCaracteristic()); Objects.requireNonNull(lengthClassId, "No lengthClassId found for individual observation: " + individualObservation.getId()); Caracteristic lengthStepCaracteristic = persistenceHelper.getCaracteristic(Integer.valueOf(lengthClassId)); Objects.requireNonNull(lengthStepCaracteristic, "lengthStepCaracteristic " + lengthClassId + " does not exist."); individualObservation.setLengthStepCaracteristic(lengthStepCaracteristic); - Float length = individualObservation.getCaracteristics().removeFloatValue(lengthStepCaracteristic); + Float length = caracteristics.removeFloatValue(lengthStepCaracteristic); individualObservation.setSize(length); - Float weigth = individualObservation.getCaracteristics().removeFloatValue(persistenceHelper.getWeightMeasuredCaracteristic()); + Float weigth = caracteristics.removeFloatValue(persistenceHelper.getWeightMeasuredCaracteristic()); individualObservation.setWeight(weigth); + String samplingCode = caracteristics.removeStringValue(persistenceHelper.getSampleCodeCaracteristic()); + individualObservation.setSamplingCode(samplingCode); + } } -- 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 https://gitlab.nuiton.org/codelutin/tutti.git commit 8f8f477ad999354237942ab1c3f5f58d094cbad5 Merge: ec2d2c0 3caec5e Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 27 14:00:31 2016 +0200 Livrable #8252 Merge branch 'feature/8252' into develop .../tutti/persistence/TuttiPersistenceImpl.java | 4 +- .../persistence/TuttiPersistenceNoDbImpl.java | 2 +- ...dividualObservationBatchPersistenceService.java | 3 +- ...dualObservationBatchPersistenceServiceImpl.java | 2 +- .../ifremer/tutti/service/PersistenceService.java | 49 ++++++++------- .../catches/multipost/MultiPostImportService.java | 2 +- .../genericformat/GenericFormatExportContext.java | 10 ++- .../GenericFormatExportOperationContext.java | 16 ++++- .../GenericFormatImportOperationContext.java | 24 +++++++- .../genericformat/GenericFormatImportService.java | 2 +- .../GenericformatImportPersistenceHelper.java | 42 +++++++++++++ .../CsvConsumerForIndividualObservation.java | 23 +++---- .../csv/IndividualObservationModel.java | 11 +++- .../csv/IndividualObservationRow.java | 20 +++++- .../importactions/ImportCatchAction.java | 3 + .../ImportIndividualObservationAction.java | 61 +++++++++++++----- .../ValidateIndividualObservationAction.java | 72 +++++++++++++++++++++- .../CsvProducerForIndividualObservation.java | 21 ++++++- .../actions/OpenGenericFormatExportScreen.java | 3 + .../actions/OpenGenericFormatImportScreen.java | 3 + .../content/actions/OpenReportScreenAction.java | 3 + 21 files changed, 306 insertions(+), 70 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm