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>.