This is an automated email from the git hooks/post-receive script. New commit to branch feature/8177 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit c14178ff3d68973315266dcb80f78a3055eaf92e Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 29 11:56:16 2016 +0200 gestion des prélèvements + affichage des prélèvements réels (refs #8177 refs #8152) --- .../frequency/IndividualObservationUICache.java | 155 +++++++++++++++++---- .../frequency/SpeciesFrequencyUIHandler.java | 138 +++++++++--------- 2 files changed, 200 insertions(+), 93 deletions(-) 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 e4a8f0d..4f385a7 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 @@ -122,15 +122,16 @@ public class IndividualObservationUICache implements Closeable { log.info("samplingNeeded for " + cpsDef); } - int nbForOperation = event.getNbForOperation(); - int nbForZone = event.getNbForZone(); - int nbForCruise = event.getNbForCruise(); - - Integer operationLimitation = cpsDef.getOperationLimitation(); - Integer zoneLimitation = cpsDef.getZoneLimitation(); - Integer maxByLenghtStep = cpsDef.getMaxByLenghtStep(); + int nbForOperation = event.getNbSamplingForOperation(); + int nbForZone = event.getNbSamplingForZone(); + int nbForCruise = event.getNbSamplingForCruise(); if (log.isInfoEnabled()) { + + Integer operationLimitation = cpsDef.getOperationLimitation(); + Integer zoneLimitation = cpsDef.getZoneLimitation(); + Integer maxByLenghtStep = cpsDef.getMaxByLenghtStep(); + log.info(String.format("nbForOperation: %d/%s - nbForZone: %d/%s - nbForCruise: %d/%s", nbForOperation, operationLimitation == null ? "∞" : operationLimitation, nbForZone, zoneLimitation == null ? "∞" : zoneLimitation, @@ -146,12 +147,28 @@ public class IndividualObservationUICache implements Closeable { log.info("showSamplingWarning " + showSamplingWarning); } ui.getSamplingWarningLabel().setVisible(showSamplingWarning); + } + + @Override + public void resumeUpdated(SamplingEvent event) { + + CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); + if (log.isInfoEnabled()) { + log.info("samplingNeeded for " + cpsDef); + } + + int nbForOperation = event.getNbSamplingForOperation(); + int nbForZone = event.getNbSamplingForZone(); + int nbForCruise = event.getNbSamplingForCruise(); - String nbForOperationLabel = getLabelForSamplingNumber(operationValueUpperMax, nbForOperation, operationLimitation); - String nbForZoneLabel = getLabelForSamplingNumber(zoneValueUpperMax, nbForZone, zoneLimitation); - String nbForCruiseLabel = getLabelForSamplingNumber(cruiseValueUpperMax, nbForCruise, maxByLenghtStep); +// boolean operationValueUpperMax = CalcifiedPiecesSamplingDefinitions.isOperationValueUpperMax(cpsDef, nbForOperation); +// boolean zoneValueUpperMax = CalcifiedPiecesSamplingDefinitions.isZoneValueUpperMax(cpsDef, nbForZone); +// boolean cruiseValueUpperMax = CalcifiedPiecesSamplingDefinitions.isCruiseValueUpperMax(cpsDef, nbForCruise); + + String nbForOperationLabel = getLabelForSamplingNumber(nbForOperation, cpsDef.getOperationLimitation()); + String nbForZoneLabel = getLabelForSamplingNumber(nbForZone, cpsDef.getZoneLimitation()); + String nbForCruiseLabel = getLabelForSamplingNumber(nbForCruise, cpsDef.getMaxByLenghtStep()); - //TODO add mauturity String key = event.getLengthStep() + " " + uiModel.getLengthStepCaracteristicUnit(); if (event.getGender() != null) { key += " " + event.getGender().getDescription(); @@ -164,18 +181,10 @@ public class IndividualObservationUICache implements Closeable { } } ui.getSamplingResumeLabel().setText(t("tutti.editSpeciesFrequencies.samplingNeeded.resume", key, nbForOperationLabel, nbForZoneLabel, nbForCruiseLabel)); - } - String getLabelForSamplingNumber(boolean valueUpperMax, int value, Integer max) { - String result; - if (valueUpperMax) { - result = t("tutti.editSpeciesFrequencies.samplingNeeded.max"); - } else { - // min à 0 (pour le cas où on ne soit pas dans une zone (pas de strate ou de sous strate définie)) - result = String.valueOf(Math.max(0, value - 1)); - } - return result; + String getLabelForSamplingNumber(int value, Integer max) { + return value + "(" + max + ")"; } }; @@ -215,8 +224,19 @@ public class IndividualObservationUICache implements Closeable { */ public void increments(IndividualObservationBatchRowModel row) { - increments(row.getGender(sexCaracteristic), row.getMaturityState(), row.getSize()); + incrementsObservationNb(row.getGender(sexCaracteristic), row.getMaturityState(), row.getSize(), Optional.ofNullable(row.getSamplingCode())); + + } + /** + * Ajoute une observation individuelle via ses composantes (sexe, maturité, classe de taille) dans le cache. + * + * @param gender le sexe + * @param maturityQualitativeValue l'état de maturité + * @param lengthStep la classe de taille + */ + public void incrementsObservationNb(CaracteristicQualitativeValue gender, Optional<CaracteristicQualitativeValue> maturityQualitativeValue, float lengthStep) { + incrementsObservationNb(gender, maturityQualitativeValue, lengthStep, Optional.empty()); } /** @@ -225,8 +245,12 @@ public class IndividualObservationUICache implements Closeable { * @param gender le sexe * @param maturityQualitativeValue l'état de maturité * @param lengthStep la classe de taille + * @param samplingCode le code de prélèvement ajouté s'il y en a un */ - public void increments(CaracteristicQualitativeValue gender, Optional<CaracteristicQualitativeValue> maturityQualitativeValue, float lengthStep) { + public void incrementsObservationNb(CaracteristicQualitativeValue gender, + Optional<CaracteristicQualitativeValue> maturityQualitativeValue, + float lengthStep, + Optional<String> samplingCode) { if (!on) { if (log.isDebugEnabled()) { @@ -241,6 +265,39 @@ public class IndividualObservationUICache implements Closeable { gender, maturity, uiModel.getLengthStep(lengthStep)); + + if (samplingCode.isPresent()) { + incrementsSamplingNb(gender, maturityQualitativeValue, lengthStep, samplingCode.get()); + } + } + + /** + * Ajoute une observation individuelle via ses composantes (sexe, maturité, classe de taille) dans le cache. + * + * @param gender le sexe + * @param maturityQualitativeValue l'état de maturité + * @param lengthStep la classe de taille + * @param samplingCode le code de prélèvement ajouté + */ + public void incrementsSamplingNb(CaracteristicQualitativeValue gender, + Optional<CaracteristicQualitativeValue> maturityQualitativeValue, + float lengthStep, + String samplingCode) { + + if (!on) { + if (log.isDebugEnabled()) { + log.debug("Cache is off, skip increments sampling in cache."); + } + return; + } + + Boolean maturity = samplingCache.get().getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); + samplingCache.get().addSampling(fishingOperation, + species, + gender, + maturity, + uiModel.getLengthStep(lengthStep), + samplingCode); } /** @@ -250,8 +307,20 @@ public class IndividualObservationUICache implements Closeable { */ public void decrements(IndividualObservationBatchRowModel row) { - decrements(row.getGender(sexCaracteristic), row.getMaturityState(), row.getSize()); + decrementsObservationNb(row.getGender(sexCaracteristic), row.getMaturityState(), row.getSize(), Optional.ofNullable(row.getSamplingCode())); + + } + + /** + * Retire une observation individuelle via ses composantes (sexe, maturité, classe de taille) dans le cache. + * + * @param gender le sexe + * @param maturityQualitativeValue l'état de maturité + * @param lengthStep la classe de taille + */ + public void decrementsObservationNb(CaracteristicQualitativeValue gender, Optional<CaracteristicQualitativeValue> maturityQualitativeValue, float lengthStep) { + decrementsObservationNb(gender, maturityQualitativeValue, lengthStep, Optional.empty()); } /** @@ -260,8 +329,12 @@ public class IndividualObservationUICache implements Closeable { * @param gender le sexe * @param maturityQualitativeValue l'état de maturité * @param lengthStep la classe de taille + * @param samplingCode le code de prélèvement supprimée */ - public void decrements(CaracteristicQualitativeValue gender, Optional<CaracteristicQualitativeValue> maturityQualitativeValue, float lengthStep) { + public void decrementsObservationNb(CaracteristicQualitativeValue gender, + Optional<CaracteristicQualitativeValue> maturityQualitativeValue, + float lengthStep, + Optional<String> samplingCode) { if (!on) { if (log.isDebugEnabled()) { @@ -277,6 +350,38 @@ public class IndividualObservationUICache implements Closeable { maturity, uiModel.getLengthStep(lengthStep)); + if (samplingCode.isPresent()) { + decrementsSamplingNb(gender, maturityQualitativeValue, uiModel.getLengthStep(lengthStep), samplingCode.get()); + } + } + + /** + * Ajoute une observation individuelle via ses composantes (sexe, maturité, classe de taille) dans le cache. + * + * @param gender le sexe + * @param maturityQualitativeValue l'état de maturité + * @param lengthStep la classe de taille + * @param samplingCode le code de prélèvement supprimé + */ + public void decrementsSamplingNb(CaracteristicQualitativeValue gender, + Optional<CaracteristicQualitativeValue> maturityQualitativeValue, + float lengthStep, + String samplingCode) { + + if (!on) { + if (log.isDebugEnabled()) { + log.debug("Cache is off, skip increments sampling in cache."); + } + return; + } + + Boolean maturity = samplingCache.get().getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); + samplingCache.get().removeSampling(fishingOperation, + species, + gender, + maturity, + uiModel.getLengthStep(lengthStep), + samplingCode); } /** diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java index 7c5dde2..3771adf 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -51,10 +51,6 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellEditor; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.EditSpeciesBatchPanelUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.EditSpeciesBatchPanelUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyCellComponent.FrequencyCellEditor; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ApplySpeciesFrequencyRafaleAction; @@ -225,88 +221,94 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci CaracteristicQualitativeValue gender = row.getGender(sexCaracteristic); Optional<CaracteristicQualitativeValue> maturity = row.getMaturityState(); - // we only update the frequencies if the row is valid - if (row.isValid()) { + if (IndividualObservationBatchRowModel.PROPERTY_SIZE.equals(propertyName)) { - if (log.isDebugEnabled()) { - log.debug("Row is valid"); - } - if (IndividualObservationBatchRowModel.PROPERTY_SIZE.equals(propertyName)) { + Float oldValue = (Float) evt.getOldValue(); + Float newValue = (Float) evt.getNewValue(); - Float oldValue = (Float) evt.getOldValue(); - Float newValue = (Float) evt.getNewValue(); - - if (oldValue != null) { - individualObservationUICache.decrements(gender, maturity, oldValue); - } - if (newValue != null) { - individualObservationUICache.increments(gender, maturity, newValue); - } + if (oldValue != null) { + individualObservationUICache.decrementsObservationNb(gender, maturity, oldValue, Optional.ofNullable(row.getSamplingCode())); + } + if (newValue != null) { + individualObservationUICache.incrementsObservationNb(gender, maturity, newValue, Optional.ofNullable(row.getSamplingCode())); + } - if (getModel().mustCopyIndividualObservationSize()) { - updateFrequencyRowsNumbers(oldValue, newValue); + // we only update the frequencies if the row is valid + if (row.isValid() && getModel().mustCopyIndividualObservationSize()) { + updateFrequencyRowsNumbers(oldValue, newValue); - Float weight = row.getWeight(); - if (getModel().mustCopyIndividualObservationWeight() && weight != null) { - updateFrequencyRowsWeights(oldValue, -weight); - updateFrequencyRowsWeights(newValue, weight); - } + Float weight = row.getWeight(); + if (getModel().mustCopyIndividualObservationWeight() && weight != null) { + updateFrequencyRowsWeights(oldValue, -weight); + updateFrequencyRowsWeights(newValue, weight); } } + } - if (getModel().mustCopyIndividualObservationWeight() - && IndividualObservationBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) { + if (row.isValid() && getModel().mustCopyIndividualObservationWeight() + && IndividualObservationBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) { - Float oldValue = (Float) evt.getOldValue(); - Float newValue = (Float) evt.getNewValue(); - Float weightToAdd; + Float oldValue = (Float) evt.getOldValue(); + Float newValue = (Float) evt.getNewValue(); + Float weightToAdd; - if (oldValue == null) { - weightToAdd = newValue; + if (oldValue == null) { + weightToAdd = newValue; - } else if (newValue == null) { - weightToAdd = -oldValue; + } else if (newValue == null) { + weightToAdd = -oldValue; - } else { - weightToAdd = newValue - oldValue; - } + } else { + weightToAdd = newValue - oldValue; + } - if (weightToAdd != null) { - updateFrequencyRowsWeights(row.getSize(), weightToAdd); - } + if (weightToAdd != null) { + updateFrequencyRowsWeights(row.getSize(), weightToAdd); } + } - if (row.withSize() - && (IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS.equals(propertyName) - || IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS.equals(propertyName))) { + if (row.withSize() + && (IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS.equals(propertyName) + || IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS.equals(propertyName))) { - CaracteristicMap oldValue = (CaracteristicMap) evt.getOldValue(); - CaracteristicMap newValue = (CaracteristicMap) evt.getNewValue(); + CaracteristicMap oldValue = (CaracteristicMap) evt.getOldValue(); + CaracteristicMap newValue = (CaracteristicMap) evt.getNewValue(); + + if (log.isInfoEnabled()) { + log.info("caracteristics changed"); + } + if (row.getMaturityCaracteristic().isPresent()) { + Optional<CaracteristicQualitativeValue> oldMaturity = Optional.ofNullable((CaracteristicQualitativeValue) oldValue.get(row.getMaturityCaracteristic().get())); + Optional<CaracteristicQualitativeValue> newMaturity = Optional.ofNullable((CaracteristicQualitativeValue) newValue.get(row.getMaturityCaracteristic().get())); if (log.isInfoEnabled()) { - log.info("caracteristics changed"); + log.info("maturities : " + oldMaturity + " " + newMaturity); } - - if (row.getMaturityCaracteristic().isPresent()) { - Optional<CaracteristicQualitativeValue> oldMaturity = Optional.ofNullable((CaracteristicQualitativeValue) oldValue.get(row.getMaturityCaracteristic().get())); - Optional<CaracteristicQualitativeValue> newMaturity = Optional.ofNullable((CaracteristicQualitativeValue) newValue.get(row.getMaturityCaracteristic().get())); - if (log.isInfoEnabled()) { - log.info("maturities : " + oldMaturity + " " + newMaturity); - } - if (!Objects.equals(oldMaturity, newMaturity)) { - individualObservationUICache.decrements(gender, oldMaturity, row.getSize()); - individualObservationUICache.increments(gender, newMaturity, row.getSize()); - } + if (!Objects.equals(oldMaturity, newMaturity)) { + individualObservationUICache.decrementsObservationNb(gender, oldMaturity, row.getSize()); + individualObservationUICache.incrementsObservationNb(gender, newMaturity, row.getSize(), Optional.ofNullable(row.getSamplingCode())); } + } - CaracteristicQualitativeValue oldGender = (CaracteristicQualitativeValue) oldValue.get(sexCaracteristic); - CaracteristicQualitativeValue newGender = (CaracteristicQualitativeValue) newValue.get(sexCaracteristic); - if (!Objects.equals(oldGender, newGender)) { - individualObservationUICache.decrements(oldGender, maturity, row.getSize()); - individualObservationUICache.increments(newGender, maturity, row.getSize()); - } + CaracteristicQualitativeValue oldGender = (CaracteristicQualitativeValue) oldValue.get(sexCaracteristic); + CaracteristicQualitativeValue newGender = (CaracteristicQualitativeValue) newValue.get(sexCaracteristic); + if (!Objects.equals(oldGender, newGender)) { + individualObservationUICache.decrementsObservationNb(oldGender, maturity, row.getSize()); + individualObservationUICache.incrementsObservationNb(newGender, maturity, row.getSize(), Optional.ofNullable(row.getSamplingCode())); + } + + } + + if (IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE.equals(propertyName) && row.withSize()) { + String oldValue = (String) evt.getOldValue(); + String newValue = (String) evt.getNewValue(); + if (StringUtils.isNotBlank(oldValue)) { + individualObservationUICache.decrementsSamplingNb(gender, maturity, row.getSize(), oldValue); + } + if (StringUtils.isNotBlank(newValue)) { + individualObservationUICache.incrementsSamplingNb(gender, maturity, row.getSize(), newValue); } } @@ -319,14 +321,14 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci if (oldValue && getModel().mustCopyIndividualObservationSize()) { updateFrequencyRowsNumbers(row.getSize(), null); - individualObservationUICache.decrements(gender, maturity, row.getSize()); +// individualObservationUICache.decrementsObservationNb(gender, maturity, row.getSize()); } if (newValue) { if (getModel().mustCopyIndividualObservationSize()) { updateFrequencyRowsNumbers(null, row.getSize()); - if (row.withSize()) { - individualObservationUICache.increments(gender, maturity, row.getSize()); - } +// if (row.withSize()) { +// individualObservationUICache.incrementsObservationNb(gender, maturity, row.getSize()); +// } } if (getModel().mustCopyIndividualObservationWeight()) { updateFrequencyRowsWeights(row.getSize(), row.getWeight()); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.