This is an automated email from the git hooks/post-receive script. New commit to branch feature/8207 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit f7abf932f2094c96062f04ed74cb647b64e316c6 Author: Kevin Morin <morin@codelutin.com> Date: Fri Apr 1 17:04:30 2016 +0200 conversion des centimetres en millimetres avant d'envoyer à l'algo de prelevements (refs #8207) --- .../main/java/fr/ifremer/tutti/util/Numbers.java | 24 ++++++++++ .../main/java/fr/ifremer/tutti/util/Weights.java | 5 +- .../service/sampling/CruiseSamplingCache.java | 54 ++++++++++++---------- .../sampling/CruiseSamplingInternalCache.java | 3 +- .../frequency/IndividualObservationUICache.java | 15 +++--- .../species/frequency/SpeciesFrequencyUIModel.java | 8 ++++ 6 files changed, 72 insertions(+), 37 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Numbers.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Numbers.java index 1e2b081..d2e5414 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Numbers.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Numbers.java @@ -81,4 +81,28 @@ public class Numbers { return result; } + public static float convertToCm(float source, String sourceUnit) { + if ("mm".equals(sourceUnit)) { + // measurement in cm asked + source = source / 10; + } + return source; + } + + public static int convertToMm(float source, String sourceUnit) { + if ("cm".equals(sourceUnit)) { + // measurement in mm asked + source = source * 10; + } + return (int) source; + } + + public static float convertFromMm(float source, String targetUnit) { + if ("cm".equals(targetUnit)) { + // measurement in cm asked + source = source / 10; + } + return source; + } + } diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Weights.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Weights.java index c9ddfb8..2ff329d 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Weights.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/util/Weights.java @@ -149,10 +149,7 @@ public class Weights { * @since 4.5 */ public static float computeWithRtp(Rtp rtp, float lengthStep, String lengthStepUnit) { - if ("mm".equals(lengthStepUnit)) { - // measurement in cm asked - lengthStep = lengthStep / 10; - } + lengthStep = Numbers.convertToCm(lengthStep, lengthStepUnit); return (float) (rtp.getA() * Math.pow(lengthStep, rtp.getB())); } 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 93eb2ba..629cb48 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.util.Numbers; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -196,8 +197,9 @@ public class CruiseSamplingCache implements Closeable { Objects.requireNonNull(species); Boolean maturity = getMaturity(individualObservationBatch); - Float lengthStep = individualObservationBatch.getSize(); - Objects.requireNonNull(lengthStep); + + float lengthStep = individualObservationBatch.getSize(); + int lengthStepInMm = Numbers.convertToMm(lengthStep, individualObservationBatch.getLengthStepCaracteristic().getUnit()); CaracteristicQualitativeValue gender = individualObservationBatch.getCaracteristics().getQualitativeValue(sexCaracteristic); @@ -209,9 +211,11 @@ public class CruiseSamplingCache implements Closeable { if (highestSamplingCode == null || code > highestSamplingCode) { highestSamplingCodeBySpecies.put(species.getReferenceTaxonId(), code); } + + addSampling(fishingOperationId, optionalZone, species, gender, maturity, lengthStepInMm, samplingCode); } - addIndividualObservation(fishingOperationId, optionalZone, species, gender, maturity, lengthStep); + addIndividualObservation(fishingOperationId, optionalZone, species, gender, maturity, lengthStepInMm); } /** @@ -221,13 +225,13 @@ public class CruiseSamplingCache implements Closeable { * @param species l'espèces concernée * @param gender le sexe de l'échantillon (peut-être null) * @param maturity la maturité de l'échantillon (peut-être null) - * @param lengthStep la classe de taille de l'échantillon + * @param lengthStep la classe de taille de l'échantillon (en mm) */ public void addIndividualObservation(FishingOperation fishingOperation, Species species, CaracteristicQualitativeValue gender, Boolean maturity, - float lengthStep) { + int lengthStep) { Objects.requireNonNull(fishingOperation); Objects.requireNonNull(species); @@ -246,14 +250,14 @@ public class CruiseSamplingCache implements Closeable { * @param species l'espèces concernée * @param gender le sexe de l'échantillon (peut-être null) * @param maturity la maturité de l'échantillon (peut-être null) - * @param lengthStep la classe de taille de l'échantillon + * @param lengthStep la classe de taille de l'échantillon (en mm) */ public void addIndividualObservation(Integer fishingOperationId, Optional<Zone> optionalZone, Species species, CaracteristicQualitativeValue gender, Boolean maturity, - float lengthStep) { + int lengthStep) { Objects.requireNonNull(fishingOperationId); Objects.requireNonNull(species); @@ -319,14 +323,14 @@ public class CruiseSamplingCache implements Closeable { * @param species l'espèces concernée * @param gender le sexe de l'échantillon (peut-être null) * @param maturity la maturité de l'échantillon (peut-être null) - * @param lengthStep la classe de taille de l'échantillon + * @param lengthStep la classe de taille de l'échantillon (en mm) * @param samplingCode le code de prélèvement ajouté */ public void addSampling(FishingOperation fishingOperation, Species species, CaracteristicQualitativeValue gender, Boolean maturity, - float lengthStep, + int lengthStep, String samplingCode) { Objects.requireNonNull(fishingOperation); @@ -345,7 +349,7 @@ public class CruiseSamplingCache implements Closeable { * @param species l'espèces concernée * @param gender le sexe de l'échantillon (peut-être null) * @param maturity la maturité de l'échantillon (peut-être null) - * @param lengthStep la classe de taille de l'échantillon + * @param lengthStep la classe de taille de l'échantillon (en mm) * @param samplingCode le code de prélèvement ajouté */ public void addSampling(Integer fishingOperationId, @@ -353,7 +357,7 @@ public class CruiseSamplingCache implements Closeable { Species species, CaracteristicQualitativeValue gender, Boolean maturity, - float lengthStep, + int lengthStep, String samplingCode) { Objects.requireNonNull(fishingOperationId); @@ -413,19 +417,21 @@ public class CruiseSamplingCache implements Closeable { Objects.requireNonNull(species); Boolean maturity = getMaturity(individualObservationBatch); - Float lengthStep = individualObservationBatch.getSize(); - Objects.requireNonNull(lengthStep); + + float lengthStep = individualObservationBatch.getSize(); + int lengthStepInMm = Numbers.convertToMm(lengthStep, individualObservationBatch.getLengthStepCaracteristic().getUnit()); + CaracteristicQualitativeValue gender = individualObservationBatch.getCaracteristics().getQualitativeValue(sexCaracteristic); String samplingCode = individualObservationBatch.getSamplingCode(); if (samplingCode != null) { - removeSampling(fishingOperationId, optionalZone, species, gender, maturity, lengthStep, samplingCode); + removeSampling(fishingOperationId, optionalZone, species, gender, maturity, lengthStepInMm, samplingCode); } - removeIndividualObservation(fishingOperationId, optionalZone, species, gender, maturity, lengthStep); + removeIndividualObservation(fishingOperationId, optionalZone, species, gender, maturity, lengthStepInMm); }); @@ -438,17 +444,16 @@ public class CruiseSamplingCache implements Closeable { * @param species l'espèces concernée * @param gender le sexe de l'échantillon (peut-être null) * @param maturity la maturité de l'échantillon (peut-être null) - * @param lengthStep la classe de taille de l'échantillon + * @param lengthStep la classe de taille de l'échantillon (en mm) */ public void removeIndividualObservation(FishingOperation fishingOperation, Species species, CaracteristicQualitativeValue gender, Boolean maturity, - Float lengthStep) { + int lengthStep) { Objects.requireNonNull(fishingOperation); Objects.requireNonNull(species); - Objects.requireNonNull(lengthStep); Optional<Zone> optionalZone = tryFindZone(fishingOperation); @@ -464,19 +469,18 @@ public class CruiseSamplingCache implements Closeable { * @param species l'espèces concernée * @param gender le sexe de l'échantillon (peut-être null) * @param maturity la maturité de l'échantillon (peut-être null) - * @param lengthStep la classe de taille de l'échantillon + * @param lengthStep la classe de taille de l'échantillon (en mm) */ public void removeIndividualObservation(Integer fishingOperationId, Optional<Zone> optionalZone, Species species, CaracteristicQualitativeValue gender, Boolean maturity, - Float lengthStep) { + int lengthStep) { Objects.requireNonNull(fishingOperationId); Objects.requireNonNull(optionalZone); Objects.requireNonNull(species); - Objects.requireNonNull(lengthStep); Optional<CalcifiedPiecesSamplingDefinition> cpsDefinitionOpt = getCalcifiedPiecesSamplingDefinition(species, maturity, lengthStep); @@ -522,14 +526,14 @@ public class CruiseSamplingCache implements Closeable { * @param species l'espèces concernée * @param gender le sexe de l'échantillon (peut-être null) * @param maturity la maturité de l'échantillon (peut-être null) - * @param lengthStep la classe de taille de l'échantillon + * @param lengthStep la classe de taille de l'échantillon (en mm) * @param samplingCode le code de prélèvement supprimé */ public void removeSampling(FishingOperation fishingOperation, Species species, CaracteristicQualitativeValue gender, Boolean maturity, - float lengthStep, + int lengthStep, String samplingCode) { Objects.requireNonNull(fishingOperation); @@ -548,7 +552,7 @@ public class CruiseSamplingCache implements Closeable { * @param species l'espèces concernée * @param gender le sexe de l'échantillon (peut-être null) * @param maturity la maturité de l'échantillon (peut-être null) - * @param lengthStep la classe de taille de l'échantillon + * @param lengthStep la classe de taille de l'échantillon (en mm) * @param samplingCode le code de prélèvement supprimé */ public void removeSampling(Integer fishingOperationId, @@ -556,7 +560,7 @@ public class CruiseSamplingCache implements Closeable { Species species, CaracteristicQualitativeValue gender, Boolean maturity, - float lengthStep, + int lengthStep, String samplingCode) { Objects.requireNonNull(fishingOperationId); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingInternalCache.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingInternalCache.java index 96afef3..bb4ff26 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingInternalCache.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingInternalCache.java @@ -52,9 +52,8 @@ class CruiseSamplingInternalCache implements Closeable { private static final String KEY_SEPARATOR = "#"; - public static String createSamplingKey(Species species, CaracteristicQualitativeValue gender, Boolean maturity, Float lengthStep) { + public static String createSamplingKey(Species species, CaracteristicQualitativeValue gender, Boolean maturity, int lengthStep) { Objects.requireNonNull(species); - Objects.requireNonNull(lengthStep); return species.getReferenceTaxonId() + KEY_SEPARATOR + (gender == null ? null : gender.getId()) + KEY_SEPARATOR + maturity 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 2f5762b..a0c2f63 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 @@ -36,6 +36,7 @@ import fr.ifremer.tutti.service.sampling.SamplingEvent; import fr.ifremer.tutti.service.sampling.SamplingListener; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; +import fr.ifremer.tutti.util.Numbers; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; @@ -160,7 +161,9 @@ public class IndividualObservationUICache implements Closeable { String nbForCruiseLabel = getLabelForSamplingNumber(nbForCruise, cpsDef.getMaxByLenghtStep()); Decorator<Species> speciesDecorator = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE); - String key = speciesDecorator.toString(species) + " " + event.getLengthStep() + " " + uiModel.getLengthStepCaracteristicUnit(); + String key = speciesDecorator.toString(species) + + " " + Numbers.convertFromMm(event.getLengthStep(), uiModel.getLengthStepCaracteristicUnit()) + + " " + uiModel.getLengthStepCaracteristicUnit(); if (event.getGender() != null) { key += " " + event.getGender().getDescription(); } @@ -264,7 +267,7 @@ public class IndividualObservationUICache implements Closeable { species, gender, maturity, - uiModel.getLengthStep(lengthStep)); + uiModel.getLengthStepInMm(lengthStep)); if (samplingCode.isPresent()) { incrementsSamplingNb(gender, maturityQualitativeValue, lengthStep, samplingCode.get()); @@ -296,7 +299,7 @@ public class IndividualObservationUICache implements Closeable { species, gender, maturity, - uiModel.getLengthStep(lengthStep), + uiModel.getLengthStepInMm(lengthStep), samplingCode); } @@ -348,10 +351,10 @@ public class IndividualObservationUICache implements Closeable { species, gender, maturity, - uiModel.getLengthStep(lengthStep)); + uiModel.getLengthStepInMm(lengthStep)); if (samplingCode.isPresent()) { - decrementsSamplingNb(gender, maturityQualitativeValue, uiModel.getLengthStep(lengthStep), samplingCode.get()); + decrementsSamplingNb(gender, maturityQualitativeValue, lengthStep, samplingCode.get()); } } @@ -380,7 +383,7 @@ public class IndividualObservationUICache implements Closeable { species, gender, maturity, - uiModel.getLengthStep(lengthStep), + uiModel.getLengthStepInMm(lengthStep), samplingCode); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java index fe1d875..eec8c99 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java @@ -32,6 +32,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBent import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.util.computable.ComputableData; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; +import fr.ifremer.tutti.util.Numbers; import fr.ifremer.tutti.util.Weights; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; @@ -563,6 +564,13 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa return correctIntStep / 10f; } + public int getLengthStepInMm(float lengthStep) { + int intValue = (int) (lengthStep * 10); + int intStep = (int) (step * 10); + int correctIntStep = intValue - (intValue % intStep); + return Numbers.convertToMm(correctIntStep / 10f, getLengthStepCaracteristicUnit()); + } + public Integer getTotalNumber() { return totalNumber; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.