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 236b4e731adca045758d32f16b1c824d1f8cd31c Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Mar 15 20:57:27 2015 +0100 ne pas propager la modification du status de synchronisation pendant l'import --- .../service/CruisePersistenceServiceImpl.java | 1 + .../service/util/SynchronizationStatusHelper.java | 81 +++++++++++++++------- .../genericformat/GenericFormatImportService.java | 17 ++++- 3 files changed, 72 insertions(+), 27 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java index 58e2381..7fa8b8c 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java @@ -666,6 +666,7 @@ public class CruisePersistenceServiceImpl extends AbstractPersistenceService imp fishingTrip.setQualityFlag(qualityFlagNotQualified); // SynchronizationStatus + synchronizationStatusHelper.setDirty(target); synchronizationStatusHelper.setDirty(fishingTrip); // DepartureLocation diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java index 17e89d5..401205a 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java @@ -54,24 +54,49 @@ public class SynchronizationStatusHelper extends AbstractPersistenceService { /** Logger. */ private static final Log log = LogFactory.getLog(SynchronizationStatusHelper.class); + /** + * A internal state to skip any propagation to parent objects. + * + * This is used while generic format import. + * + * @since 3.15 + */ + private static boolean propagateToParents = true; + + public static void propagateDirtyStatusToParents() { + SynchronizationStatusHelper.propagateToParents = true; + } + + public static void doNotPropagateDirtyStatusToParents() { + SynchronizationStatusHelper.propagateToParents = false; + } + public void setDirty(ScientificCruise scientificCruise) { + String synchronizationStatus = getDirtyValue(); if (log.isInfoEnabled()) { log.info("SetDirty scientificCruise: " + scientificCruise.getId()); } scientificCruise.setSynchronizationStatus(synchronizationStatus); + } public void setDirty(FishingTrip fishingTrip) { + String synchronizationStatus = getDirtyValue(); fishingTrip.setSynchronizationStatus(synchronizationStatus); if (log.isInfoEnabled()) { log.info("SetDirty fishingTrip: " + fishingTrip.getId()); } - setDirty(fishingTrip.getScientificCruise()); + + if (propagateToParents) { + setDirty(fishingTrip.getScientificCruise()); + } + } public void setDirty(CatchBatch catchBatch) { + String synchronizationStatus = getDirtyValue(); if (log.isInfoEnabled()) { @@ -79,28 +104,48 @@ public class SynchronizationStatusHelper extends AbstractPersistenceService { } catchBatch.setSynchronizationStatus(synchronizationStatus); - try { - setDirty(catchBatch.getFishingOperation().getFishingTrip()); - } catch (LazyInitializationException e) { + if (propagateToParents) { + try { + setDirty(catchBatch.getFishingOperation().getFishingTrip()); + } catch (LazyInitializationException e) { - // We need to have a loaded catchBatch, since it can come from a cache, prefer to reload it here - CatchBatchImpl loadedCatchBatch = load(CatchBatchImpl.class, catchBatch.getId()); - loadedCatchBatch.setSynchronizationStatus(synchronizationStatus); + // We need to have a loaded catchBatch, since it can come from a cache, prefer to reload it here + CatchBatchImpl loadedCatchBatch = load(CatchBatchImpl.class, catchBatch.getId()); + loadedCatchBatch.setSynchronizationStatus(synchronizationStatus); + } } + } public void setDirty(Sample sample) { + String synchronizationStatus = getDirtyValue(); sample.setSynchronizationStatus(synchronizationStatus); if (log.isInfoEnabled()) { log.info("SetDirty sample: " + sample.getId()); } - Batch batch = sample.getBatch(); - if (batch != null && batch instanceof CatchBatch) { - setDirty((CatchBatch) batch); - } else { - setDirty(sample.getFishingOperation().getFishingTrip()); + + if (propagateToParents) { + Batch batch = sample.getBatch(); + if (batch != null && batch instanceof CatchBatch) { + setDirty((CatchBatch) batch); + } else { + setDirty(sample.getFishingOperation().getFishingTrip()); + } } + + } + + public void setDirty(fr.ifremer.tutti.persistence.entities.data.CatchBatch bean) { + bean.setSynchronizationStatus(getDirtyValue()); + } + + public void setDirty(IndividualObservationBatch bean) { + bean.setSynchronizationStatus(getDirtyValue()); + } + + public void setDirty(AccidentalBatch bean) { + bean.setSynchronizationStatus(getDirtyValue()); } public void setCruiseReadyToSynch(Integer cruiseId) { @@ -155,16 +200,4 @@ public class SynchronizationStatusHelper extends AbstractPersistenceService { protected String getDirtyValue() { return SynchronizationStatus.DIRTY.getValue(); } - - public void setDirty(fr.ifremer.tutti.persistence.entities.data.CatchBatch bean) { - bean.setSynchronizationStatus(getDirtyValue()); - } - - public void setDirty(IndividualObservationBatch bean) { - bean.setSynchronizationStatus(getDirtyValue()); - } - - public void setDirty(AccidentalBatch bean) { - bean.setSynchronizationStatus(getDirtyValue()); - } } 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 f932a0f..a9f10e8 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 @@ -30,6 +30,7 @@ import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.service.util.SynchronizationStatusHelper; import fr.ifremer.tutti.service.PdfGeneratorService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.catches.WeightCleaningService; @@ -201,11 +202,21 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { GenericFormatImportRequest importRequest = createImportRequest(importConfiguration, archive); - GenericFormatImportResult result = doImport(importRequest, progressionModel); + SynchronizationStatusHelper.doNotPropagateDirtyStatusToParents(); - generateImportReport(result, progressionModel); + try { - return result; + GenericFormatImportResult result = doImport(importRequest, progressionModel); + + generateImportReport(result, progressionModel); + + return result; + + } finally { + + SynchronizationStatusHelper.propagateDirtyStatusToParents(); + + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.