This is an automated email from the git hooks/post-receive script. New commit to branch feature/revue_algorithme in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit d0bfe0616ac5a7dd3620d00d59de2c7a770511d3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Apr 18 11:05:24 2016 +0200 Déplacement du cache de haut niveau dans un paquetage plus adapté + amélioration code dans le cache (côté ui) --- .../ifremer/tutti/service/PersistenceService.java | 4 +- .../fr/ifremer/tutti/service/TuttiDataContext.java | 4 +- .../service/{sampling => cruise}/CruiseCache.java | 4 +- .../{sampling => cruise}/CruiseCacheAble.java | 2 +- .../{sampling => cruise}/CruiseCacheLoader.java | 4 +- .../cps/CalcifiedPiecesSamplingExportService.java | 2 +- .../service/sampling/CruiseSamplingCache.java | 57 +++++++++++++++++++++- .../tutti/service/sampling/SamplingCodeCache.java | 1 + .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 2 +- .../content/actions/EditCatchesSupportAction.java | 2 +- .../CalcifiedPiecesSamplingReportAction.java | 2 +- .../SamplingCodeCellEditor.java | 2 +- .../IndividualObservationBatchTableHandler.java | 2 +- .../frequency/IndividualObservationUICache.java | 14 +++--- 14 files changed, 81 insertions(+), 21 deletions(-) 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 d72bfa5..771cc7e 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 @@ -66,8 +66,8 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessels; import fr.ifremer.tutti.persistence.model.ProgramDataModel; import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator; import fr.ifremer.tutti.persistence.service.UpdateSchemaContextSupport; -import fr.ifremer.tutti.service.sampling.CruiseCache; -import fr.ifremer.tutti.service.sampling.CruiseCacheLoader; +import fr.ifremer.tutti.service.cruise.CruiseCache; +import fr.ifremer.tutti.service.cruise.CruiseCacheLoader; import fr.ifremer.tutti.service.sampling.CruiseSamplingCache; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java index e35776a..09fd0b0 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java @@ -40,8 +40,8 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.TaxonCache; import fr.ifremer.tutti.persistence.entities.referential.TaxonCaches; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.service.sampling.CruiseCache; -import fr.ifremer.tutti.service.sampling.CruiseCacheLoader; +import fr.ifremer.tutti.service.cruise.CruiseCache; +import fr.ifremer.tutti.service.cruise.CruiseCacheLoader; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCache.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCache.java similarity index 96% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCache.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCache.java index 98bf67f..acc4edb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCache.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCache.java @@ -1,8 +1,10 @@ -package fr.ifremer.tutti.service.sampling; +package fr.ifremer.tutti.service.cruise; import com.google.common.base.MoreObjects; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.service.sampling.CruiseSamplingCache; +import fr.ifremer.tutti.service.sampling.SamplingCodeCache; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCacheAble.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheAble.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCacheAble.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheAble.java index 88e2015..7cb6f1f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCacheAble.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheAble.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.sampling; +package fr.ifremer.tutti.service.cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCacheLoader.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheLoader.java similarity index 97% rename from tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCacheLoader.java rename to tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheLoader.java index db4c529..00be5f3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseCacheLoader.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheLoader.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.service.sampling; +package fr.ifremer.tutti.service.cruise; /* * #%L @@ -31,6 +31,8 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.service.sampling.CruiseSamplingCache; +import fr.ifremer.tutti.service.sampling.SamplingCodeCache; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/cps/CalcifiedPiecesSamplingExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/cps/CalcifiedPiecesSamplingExportService.java index 58d2dac..8142513 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/export/cps/CalcifiedPiecesSamplingExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/export/cps/CalcifiedPiecesSamplingExportService.java @@ -34,7 +34,7 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.sampling.CacheExtractedKey; -import fr.ifremer.tutti.service.sampling.CruiseCache; +import fr.ifremer.tutti.service.cruise.CruiseCache; import fr.ifremer.tutti.service.sampling.CruiseSamplingCache; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingCache.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingCache.java index ad39cb7..663a33f 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingCache.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingCache.java @@ -38,6 +38,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; +import fr.ifremer.tutti.service.cruise.CruiseCacheAble; import fr.ifremer.tutti.util.Numbers; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -136,7 +137,7 @@ public class CruiseSamplingCache implements CruiseCacheAble { public void addFishingOperation(FishingOperation fishingOperation, Collection<IndividualObservationBatch> individualObservations) { addIndividualObservations(fishingOperation, individualObservations); - + } @Override @@ -334,6 +335,60 @@ public class CruiseSamplingCache implements CruiseCacheAble { .toString(); } + public CalcifiedPiecesSamplingStatus getStatus(IndividualObservationBatch individualObservationBatch, + Integer lengthStep, + CaracteristicQualitativeValue gender, + Boolean maturity) { + + Objects.requireNonNull(individualObservationBatch); + + FishingOperation fishingOperation = individualObservationBatch.getFishingOperation(); + Objects.requireNonNull(fishingOperation); + + Species species = individualObservationBatch.getSpecies(); + Objects.requireNonNull(species); + + if (lengthStep == null) { + + // pas de classe de taille définie, on ne peut rien calculer + // on considère que l'observation individuelle ne rentre pas dans l'algorithme + + throw new RuntimeException(""); + + } + + Optional<Zone> optionalZone = tryFindZone(fishingOperation); + if (!optionalZone.isPresent()) { + throw new IllegalStateException("Can't find zone for a matching individual observation: " + individualObservationBatch); + } + + Optional<CalcifiedPiecesSamplingDefinition> optionalCalcifiedPiecesSamplingDefinition = + tryToFindCalcifiedPiecesSamplingDefinition(species, maturity, lengthStep, gender); + + if (!optionalCalcifiedPiecesSamplingDefinition.isPresent()) { + + // ne rentre pas dans l'algorithme + throw new RuntimeException(""); + + } + + CalcifiedPiecesSamplingDefinition calcifiedPiecesSamplingDefinition = optionalCalcifiedPiecesSamplingDefinition.get(); + + + Zone zone = optionalZone.get(); + int totalSamplingInCruise = 0; + int totalSamplingInFishingOperation = 0; + int totalSamplingInZone = 0; + + return new CalcifiedPiecesSamplingStatus(individualObservationBatch, + calcifiedPiecesSamplingDefinition, + zone, + totalSamplingInCruise, + totalSamplingInFishingOperation, + totalSamplingInZone); + + } + /** * Ajout d'un observation dans le cache. * diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingCodeCache.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingCodeCache.java index 149f8d2..e184bfc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingCodeCache.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingCodeCache.java @@ -2,6 +2,7 @@ package fr.ifremer.tutti.service.sampling; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; +import fr.ifremer.tutti.service.cruise.CruiseCacheAble; import org.apache.commons.lang3.mutable.MutableInt; import java.io.IOException; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java index 71e144e..f7e5919 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java @@ -57,7 +57,7 @@ import fr.ifremer.tutti.service.referential.ReferentialTemporarySpeciesService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryVesselService; import fr.ifremer.tutti.service.referential.TuttiReferentialSynchronizeService; import fr.ifremer.tutti.service.report.ReportGenerationService; -import fr.ifremer.tutti.service.sampling.CruiseCacheLoader; +import fr.ifremer.tutti.service.cruise.CruiseCacheLoader; import fr.ifremer.tutti.ui.swing.content.MainUI; import fr.ifremer.tutti.ui.swing.updater.DeleteHelper; import fr.ifremer.tutti.ui.swing.util.SoundEngine; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/EditCatchesSupportAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/EditCatchesSupportAction.java index 494a8c1..6d19ec6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/EditCatchesSupportAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/actions/EditCatchesSupportAction.java @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.ValidationService; -import fr.ifremer.tutti.service.sampling.CruiseCacheLoader; +import fr.ifremer.tutti.service.cruise.CruiseCacheLoader; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.MainUIHandler; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/CalcifiedPiecesSamplingReportAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/CalcifiedPiecesSamplingReportAction.java index 41148e7..e035763 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/CalcifiedPiecesSamplingReportAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/actions/CalcifiedPiecesSamplingReportAction.java @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.TuttiDataContext; import fr.ifremer.tutti.service.export.cps.CalcifiedPiecesSamplingExportService; -import fr.ifremer.tutti.service.sampling.CruiseCacheLoader; +import fr.ifremer.tutti.service.cruise.CruiseCacheLoader; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.MainUIHandler; import fr.ifremer.tutti.ui.swing.content.actions.AbstractMainUITuttiAction; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/SamplingCodeCellEditor.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/SamplingCodeCellEditor.java index 3fdba0f..a300165 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/SamplingCodeCellEditor.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/SamplingCodeCellEditor.java @@ -23,7 +23,7 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservatio */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.service.sampling.CruiseCache; +import fr.ifremer.tutti.service.cruise.CruiseCache; import fr.ifremer.tutti.service.sampling.SamplingCodeCache; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.IndividualObservationBatchRowModel; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java index 7a563e3..3652e9b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java @@ -13,7 +13,7 @@ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.TuttiDataContext; -import fr.ifremer.tutti.service.sampling.CruiseCache; +import fr.ifremer.tutti.service.cruise.CruiseCache; import fr.ifremer.tutti.service.sampling.SamplingCodePrefix; import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellEditor; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationUICache.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationUICache.java index 5a0bf0a..ebe8de6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationUICache.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationUICache.java @@ -30,7 +30,7 @@ import fr.ifremer.tutti.persistence.entities.protocol.Zone; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.sampling.CruiseCache; +import fr.ifremer.tutti.service.cruise.CruiseCache; import fr.ifremer.tutti.service.sampling.CruiseSamplingCache; import fr.ifremer.tutti.service.sampling.SamplingCodeCache; import fr.ifremer.tutti.service.sampling.SamplingCodePrefix; @@ -252,7 +252,7 @@ public class IndividualObservationUICache implements Closeable { if (withSamplingCache) { - Boolean maturity = cruiseSamplingCache.getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); + Boolean maturity = cruiseSamplingCache.getMaturity(species.getReferenceTaxonId(), maturityQualitativeValue); cruiseSamplingCache.addIndividualObservation(fishingOperation, species, gender, @@ -286,7 +286,7 @@ public class IndividualObservationUICache implements Closeable { if (withSamplingCache) { - Boolean maturity = cruiseSamplingCache.getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); + Boolean maturity = cruiseSamplingCache.getMaturity(species.getReferenceTaxonId(), maturityQualitativeValue); int lengthStepInMm = uiModel.getLengthStepInMm(lengthStep); cruiseSamplingCache.addSampling(fishingOperation, species, @@ -353,7 +353,7 @@ public class IndividualObservationUICache implements Closeable { if (withSamplingCache) { - Boolean maturity = cruiseSamplingCache.getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); + Boolean maturity = cruiseSamplingCache.getMaturity(species.getReferenceTaxonId(), maturityQualitativeValue); cruiseSamplingCache.removeIndividualObservation(fishingOperation, species, gender, @@ -380,7 +380,7 @@ public class IndividualObservationUICache implements Closeable { if (withSamplingCache) { - Boolean maturity = cruiseSamplingCache.getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); + Boolean maturity = cruiseSamplingCache.getMaturity(species.getReferenceTaxonId(), maturityQualitativeValue); cruiseSamplingCache.removeSampling(fishingOperation, species, gender, @@ -523,7 +523,7 @@ public class IndividualObservationUICache implements Closeable { public void decrementsSamplingCode(String samplingCode) { - samplingCodeCache.removeSamplingCode(uiModel.getBatch().getSpecies().getReferenceTaxonId(), samplingCode); + samplingCodeCache.removeSamplingCode(species.getReferenceTaxonId(), samplingCode); // Le code est utilisable addSamplingCodeAvailable(samplingCode); @@ -532,7 +532,7 @@ public class IndividualObservationUICache implements Closeable { public void incrementsSamplingCode(String samplingCode) { - samplingCodeCache.addSamplingCode(uiModel.getBatch().getSpecies().getReferenceTaxonId(), samplingCode); + samplingCodeCache.addSamplingCode(species.getReferenceTaxonId(), samplingCode); // Le code n'est plus utilisable addSamplingCodeNotAvailable(samplingCode); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.