branch feature/8109 updated (fa8b548 -> dbadce9)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8109 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git from fa8b548 gestion de la maturité dans le cache des observations individuelles (refs #8109) new d2fde3e gestion des maturités dans l'algo de prélèvement (fixes #8109) new dbadce9 fix optional error (see #8109) The 2 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 dbadce9642ed658ad20b8ea15631963a4b1e90e9 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 24 11:36:44 2016 +0100 fix optional error (see #8109) commit d2fde3ea96cd590242dfd45bf8a59450075d9e6f Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 24 11:32:46 2016 +0100 gestion des maturités dans l'algo de prélèvement (fixes #8109) Summary of changes: .../service/samplingCache/CruiseSamplingCache.java | 23 +++++++---- .../samplingCache/CruiseSamplingCacheLoader.java | 5 +-- .../IndividualObservationBatchRowModel.java | 24 ++++++++++-- .../IndividualObservationBatchTableModel.java | 11 ++++++ .../frequency/IndividualObservationUICache.java | 18 +++++---- .../frequency/SpeciesFrequencyUIHandler.java | 45 +++++++++++++--------- ...yCaracteristicPopupUIModel-error-validation.xml | 2 +- .../resources/i18n/tutti-ui-swing_fr_FR.properties | 5 ++- 8 files changed, 91 insertions(+), 42 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 feature/8109 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit d2fde3ea96cd590242dfd45bf8a59450075d9e6f Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 24 11:32:46 2016 +0100 gestion des maturités dans l'algo de prélèvement (fixes #8109) --- .../service/samplingCache/CruiseSamplingCache.java | 23 +++++++---- .../samplingCache/CruiseSamplingCacheLoader.java | 5 +-- .../IndividualObservationBatchRowModel.java | 21 ++++++++-- .../IndividualObservationBatchTableModel.java | 11 ++++++ .../frequency/IndividualObservationUICache.java | 18 +++++---- .../frequency/SpeciesFrequencyUIHandler.java | 45 +++++++++++++--------- ...yCaracteristicPopupUIModel-error-validation.xml | 2 +- .../resources/i18n/tutti-ui-swing_fr_FR.properties | 5 ++- 8 files changed, 88 insertions(+), 42 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/samplingCache/CruiseSamplingCache.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/samplingCache/CruiseSamplingCache.java index cd13e9b..011aec1 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/samplingCache/CruiseSamplingCache.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/samplingCache/CruiseSamplingCache.java @@ -27,6 +27,7 @@ package fr.ifremer.tutti.service.samplingCache; import com.google.common.base.MoreObjects; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; import fr.ifremer.tutti.persistence.entities.protocol.CalcifiedPiecesSamplingDefinition; @@ -48,8 +49,6 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; -import java.util.function.Function; -import java.util.stream.Collectors; /** * @author Kevin Morin (Code Lutin) @@ -109,7 +108,7 @@ public class CruiseSamplingCache implements Closeable { */ private boolean loading; - public CruiseSamplingCache(Integer cruiseId, TuttiProtocol protocol, Caracteristic sexCaracteristic, Collection<Caracteristic> allCaracteristics) { + public CruiseSamplingCache(Integer cruiseId, TuttiProtocol protocol, Caracteristic sexCaracteristic, Collection<Caracteristic> maturityCaracteristics) { this.cruiseId = cruiseId; this.sexCaracteristic = sexCaracteristic; this.protocolId = protocol.getId(); @@ -117,13 +116,13 @@ public class CruiseSamplingCache implements Closeable { locationIdsPerZone = HashMultimap.create(); protocol.getZone().forEach(zone -> locationIdsPerZone.putAll(zone, Zones.getAllLocationIds(zone))); - Map<String, Caracteristic> caracteristicsById = allCaracteristics.stream().collect(Collectors.toMap(Caracteristic::getId, Function.identity())); + Map<String, Caracteristic> maturityCaracteristicsById = TuttiEntities.splitById(maturityCaracteristics); protocol.getSpecies().forEach(speciesProtocol -> { cpsDefinitionsBySpecies.putAll(speciesProtocol.getSpeciesReferenceTaxonId(), speciesProtocol.getCalcifiedPiecesSamplingDefinition()); maturityCaracteristicBySpecies.put(speciesProtocol.getSpeciesReferenceTaxonId(), - caracteristicsById.get(speciesProtocol.getMaturityPmfmId())); + maturityCaracteristicsById.get(speciesProtocol.getMaturityPmfmId())); }); protocol.getMaturityCaracteristics().forEach(mc -> matureStatesByMaturityCracteristic.putAll(mc.getId(), mc.getMatureStateIds())); @@ -311,7 +310,7 @@ public class CruiseSamplingCache implements Closeable { Species species = individualObservationBatch.getSpecies(); Objects.requireNonNull(species); - Boolean maturity = null; + Boolean maturity = getMaturity(individualObservationBatch); Float lengthStep = individualObservationBatch.getSize(); Objects.requireNonNull(lengthStep); CaracteristicQualitativeValue gender = individualObservationBatch.getCaracteristics().getQualitativeValue(sexCaracteristic); @@ -514,7 +513,7 @@ public class CruiseSamplingCache implements Closeable { protected Boolean getMaturity(IndividualObservationBatch individualObservationBatch) { Boolean maturity = null; - Caracteristic maturityCaracteristic = maturityCaracteristicBySpecies.get(individualObservationBatch.getSpecies().getIdAsInt()); + Caracteristic maturityCaracteristic = maturityCaracteristicBySpecies.get(individualObservationBatch.getSpecies().getReferenceTaxonId()); // if a maturity caracteristic is defined in the protocol for this species if (maturityCaracteristic != null) { CaracteristicQualitativeValue qualitativeValue = individualObservationBatch.getCaracteristics().getQualitativeValue(maturityCaracteristic); @@ -525,4 +524,14 @@ public class CruiseSamplingCache implements Closeable { } return maturity; } + + public Boolean getMaturity(Integer speciesId, Optional<CaracteristicQualitativeValue> maturityQualitativeValue) { + Boolean maturity = null; + Optional<Caracteristic> maturityCaracteristic = Optional.ofNullable(maturityCaracteristicBySpecies.get(speciesId)); + if (maturityCaracteristic.isPresent() && maturityQualitativeValue.isPresent()) { + maturity = matureStatesByMaturityCracteristic.containsEntry(maturityCaracteristic.get().getId(), maturityQualitativeValue.get().getId()); + } + return maturity; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/samplingCache/CruiseSamplingCacheLoader.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/samplingCache/CruiseSamplingCacheLoader.java index 6bc75df..44354f5 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/samplingCache/CruiseSamplingCacheLoader.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/samplingCache/CruiseSamplingCacheLoader.java @@ -45,10 +45,9 @@ public class CruiseSamplingCacheLoader { Caracteristic sexCaracteristic = persistenceService.getSexCaracteristic(); - //FIXME il faudrait seulement charger les caracteristiques de maturité du protocole - Collection<Caracteristic> allCaracteristics = persistenceService.getAllCaracteristic(); + Collection<Caracteristic> maturityCaracteristics = persistenceService.getMaturityCaracteristics(persistenceService.getAllCaracteristic()); - CruiseSamplingCache cruiseSamplingCache = new CruiseSamplingCache(cruiseId, protocol, sexCaracteristic, allCaracteristics); + CruiseSamplingCache cruiseSamplingCache = new CruiseSamplingCache(cruiseId, protocol, sexCaracteristic, maturityCaracteristics); cruiseSamplingCache.setLoading(true); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java index f7b2b0d..38ba62b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java @@ -46,6 +46,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; /** * @author Kevin Morin - kmorin@codelutin.com @@ -87,6 +88,13 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel */ protected final WeightUnit weightUnit; + /** + * Caracteristique de maturité + * + * @since 4.5 + */ + protected Optional<Caracteristic> maturityCaracteristic = Optional.empty(); + protected static final Binder<IndividualObservationBatch, IndividualObservationBatchRowModel> fromBeanBinder = BinderFactory.newBinder(IndividualObservationBatch.class, IndividualObservationBatchRowModel.class); @@ -430,8 +438,15 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel return (CaracteristicQualitativeValue) getCaracteristicValue(sexCaracteristic); } - // FIXME Add it. - public Boolean getMaturityState() { - return null; + public Optional<Caracteristic> getMaturityCaracteristic() { + return maturityCaracteristic; + } + + public void setMaturityCaracteristic(Optional<Caracteristic> maturityCaracteristic) { + this.maturityCaracteristic = maturityCaracteristic; + } + + public Optional<CaracteristicQualitativeValue> getMaturityState() { + return Optional.ofNullable((CaracteristicQualitativeValue) getCaracteristicValue(maturityCaracteristic.get())); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java index 8161804..43a1c8c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java @@ -38,6 +38,7 @@ import javax.swing.event.TableColumnModelEvent; import javax.swing.event.TableColumnModelListener; import java.io.Serializable; import java.util.Collection; +import java.util.Optional; import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; @@ -93,6 +94,8 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab protected Caracteristic lengthstepCaracteristic; + protected Optional<Caracteristic> maturityCaracteristic; + public IndividualObservationBatchTableModel(WeightUnit weightUnit, Collection<Caracteristic> defaultCaracteristicsSet, TableColumnModelExt columnModel) { @@ -143,6 +146,13 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } } + public void setMaturityCaracteristic(Optional<Caracteristic> maturityCaracteristic) { + this.maturityCaracteristic = maturityCaracteristic; + if (rows != null) { + rows.forEach(row -> row.setLengthStepCaracteristic(lengthstepCaracteristic)); + } + } + public void setDefaultCaracteristicValues(CaracteristicMap defaultCaracteristicValues) { defaultCaracteristicsMap.replaceAll( (caracteristic, serializable) -> defaultCaracteristicValues.get(caracteristic) @@ -159,6 +169,7 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab result.setRankOrder(getRowCount() + 1); result.setSpecies(species); result.setLengthStepCaracteristic(lengthstepCaracteristic); + result.setMaturityCaracteristic(maturityCaracteristic); return result; } 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 c5fec05..80447c6 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 @@ -198,11 +198,11 @@ public class IndividualObservationUICache implements Closeable { /** * Ajoute une observation individuelle via ses composantes (sexe, maturité, classe de taille) dans le cache. * - * @param gender le sexe - * @param maturity l'état de maturité - * @param lengthStep la classe de taille + * @param gender le sexe + * @param maturityQualitativeValue l'état de maturité + * @param lengthStep la classe de taille */ - public void increments(CaracteristicQualitativeValue gender, Boolean maturity, float lengthStep) { + public void increments(CaracteristicQualitativeValue gender, Optional<CaracteristicQualitativeValue> maturityQualitativeValue, float lengthStep) { if (!on) { if (log.isDebugEnabled()) { @@ -211,6 +211,7 @@ public class IndividualObservationUICache implements Closeable { return; } + Boolean maturity = samplingCache.get().getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); samplingCache.get().addIndividualObservation(fishingOperation, species, gender, @@ -232,11 +233,11 @@ public class IndividualObservationUICache implements Closeable { /** * Retire une observation individuelle via ses composantes (sexe, maturité, classe de taille) dans le cache. * - * @param gender le sexe - * @param maturity l'état de maturité - * @param lengthStep la classe de taille + * @param gender le sexe + * @param maturityQualitativeValue l'état de maturité + * @param lengthStep la classe de taille */ - public void decrements(CaracteristicQualitativeValue gender, Boolean maturity, float lengthStep) { + public void decrements(CaracteristicQualitativeValue gender, Optional<CaracteristicQualitativeValue> maturityQualitativeValue, float lengthStep) { if (!on) { if (log.isDebugEnabled()) { @@ -245,6 +246,7 @@ public class IndividualObservationUICache implements Closeable { return; } + Boolean maturity = samplingCache.get().getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); samplingCache.get().removeIndividualObservation(fishingOperation, species, gender, 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 9d8baac..4ee18a5 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 @@ -217,6 +217,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci String propertyName = evt.getPropertyName(); CaracteristicQualitativeValue gender = row.getGender(sexCaracteristic); + Optional<CaracteristicQualitativeValue> maturity = row.getMaturityState(); // we only update the frequencies if the row is valid if (row.isValid()) { @@ -230,10 +231,10 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci Float newValue = (Float) evt.getNewValue(); if (oldValue != null) { - individualObservationUICache.decrements(gender, null, oldValue); + individualObservationUICache.decrements(gender, maturity, oldValue); } if (newValue != null) { - individualObservationUICache.increments(gender, null, newValue); + individualObservationUICache.increments(gender, maturity, newValue); } if (getModel().mustCopyIndividualObservationSize()) { @@ -277,18 +278,21 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci CaracteristicMap oldValue = (CaracteristicMap) evt.getOldValue(); CaracteristicMap newValue = (CaracteristicMap) evt.getNewValue(); - Boolean maturity = null; + if (log.isInfoEnabled()) { + log.info("caracteristics changed"); + } -// if (maturityColumnId.isPresent()) { -// Caracteristic maturityCaracteristic = maturityColumnId.get().getCaracteristic(); -// CaracteristicQualitativeValue oldMaturity = (CaracteristicQualitativeValue) oldValue.get(maturityCaracteristic); -// CaracteristicQualitativeValue newMaturityr = (CaracteristicQualitativeValue) newValue.get(maturityCaracteristic); -// if (!Objects.equals(oldMaturity, newMaturityr)) { -// individualObservationUICache.decrements(oldGender, null, row.getSize()); -// individualObservationUICache.increments(newGender, null, row.getSize()); -// } -// -// } + 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()); + } + } CaracteristicQualitativeValue oldGender = (CaracteristicQualitativeValue) oldValue.get(sexCaracteristic); CaracteristicQualitativeValue newGender = (CaracteristicQualitativeValue) newValue.get(sexCaracteristic); @@ -309,13 +313,13 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci if (oldValue && getModel().mustCopyIndividualObservationSize()) { updateFrequencyRowsNumbers(row.getSize(), null); - individualObservationUICache.decrements(gender, null, row.getSize()); + individualObservationUICache.decrements(gender, maturity, row.getSize()); } if (newValue) { if (getModel().mustCopyIndividualObservationSize()) { updateFrequencyRowsNumbers(null, row.getSize()); if (row.withSize()) { - individualObservationUICache.increments(gender, null, row.getSize()); + individualObservationUICache.increments(gender, maturity, row.getSize()); } } if (getModel().mustCopyIndividualObservationWeight()) { @@ -943,9 +947,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci Optional<Caracteristic> maturityCaracteristic = speciesMaturityPmfmId.map(maturityCaracteristics::get); - if (maturityCaracteristic.isPresent()) { - addMaturityCaracteristicColumnToModel(maturityCaracteristic.get()); - } + setMaturityCaracteristic(maturityCaracteristic); // // try to load existing individual observations @@ -1576,6 +1578,13 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci ui.getSamplingResumeLabel().setText(null); } + public void setMaturityCaracteristic(Optional<Caracteristic> maturityCaracteristic) { + getObsTableModel().setMaturityCaracteristic(maturityCaracteristic); + if (maturityCaracteristic.isPresent()) { + addMaturityCaracteristicColumnToModel(maturityCaracteristic.get()); + } + } + protected void addMaturityCaracteristicColumnToModel(Caracteristic caracteristic) { Decorator<Caracteristic> caracteristicDecorator = diff --git a/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel-error-validation.xml b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel-error-validation.xml index 610f47c..afff6e5 100644 --- a/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel-error-validation.xml +++ b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel-error-validation.xml @@ -33,7 +33,7 @@ <![CDATA[ hasMatureValues() && hasImmatureValues() ]]> </param> <message> - tutti.validator.error.maturityCaracteristicEditor.dialog.qualitativeValues.bithStates + tutti.validator.error.maturityCaracteristicEditor.dialog.qualitativeValues.bothStates </message> </field-validator> </field> diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index d1a9c34..1dfec08 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -1505,8 +1505,8 @@ tutti.editSpeciesFrequencies.label.no.configuration=< Pas de configuration > tutti.editSpeciesFrequencies.logTable.header.label=Logs tutti.editSpeciesFrequencies.logTable.removeRow.confirm.message=Êtes-vous sûr de vouloir supprimer la mesure %s ? tutti.editSpeciesFrequencies.logTable.removeRow.confirm.title=Suppression d'une mesure -tutti.editSpeciesFrequencies.samplingNeeded.immature= -tutti.editSpeciesFrequencies.samplingNeeded.mature= +tutti.editSpeciesFrequencies.samplingNeeded.immature=Immature +tutti.editSpeciesFrequencies.samplingNeeded.mature=Mature tutti.editSpeciesFrequencies.samplingNeeded.max=max tutti.editSpeciesFrequencies.samplingNeeded.resume=<html><body><strong>%s</strong> \: trait \: %s | zone \: %s | campagne \: %s tutti.editSpeciesFrequencies.samplingNeeded.warning=<html><body><strong>Prélevez les pièces calcifiées \!</body></html> @@ -2348,6 +2348,7 @@ tutti.validator.error.longitude.end.required=La longitude de fin de traîne est tutti.validator.error.longitude.minute.outOfBounds=La minute de la longitude doit être comprise entre 0 et 59 tutti.validator.error.longitude.second.outOfBounds=La seconde de la longitude doit être comprise entre 0 et 59 tutti.validator.error.longitude.start.required=La longitude de début de traîne est obligatoire +tutti.validator.error.maturityCaracteristicEditor.dialog.qualitativeValues.bothStates= tutti.validator.error.maturityCaracteristics.statesNotDefined=Les états de maturités doivent être définis pour toutes les caractéristiques de maturités tutti.validator.error.program.zone.required=La zone de la série est obligatoire tutti.validator.error.replaceTemporaryReferential.source.required=Un référentiel temporaire doit être sélectionné -- 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 feature/8109 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit dbadce9642ed658ad20b8ea15631963a4b1e90e9 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 24 11:36:44 2016 +0100 fix optional error (see #8109) --- .../individualobservation/IndividualObservationBatchRowModel.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java index 38ba62b..5df9056 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java @@ -447,6 +447,9 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel } public Optional<CaracteristicQualitativeValue> getMaturityState() { + if (!maturityCaracteristic.isPresent()) { + return Optional.empty(); + } return Optional.ofNullable((CaracteristicQualitativeValue) getCaracteristicValue(maturityCaracteristic.get())); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm