This is an automated email from the git hooks/post-receive script. New commit to branch feature/8228 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 1d555292a11f47709e3af0cc1f50f0a97162318e Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 12 02:47:53 2016 +0200 Ne pas tenir compte de l'algorithme si 1/n vaut 0 ou à sexer mais observation sans sexe (See #8228) --- .../service/sampling/CruiseSamplingCache.java | 189 +++++++++++++-------- 1 file changed, 114 insertions(+), 75 deletions(-) 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 e1d5c86..91add9b 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 @@ -279,47 +279,52 @@ public class CruiseSamplingCache implements Closeable { if (log.isInfoEnabled()) { log.info("Found matching sampling definition: " + cpsDefinition); } - int samplingInterval = cpsDefinition.getSamplingInterval(); - // on ne prend pas en compte les intervales à 0, ni quand l'espece doit etre sexee et que le sexe est nul - if (samplingInterval > 0 && (!cpsDefinition.isSex() || gender != null)) { + if (!canUseCalcifiedPiecesSamplingDefinition(cpsDefinition, gender)) { - if (!cpsDefinition.isSex()) { - gender = null; + if (log.isInfoEnabled()) { + log.info("No using the calcified pieces sampling definition for previous reasons."); } - String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); + return; + } + int samplingInterval = cpsDefinition.getSamplingInterval(); - int totalValue = totalCruiseCache.incrementObservationNb(samplingKey); - int totalSamplingNb = totalCruiseCache.getSamplingNb(samplingKey); + if (!cpsDefinition.isSex()) { + gender = null; + } - int zoneValue = 0; - int zoneSamplingNb = 0; - if (optionalZone.isPresent()) { - String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); - zoneValue = zoneCache.incrementObservationNb(zoneKey); - zoneSamplingNb = zoneCache.getSamplingNb(zoneKey); - } - String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperationId, samplingKey); + String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); - int operationValue = operationCache.incrementObservationNb(operationKey); - int operationSamplingNb = operationCache.getSamplingNb(operationKey); + int totalValue = totalCruiseCache.incrementObservationNb(samplingKey); + int totalSamplingNb = totalCruiseCache.getSamplingNb(samplingKey); - if (log.isInfoEnabled()) { - log.info("add Individual Observation " + samplingKey + " => op " + operationValue + " / zone " + zoneValue + " / cruise " + totalValue); - } + int zoneValue = 0; + int zoneSamplingNb = 0; + if (optionalZone.isPresent()) { + String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); + zoneValue = zoneCache.incrementObservationNb(zoneKey); + zoneSamplingNb = zoneCache.getSamplingNb(zoneKey); + } + String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperationId, samplingKey); - SamplingEvent event = new SamplingEvent(this, lengthStep, gender, maturity, cpsDefinition, optionalZone, totalSamplingNb, zoneSamplingNb, operationSamplingNb); + int operationValue = operationCache.incrementObservationNb(operationKey); + int operationSamplingNb = operationCache.getSamplingNb(operationKey); - if (!isLoading() && (totalValue == 1 || samplingInterval == 1 || totalValue % samplingInterval == 1)) { - if (log.isInfoEnabled()) { - log.info("-> needs sampling"); - } - fireSamplingNeeded(event); - } + if (log.isInfoEnabled()) { + log.info("add Individual Observation " + samplingKey + " => op " + operationValue + " / zone " + zoneValue + " / cruise " + totalValue); + } - fireSummaryUpdated(event); + SamplingEvent event = new SamplingEvent(this, lengthStep, gender, maturity, cpsDefinition, optionalZone, totalSamplingNb, zoneSamplingNb, operationSamplingNb); + if (!isLoading() && (totalValue == 1 || samplingInterval == 1 || totalValue % samplingInterval == 1)) { + if (log.isInfoEnabled()) { + log.info("-> needs sampling"); + } + fireSamplingNeeded(event); } + + fireSummaryUpdated(event); + } } @@ -494,31 +499,34 @@ public class CruiseSamplingCache implements Closeable { if (log.isInfoEnabled()) { log.info("Found matching sampling definition: " + cpsDefinition); } - int samplingInterval = cpsDefinition.getSamplingInterval(); - - // on ne prend pas en compte les intervales à 0, ni quand l'espece doit etre sexee et que le sexe est nul - if (samplingInterval > 0 && (!cpsDefinition.isSex() || gender != null)) { - if (!cpsDefinition.isSex()) { - gender = null; + if (!canUseCalcifiedPiecesSamplingDefinition(cpsDefinition, gender)) { + if (log.isInfoEnabled()) { + log.info("No using the calcified pieces sampling definition for previous reasons."); } + return; + } - String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); + if (!cpsDefinition.isSex()) { + gender = null; + } - int totalValue = totalCruiseCache.decrementObservationNb(samplingKey); - int zoneValue = 0; - if (optionalZone.isPresent()) { - String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); - zoneValue = zoneCache.decrementObservationNb(zoneKey); - } - String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperationId, samplingKey); + String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); + + int totalValue = totalCruiseCache.decrementObservationNb(samplingKey); + int zoneValue = 0; + if (optionalZone.isPresent()) { + String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); + zoneValue = zoneCache.decrementObservationNb(zoneKey); + } + String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperationId, samplingKey); - int operationValue = operationCache.decrementObservationNb(operationKey); + int operationValue = operationCache.decrementObservationNb(operationKey); - if (log.isInfoEnabled()) { - log.info("remove individual observation " + samplingKey + " ⇒ op " + operationValue + " / zone " + zoneValue + " / cruise " + totalValue); - } + if (log.isInfoEnabled()) { + log.info("remove individual observation " + samplingKey + " ⇒ op " + operationValue + " / zone " + zoneValue + " / cruise " + totalValue); } + } } @@ -648,16 +656,17 @@ public class CruiseSamplingCache implements Closeable { } public Optional<SamplingEvent> getEventForSummary(FishingOperation fishingOperation, - Species species, Boolean maturity, + Species species, + Boolean maturity, CaracteristicQualitativeValue gender, int lengthStep) { Objects.requireNonNull(fishingOperation); Objects.requireNonNull(species); - Optional < CalcifiedPiecesSamplingDefinition > cpsDefinitionOpt = getCalcifiedPiecesSamplingDefinition(species, maturity, lengthStep); + Optional<CalcifiedPiecesSamplingDefinition> cpsDefinitionOpt = getCalcifiedPiecesSamplingDefinition(species, maturity, lengthStep); - Optional<SamplingEvent> result; + SamplingEvent event = null; if (cpsDefinitionOpt.isPresent()) { CalcifiedPiecesSamplingDefinition cpsDefinition = cpsDefinitionOpt.get(); @@ -666,41 +675,48 @@ public class CruiseSamplingCache implements Closeable { log.info("Found matching sampling definition: " + cpsDefinition); } - if (!cpsDefinition.isSex()) { - gender = null; - } - String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); + if (!canUseCalcifiedPiecesSamplingDefinition(cpsDefinition, gender)) { - int totalValue = totalCruiseCache.getObservationNb(samplingKey); - int totalSamplingNb = totalCruiseCache.getSamplingNb(samplingKey); + if (log.isInfoEnabled()) { + log.info("No using the calcified pieces sampling definition for previous reasons."); + } - int zoneValue = 0; - int zoneSamplingNb = 0; + } else { - Optional<Zone> optionalZone = tryFindZone(fishingOperation); - if (optionalZone.isPresent()) { - String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); - zoneValue = zoneCache.getObservationNb(zoneKey); - zoneSamplingNb = zoneCache.getSamplingNb(zoneKey); - } + if (!cpsDefinition.isSex()) { + gender = null; + } + String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); - String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperation.getIdAsInt(), samplingKey); + int totalValue = totalCruiseCache.getObservationNb(samplingKey); + int totalSamplingNb = totalCruiseCache.getSamplingNb(samplingKey); - int operationValue = operationCache.getObservationNb(operationKey); - int operationSamplingNb = operationCache.getSamplingNb(operationKey); + int zoneValue = 0; + int zoneSamplingNb = 0; - if (log.isInfoEnabled()) { - log.info("add Individual Observation " + samplingKey + " => op " + operationValue + " / zone " + zoneValue + " / cruise " + totalValue); - } + Optional<Zone> optionalZone = tryFindZone(fishingOperation); + if (optionalZone.isPresent()) { + String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); + zoneValue = zoneCache.getObservationNb(zoneKey); + zoneSamplingNb = zoneCache.getSamplingNb(zoneKey); + } - SamplingEvent event = new SamplingEvent(this, lengthStep, gender, maturity, cpsDefinition, optionalZone, totalSamplingNb, zoneSamplingNb, operationSamplingNb); - result = Optional.of(event); + String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperation.getIdAsInt(), samplingKey); + + int operationValue = operationCache.getObservationNb(operationKey); + int operationSamplingNb = operationCache.getSamplingNb(operationKey); + + if (log.isInfoEnabled()) { + log.info("add Individual Observation " + samplingKey + " => op " + operationValue + " / zone " + zoneValue + " / cruise " + totalValue); + } + + event = new SamplingEvent(this, lengthStep, gender, maturity, cpsDefinition, optionalZone, totalSamplingNb, zoneSamplingNb, operationSamplingNb); + + } - } else { - result = Optional.empty(); } - return result; + return Optional.ofNullable(event); } public Optional<Zone> tryFindZone(FishingOperation operation) { @@ -837,4 +853,27 @@ public class CruiseSamplingCache implements Closeable { return result; } + protected boolean canUseCalcifiedPiecesSamplingDefinition(CalcifiedPiecesSamplingDefinition cpsDefinition, CaracteristicQualitativeValue gender) { + + int samplingInterval = cpsDefinition.getSamplingInterval(); + + // on ne prend pas en compte les intervales à 0 + if (samplingInterval == 0) { + if (log.isInfoEnabled()) { + log.info("Reject matching sampling definition (sampling interval is zero)"); + } + return false; + } + // on ne prend pas en compte quand l'espece doit etre sexee et que le sexe est nul + if (cpsDefinition.isSex() && gender == null) { + if (log.isInfoEnabled()) { + log.info("Reject matching sampling definition (sampling should be sexed, but observation was not)"); + } + return false; + } + + return true; + + } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.