branch develop updated (c660204 -> fa3f076)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git from c660204 [jgitflow-maven-plugin]Updating develop poms back to pre merge state new fa3f076 fixes #8337 The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit fa3f076c4a5774fd3d8bd4b9185cce78f29f866f Author: Benjamin POUSSIN <poussin@codelutin.com> Date: Wed Jun 8 18:12:51 2016 +0200 fixes #8337 Summary of changes: .../entities/referential/CaracteristicBean.java | 27 ++++++++++++++++ .../src/main/xmi/tutti-persistence.zargo | Bin 59750 -> 59923 bytes .../tutti/service/bigfin/BigfinImportService.java | 25 ++++++++------- .../catches/multipost/MultiPostImportService.java | 14 ++++----- .../tutti/service/cruise/CruiseCacheLoader.java | 7 +++-- .../service/sampling/CruiseSamplingCache.java | 29 +++++++++++++++--- .../species/frequency/SpeciesFrequencyUIModel.java | 34 ++++++++++++++------- 7 files changed, 98 insertions(+), 38 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit fa3f076c4a5774fd3d8bd4b9185cce78f29f866f Author: Benjamin POUSSIN <poussin@codelutin.com> Date: Wed Jun 8 18:12:51 2016 +0200 fixes #8337 --- .../entities/referential/CaracteristicBean.java | 27 ++++++++++++++++ .../src/main/xmi/tutti-persistence.zargo | Bin 59750 -> 59923 bytes .../tutti/service/bigfin/BigfinImportService.java | 25 ++++++++------- .../catches/multipost/MultiPostImportService.java | 14 ++++----- .../tutti/service/cruise/CruiseCacheLoader.java | 7 +++-- .../service/sampling/CruiseSamplingCache.java | 29 +++++++++++++++--- .../species/frequency/SpeciesFrequencyUIModel.java | 34 ++++++++++++++------- 7 files changed, 98 insertions(+), 38 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/CaracteristicBean.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/CaracteristicBean.java index b3a3b35..8b9cd2b 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/CaracteristicBean.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/CaracteristicBean.java @@ -25,11 +25,38 @@ package fr.ifremer.tutti.persistence.entities.referential; */ import com.google.common.base.MoreObjects; +import fr.ifremer.tutti.util.Numbers; public class CaracteristicBean extends AbstractCaracteristicBean { private static final long serialVersionUID = 1L; + public static final Float DEFAULT_PRECISION = 0.1f; + + @Override + public Integer getLengthStepInMm(Float lengthStep) { + Integer lengthClass; + if (lengthStep == null) { + lengthClass = null; + } else { + int intValue = (int) (lengthStep * 10); + int intStep = (int) (getPrecision() * 10); + int correctIntStep = intValue - (intValue % intStep); + lengthClass = Numbers.convertToMm(correctIntStep / 10f, getUnit()); + } + return lengthClass; + } + + @Override + public Float getPrecision() { + Float result = super.getPrecision(); + if (result == null) { + // on ne met pas 1 c'est la valeur par défaut + result = DEFAULT_PRECISION; + } + return result; + } + @Override public String toString() { return MoreObjects.toStringHelper(Caracteristic.class) diff --git a/tutti-persistence/src/main/xmi/tutti-persistence.zargo b/tutti-persistence/src/main/xmi/tutti-persistence.zargo index 76c03f3..99a9040 100644 Binary files a/tutti-persistence/src/main/xmi/tutti-persistence.zargo and b/tutti-persistence/src/main/xmi/tutti-persistence.zargo differ diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java index f3178d9..97a331c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/bigfin/BigfinImportService.java @@ -62,16 +62,6 @@ import fr.ifremer.tutti.service.bigfin.signs.Sign; import fr.ifremer.tutti.service.bigfin.signs.Size; import fr.ifremer.tutti.service.bigfin.signs.VracHorsVrac; import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.util.Weights; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.IterableUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.csv.Import; -import org.nuiton.csv.ImportRuntimeException; -import org.nuiton.jaxx.application.ApplicationBusinessException; - import java.io.File; import java.io.IOException; import java.io.Reader; @@ -83,6 +73,14 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.IterableUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.csv.Import; +import org.nuiton.csv.ImportRuntimeException; +import org.nuiton.jaxx.application.ApplicationBusinessException; import static org.nuiton.i18n.I18n.t; @@ -483,9 +481,10 @@ public class BigfinImportService extends AbstractTuttiService { Preconditions.checkNotNull(lengthStepPmfm); String unit = lengthStepPmfm.getUnit(); Float precision = lengthStepPmfm.getPrecision(); - if (precision == null) { - precision = 1f; - } + // CHANGE poussin 2016, maintenant getPrecision retourne toujours quelque chose +// if (precision == null) { +// precision = 1f; +// } // board measurements are in mm diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java index d4c0e5b..7023a09 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/MultiPostImportService.java @@ -51,6 +51,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequencys; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchs; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicBean; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Species; @@ -81,12 +82,6 @@ import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterWeightRow; import fr.ifremer.tutti.service.catches.multipost.csv.MarineLitterWeightRowModel; import fr.ifremer.tutti.service.csv.CaracteristicValueParserFormatter; import fr.ifremer.tutti.type.WeightUnit; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.Pair; -import org.nuiton.csv.Import; -import org.nuiton.jaxx.application.ApplicationBusinessException; -import org.nuiton.jaxx.application.ApplicationTechnicalException; - import java.io.File; import java.io.IOException; import java.io.Reader; @@ -102,6 +97,11 @@ import java.util.Map; import java.util.Objects; import java.util.TreeMap; import java.util.function.Supplier; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.nuiton.csv.Import; +import org.nuiton.jaxx.application.ApplicationBusinessException; +import org.nuiton.jaxx.application.ApplicationTechnicalException; import static org.nuiton.i18n.I18n.t; @@ -1420,7 +1420,7 @@ public class MultiPostImportService extends AbstractTuttiService implements Mult step = caracteristic.getPrecision(); } if (step == null) { - step = 1f; + step = CaracteristicBean.DEFAULT_PRECISION; } return step; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheLoader.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheLoader.java index 00be5f3..24ed1b3 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheLoader.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/cruise/CruiseCacheLoader.java @@ -33,13 +33,12 @@ 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 java.util.Collection; +import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; -import java.util.Collection; -import java.util.List; - import static org.nuiton.i18n.I18n.t; /** @@ -100,6 +99,8 @@ public class CruiseCacheLoader { log.info("Loading cruise cache: " + cruiseCache); } + // FIXME poussin 20160608 a reecrire pour de meilleur performance, il faut remonter + // tous les fishingOperation en une fois et non pas faire N requete Decorator<FishingOperation> fishingOperationDecorator = decoratorService.getDecoratorByType(FishingOperation.class); persistenceService.getAllFishingOperationIds(cruiseCache.getCruiseId()).forEach(fishingOperationId -> { 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 f6c4e19..8670c37 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 @@ -40,9 +40,6 @@ 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; - import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -50,6 +47,8 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.stream.IntStream; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import static fr.ifremer.tutti.service.sampling.CruiseSamplingInternalCache.addPrefixKey; @@ -177,7 +176,8 @@ public class CruiseSamplingCache implements CruiseCacheAble { Boolean maturity = getMaturity(individualObservationBatch); - int lengthStepInMm = Numbers.convertToMm(lengthStep, individualObservationBatch.getLengthStepCaracteristic().getUnit()); + // don't forget to compute lengthStep with Caracteristic https://forge.codelutin.com/issues/8337 + int lengthStepInMm = individualObservationBatch.getLengthStepCaracteristic().getLengthStepInMm(lengthStep); CaracteristicQualitativeValue gender = individualObservationBatch.getCaracteristics().getQualitativeValue(sexCaracteristic); @@ -404,9 +404,25 @@ public class CruiseSamplingCache implements CruiseCacheAble { String zoneSamplingKey = context.getZoneSamplingKey(); CruiseSamplingInternalCache.SamplingData zoneSamplingData = zoneCache.getSamplingData(zoneSamplingKey); + if (zoneSamplingData == null) { + // poussin 20160608 fallback code to prevent UI error + // fixes with https://forge.codelutin.com/issues/8337 + log.error(String.format("Can't find zoneSamplingData, create one" + + " (zoneSamplingKey: '%s'; request: '%s'; zone: '%s')", + zoneSamplingKey, request, optionalZone.get())); + zoneSamplingData = zoneCache.getOrCreateSamplingData(zoneSamplingKey); + } String fishingOperationSamplingKey = context.getFishingOperationSamplingKey(); CruiseSamplingInternalCache.SamplingData fishingOperationSamplingData = fishingOperationCache.getSamplingData(fishingOperationSamplingKey); + if (fishingOperationSamplingData == null) { + // poussin 20160608 fallback code to prevent UI error + // fixes with https://forge.codelutin.com/issues/8337 + log.error(String.format("Can't find fishingOperationSamplingData, create one" + + " (fishingOperationSamplingData: '%s'; request: '%s'; zone: '%s)", + zoneSamplingKey, request, optionalZone.get())); + fishingOperationSamplingData = fishingOperationCache.getOrCreateSamplingData(fishingOperationSamplingKey); + } // on demande à calculer needSampling uniquement s'il n'y a pas de code de prélèvement sur l'observation boolean computeSampling = !request.withSamplingCode(); @@ -500,6 +516,11 @@ public class CruiseSamplingCache implements CruiseCacheAble { private Optional<Zone> tryFindZone(TuttiLocation location) { + // FIXME poussin 20160608 si on est obligé de parcourir pour chacun la + // collection, c'est que ce n'est pas le bon format de stockage. + // Modifier pour que la recherche soit faite sans parcours + // il faudrait plutot Map[locationId -> Zone] + // ce code est appeler de très nombreuse fois Integer locationId = location.getIdAsInt(); return locationIdsPerZone.keySet() .stream() 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 aedbb88..42b8325 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 @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicBean; import fr.ifremer.tutti.service.cruise.CruiseCache; import fr.ifremer.tutti.service.sampling.IndividualObservationSamplingCacheRequest; import fr.ifremer.tutti.type.WeightUnit; @@ -37,15 +38,14 @@ 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; -import org.apache.commons.logging.LogFactory; - import java.beans.PropertyVetoException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * @author Tony Chemit - chemit@codelutin.com @@ -433,7 +433,7 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa } if (step == null) { // on ne met pas 1 c'est la valeur par défaut - step = 0.1f; + step = CaracteristicBean.DEFAULT_PRECISION; } setStep(step); } @@ -560,15 +560,27 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa return correctIntStep / 10f; } + // FIXME poussin 20160608 ce code est duplique avec le CaracteristicBean#getLengthStepInMm + // Il faudrait supprimer le code qui est ici pour utiliser celui de l'objet. + // public Integer getLengthStepInMm(Float lengthStep) { Integer lengthClass; - if (lengthStep == null) { - lengthClass = null; + + Caracteristic c = getLengthStepCaracteristic(); + if (c != null && c.getPrecision().equals(step)) { + lengthClass = c.getLengthStepInMm(lengthStep); } else { - int intValue = (int) (lengthStep * 10); - int intStep = (int) (step * 10); - int correctIntStep = intValue - (intValue % intStep); - lengthClass = Numbers.convertToMm(correctIntStep / 10f, getLengthStepCaracteristicUnit()); + // legacy code, here because step and unit can be set independantly :( + // this is very strange, and must be refactored (step and unit must + // be all time associate via Caracteristic object) + if (lengthStep == null) { + lengthClass = null; + } else { + int intValue = (int) (lengthStep * 10); + int intStep = (int) (step * 10); + int correctIntStep = intValue - (intValue % intStep); + lengthClass = Numbers.convertToMm(correctIntStep / 10f, getLengthStepCaracteristicUnit()); + } } return lengthClass; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm