This is an automated email from the git hooks/post-receive script. New commit to branch feature/8231 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit c9dcaca4cfed91963e85ecf75bb65f0b45231a31 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Apr 11 15:38:40 2016 +0200 Amélioration du code --- .../IndividualObservationBatchRowModel.java | 49 +++++------ .../IndividualObservationBatchTableModel.java | 54 ++++++------ .../frequency/IndividualObservationUICache.java | 17 +++- .../frequency/SpeciesFrequencyUIHandler.java | 98 +++++++++++----------- .../species/frequency/SpeciesFrequencyUIModel.java | 59 +++++++++++-- 5 files changed, 163 insertions(+), 114 deletions(-) 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 fc39ffc..1d62c39 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 @@ -61,9 +61,9 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel public static final String PROPERTY_DEFAULT_CARACTERISTICS = "defaultCaracteristics"; - public static final String PROPERTY_SAMPLING_CODE_PREFIX = "samplingCodePrefix"; - - public static final String PROPERTY_SAMPLING_CODE_ID = "samplingCodeId"; +// public static final String PROPERTY_SAMPLING_CODE_PREFIX = "samplingCodePrefix"; +// +// public static final String PROPERTY_SAMPLING_CODE_ID = "samplingCodeId"; /** * Delegate edit object. @@ -94,12 +94,12 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel */ protected final WeightUnit weightUnit; - /** - * Caracteristique de maturité - * - * @since 4.5 - */ - protected Optional<Caracteristic> maturityCaracteristic = Optional.empty(); +// /** +// * Caracteristique de maturité +// * +// * @since 4.5 +// */ +// protected Caracteristic maturityCaracteristic; /** * @since 4.5 @@ -382,6 +382,10 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel firePropertyChange(PROPERTY_SAMPLING_CODE, oldValue, samplingCode); } + public Optional<String> getOptionalSamplingCode() { + return Optional.ofNullable(editObject.getSamplingCode()); + } + public Integer getSamplingCodeId() { return SamplingCodePrefix.extractSamplingCodeIdFromSamplingCode(getSamplingCode()); } @@ -473,24 +477,15 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel addAllAttachment(source.getAttachment()); } - public Serializable getCaracteristicValue(Caracteristic caracteristic) { - CaracteristicMap allCaracteristics = CaracteristicMap.copy(defaultCaracteristics); - allCaracteristics.putAll(getCaracteristics()); - return allCaracteristics.get(caracteristic); - } - - public CaracteristicQualitativeValue getGender(Caracteristic sexCaracteristic) { - return (CaracteristicQualitativeValue) getCaracteristicValue(sexCaracteristic); - } - - public CaracteristicQualitativeValue getMaturityState(Caracteristic maturityCaracteristic) { - return (CaracteristicQualitativeValue) getCaracteristicValue(maturityCaracteristic); - } - - public Optional<CaracteristicQualitativeValue> getMaturityState(Optional<Caracteristic> maturityCaracteristic) { - if (!maturityCaracteristic.isPresent()) { - return Optional.empty(); + public CaracteristicQualitativeValue getCaracteristicQualitativeValue(Caracteristic caracteristic) { + CaracteristicQualitativeValue result = null; + if (caracteristic != null) { + result = getCaracteristics().getQualitativeValue(caracteristic); + if (result == null) { + result = defaultCaracteristics.getQualitativeValue(caracteristic); + } } - return Optional.ofNullable((CaracteristicQualitativeValue) getCaracteristicValue(maturityCaracteristic.get())); + return result; } + } 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 8209aa3..5b0322e 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 @@ -28,13 +28,15 @@ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.sampling.SamplingCodePrefix; import fr.ifremer.tutti.type.WeightUnit; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.Serializable; -import java.util.Collection; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -99,18 +101,30 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab protected Caracteristic lengthstepCaracteristic; - protected Caracteristic sexCaracteristic; - - protected Optional<Caracteristic> maturityCaracteristic = Optional.empty(); + protected final SpeciesFrequencyUIModel parentModel; public IndividualObservationBatchTableModel(WeightUnit weightUnit, - Collection<Caracteristic> defaultCaracteristicsSet, - Caracteristic sexCaracteristic, + SpeciesFrequencyUIModel parentModel, TableColumnModelExt columnModel) { super(columnModel, true, false); + this.parentModel=parentModel; this.weightUnit = weightUnit; - this.defaultCaracteristicsMap = CaracteristicMap.fromCollection(defaultCaracteristicsSet); - this.sexCaracteristic = sexCaracteristic; + // Lorsque la caracteristique de maturité change, on met à jour defaultCaracteristicsMap + this.parentModel.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_MATURITY_CARACTERISTIC, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Caracteristic oldValue = (Caracteristic) evt.getOldValue(); + Caracteristic newValue = (Caracteristic) evt.getNewValue(); + if (oldValue!=null) { + defaultCaracteristicsMap.remove(oldValue); + } + if (newValue!=null) { + defaultCaracteristicsMap.put(newValue, null); + } + + } + }); + this.defaultCaracteristicsMap = CaracteristicMap.fromCollection(parentModel.getDefaultCaracteristic()); setNoneEditableCols(RANK); } @@ -135,20 +149,6 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } } - public Optional<Caracteristic> getMaturityCaracteristic() { - return maturityCaracteristic; - } - - public void setMaturityCaracteristic(Optional<Caracteristic> maturityCaracteristic) { - if (this.maturityCaracteristic.isPresent()) { - defaultCaracteristicsMap.remove(this.maturityCaracteristic.get()); - } - this.maturityCaracteristic = maturityCaracteristic; - if (maturityCaracteristic.isPresent()) { - defaultCaracteristicsMap.put(maturityCaracteristic.get(), null); - } - } - public void addMaturityIdentifier(ColumnIdentifier<IndividualObservationBatchRowModel> maturityIdentifer) { identifiers.add(maturityIdentifer); } @@ -178,12 +178,12 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab if (getRowCount() > 0) { IndividualObservationBatchRowModel lastRow = getRows().get(getRowCount() - 1); - CaracteristicQualitativeValue gender = lastRow.getGender(sexCaracteristic); - result.getDefaultCaracteristics().put(sexCaracteristic, gender); + CaracteristicQualitativeValue gender = parentModel.getGender(lastRow); + parentModel.setGenderValueToDefaultCaracterictis(result, gender); - if (maturityCaracteristic.isPresent()) { - CaracteristicQualitativeValue maturityState = lastRow.getMaturityState(maturityCaracteristic.get()); - result.getDefaultCaracteristics().put(maturityCaracteristic.get(), maturityState); + if (parentModel.withMaturityCaracteristic()) { + Optional<CaracteristicQualitativeValue> maturityState = parentModel.getOptionalMaturityValue(lastRow); + parentModel.setMaturityValueToDefaultCaracterictis(result, maturityState.orElse(null)); } } 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 a9990f1..03b7b97 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 @@ -210,7 +210,10 @@ public class IndividualObservationUICache implements Closeable { */ public void increments(IndividualObservationBatchRowModel row) { - incrementsObservationNb(row.getGender(uiModel.getSexCaracteristic()), row.getMaturityState(uiModel.getMaturityCaracteristic()), row.getSize(), Optional.ofNullable(row.getSamplingCode())); + incrementsObservationNb(uiModel.getGender(row), + uiModel.getOptionalMaturityValue(row), + row.getSize(), + row.getOptionalSamplingCode()); } @@ -298,7 +301,10 @@ public class IndividualObservationUICache implements Closeable { */ public void decrements(IndividualObservationBatchRowModel row) { - decrementsObservationNb(row.getGender(uiModel.getSexCaracteristic()), row.getMaturityState(uiModel.getMaturityCaracteristic()), row.getSize(), Optional.ofNullable(row.getSamplingCode())); + decrementsObservationNb(uiModel.getGender(row), + uiModel.getOptionalMaturityValue(row), + row.getSize(), + row.getOptionalSamplingCode()); } @@ -462,10 +468,13 @@ public class IndividualObservationUICache implements Closeable { IndividualObservationBatchRowModel selectedRow = optSelectedRow.get(); - Boolean maturity = samplingCache.get().getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), selectedRow.getMaturityState(uiModel.getMaturityCaracteristic())); + CruiseSamplingCache cruiseSamplingCache = samplingCache.get(); + + Optional<CaracteristicQualitativeValue> maturityQualitativeValue = uiModel.getOptionalMaturityValue(selectedRow); + Boolean maturity = cruiseSamplingCache.getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), maturityQualitativeValue); int lengthstep = uiModel.getLengthStepInMm(selectedRow.getSize()); - event = samplingCache.get().getEventForSummary(fishingOperation, species, maturity, selectedRow.getGender(uiModel.getSexCaracteristic()), lengthstep); + event = cruiseSamplingCache.getEventForSummary(fishingOperation, species, maturity, uiModel.getGender(selectedRow), lengthstep); } else { event = Optional.empty(); 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 a97f17c..e1e0437 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 @@ -120,7 +120,6 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyVetoException; import java.beans.VetoableChangeListener; -import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -218,39 +217,40 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci IndividualObservationBatchRowModel row = (IndividualObservationBatchRowModel) evt.getSource(); String propertyName = evt.getPropertyName(); - CaracteristicQualitativeValue gender = row.getGender(getModel().getSexCaracteristic()); - Optional<CaracteristicQualitativeValue> maturity = row.getMaturityState(getModel().getMaturityCaracteristic()); + SpeciesFrequencyUIModel model = getModel(); + + CaracteristicQualitativeValue gender = model.getGender(row); + Optional<CaracteristicQualitativeValue> maturity = model.getOptionalMaturityValue(row); switch (propertyName) { - case IndividualObservationBatchRowModel.PROPERTY_SIZE: - { + case IndividualObservationBatchRowModel.PROPERTY_SIZE: { - Float oldValue = (Float) evt.getOldValue(); - Float newValue = (Float) evt.getNewValue(); + Float oldValue = (Float) evt.getOldValue(); + Float newValue = (Float) evt.getNewValue(); - 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 (oldValue != null) { + individualObservationUICache.decrementsObservationNb(gender, maturity, oldValue, row.getOptionalSamplingCode()); + } + if (newValue != null) { + individualObservationUICache.incrementsObservationNb(gender, maturity, newValue, row.getOptionalSamplingCode()); + } - // we only update the frequencies if the row is valid - if (row.isValid() && getModel().mustCopyIndividualObservationSize()) { - updateFrequencyRowsNumbers(oldValue, newValue); + // we only update the frequencies if the row is valid + if (row.isValid() && model.mustCopyIndividualObservationSize()) { + updateFrequencyRowsNumbers(oldValue, newValue); - Float weight = row.getWeight(); - if (getModel().mustCopyIndividualObservationWeight() && weight != null) { - updateFrequencyRowsWeights(oldValue, -weight); - updateFrequencyRowsWeights(newValue, weight); - } + Float weight = row.getWeight(); + if (model.mustCopyIndividualObservationWeight() && weight != null) { + updateFrequencyRowsWeights(oldValue, -weight); + updateFrequencyRowsWeights(newValue, weight); } } - break; + } + break; case IndividualObservationBatchRowModel.PROPERTY_WEIGHT: - if (row.isValid() && getModel().mustCopyIndividualObservationWeight()) { + if (row.isValid() && model.mustCopyIndividualObservationWeight()) { Float oldValue = (Float) evt.getOldValue(); Float newValue = (Float) evt.getNewValue(); @@ -282,23 +282,23 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci log.info("caracteristics changed"); } - if (getModel().getMaturityCaracteristic().isPresent()) { - Optional<CaracteristicQualitativeValue> oldMaturity = Optional.ofNullable((CaracteristicQualitativeValue) oldValue.get(getModel().getMaturityCaracteristic().get())); - Optional<CaracteristicQualitativeValue> newMaturity = Optional.ofNullable((CaracteristicQualitativeValue) newValue.get(getModel().getMaturityCaracteristic().get())); + if (model.withMaturityCaracteristic()) { + Optional<CaracteristicQualitativeValue> oldMaturity = model.getOptionalMaturityValue(oldValue); + Optional<CaracteristicQualitativeValue> newMaturity = model.getOptionalMaturityValue(newValue); if (log.isInfoEnabled()) { log.info("maturities : " + oldMaturity + " " + newMaturity); } if (!Objects.equals(oldMaturity, newMaturity)) { individualObservationUICache.decrementsObservationNb(gender, oldMaturity, row.getSize()); - individualObservationUICache.incrementsObservationNb(gender, newMaturity, row.getSize(), Optional.ofNullable(row.getSamplingCode())); + individualObservationUICache.incrementsObservationNb(gender, newMaturity, row.getSize(), row.getOptionalSamplingCode()); } } - CaracteristicQualitativeValue oldGender = (CaracteristicQualitativeValue) oldValue.get(getModel().getSexCaracteristic()); - CaracteristicQualitativeValue newGender = (CaracteristicQualitativeValue) newValue.get(getModel().getSexCaracteristic()); + CaracteristicQualitativeValue oldGender = (CaracteristicQualitativeValue) model.getGender(oldValue); + CaracteristicQualitativeValue newGender = (CaracteristicQualitativeValue) model.getGender(newValue); if (!Objects.equals(oldGender, newGender)) { individualObservationUICache.decrementsObservationNb(oldGender, maturity, row.getSize()); - individualObservationUICache.incrementsObservationNb(newGender, maturity, row.getSize(), Optional.ofNullable(row.getSamplingCode())); + individualObservationUICache.incrementsObservationNb(newGender, maturity, row.getSize(), row.getOptionalSamplingCode()); } } break; @@ -320,18 +320,18 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci case IndividualObservationBatchRowModel.PROPERTY_VALID: // if the row's valid state changes, then remove or readd it to the frequencies - if (!getModel().isRowComputationInProgress()) { + if (!model.isRowComputationInProgress()) { boolean oldValue = (boolean) evt.getOldValue(); boolean newValue = (boolean) evt.getNewValue(); - if (oldValue && getModel().mustCopyIndividualObservationSize()) { + if (oldValue && model.mustCopyIndividualObservationSize()) { updateFrequencyRowsNumbers(row.getSize(), null); } if (newValue) { - if (getModel().mustCopyIndividualObservationSize()) { + if (model.mustCopyIndividualObservationSize()) { updateFrequencyRowsNumbers(null, row.getSize()); } - if (getModel().mustCopyIndividualObservationWeight()) { + if (model.mustCopyIndividualObservationWeight()) { updateFrequencyRowsWeights(row.getSize(), row.getWeight()); } } @@ -339,10 +339,10 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci break; } - getModel().recomputeIndividualObservationRowValidState(row); - getModel().recomputeCanEditLengthStep(); + model.recomputeIndividualObservationRowValidState(row); + model.recomputeCanEditLengthStep(); - getModel().setModify(true); + model.setModify(true); } @@ -935,9 +935,9 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci // Add maturity column if necessary - Optional<Caracteristic> maturityCaracteristic = speciesMaturityPmfmId.map(maturityCaracteristics::get); + Optional<Caracteristic> optionalMaturityCaracteristic = speciesMaturityPmfmId.map(maturityCaracteristics::get); - setMaturityCaracteristic(maturityCaracteristic); + setMaturityCaracteristic(optionalMaturityCaracteristic.orElse(null)); loadFrequenciesAndObservations(frequency, individualObservations); @@ -1366,8 +1366,9 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci // create obsTable model IndividualObservationBatchTableModel tableModel = new IndividualObservationBatchTableModel(individualObservationWeightUnit, - defaultCaracteristic, - getModel().getSexCaracteristic(), + getModel(), +// defaultCaracteristic, +// getModel().getSexCaracteristic(), columnModel); obsTable.setModel(tableModel); @@ -1451,11 +1452,11 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci ui.getSamplingWarningLabel().setVisible(false); } - public void setMaturityCaracteristic(Optional<Caracteristic> maturityCaracteristic) { + public void setMaturityCaracteristic(Caracteristic maturityCaracteristic) { getModel().setMaturityCaracteristic(maturityCaracteristic); - getObsTableModel().setMaturityCaracteristic(maturityCaracteristic); - if (maturityCaracteristic.isPresent()) { - addMaturityCaracteristicColumnToModel(maturityCaracteristic.get()); +// getObsTableModel().setMaturityCaracteristic(maturityCaracteristic); + if (maturityCaracteristic != null) { + addMaturityCaracteristicColumnToModel(maturityCaracteristic); } } @@ -1866,12 +1867,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci newRow.addPropertyChangeListener(obsChangedListener); newRow.setValid(true); - if (getObsTableModel().getMaturityCaracteristic().isPresent()) { - - Caracteristic caracteristicKey = getObsTableModel().getMaturityCaracteristic().get(); - Serializable caracteristicValue = newRow.getCaracteristics().remove(caracteristicKey); - newRow.getDefaultCaracteristics().putIfAbsent(caracteristicKey, caracteristicValue); - } + model.moveMaturityValueFromCaracteristicsToDefaultCaracteristics(newRow); obsRows.add(newRow); 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 0bf67f1..e8e6cd2 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 @@ -22,10 +22,12 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; * #L% */ +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; @@ -43,6 +45,7 @@ import org.jfree.data.xy.XYSeriesCollection; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyVetoException; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -334,7 +337,7 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa /** * Caracteristique de maturité du protocole */ - protected Optional<Caracteristic> maturityCaracteristic; + protected Caracteristic maturityCaracteristic; protected final PropertyChangeListener rowInErrorChangedListener = new PropertyChangeListener() { @@ -1071,16 +1074,54 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa return sexCaracteristic; } - public Optional<Caracteristic> getMaturityCaracteristic() { - return maturityCaracteristic; + public CaracteristicQualitativeValue getGender(IndividualObservationBatchRowModel row) { + return row.getCaracteristicQualitativeValue(sexCaracteristic); } - public void setMaturityCaracteristic(Optional<Caracteristic> maturityCaracteristic) { - Object oldValue = getMaturityCaracteristic(); + public CaracteristicQualitativeValue getGender(CaracteristicMap caracteristicMap) { + return caracteristicMap.getQualitativeValue(sexCaracteristic); + } + + public boolean withMaturityCaracteristic() { + return maturityCaracteristic != null; + } + + public void setMaturityCaracteristic(Caracteristic maturityCaracteristic) { + Object oldValue = this.maturityCaracteristic; this.maturityCaracteristic = maturityCaracteristic; firePropertyChange(PROPERTY_MATURITY_CARACTERISTIC, oldValue, maturityCaracteristic); } + public Optional<CaracteristicQualitativeValue> getOptionalMaturityValue(IndividualObservationBatchRowModel row) { + + CaracteristicQualitativeValue caracteristicValue = null; + if (withMaturityCaracteristic()) { + caracteristicValue = row.getCaracteristicQualitativeValue(maturityCaracteristic); + } + return Optional.ofNullable(caracteristicValue); + + } + + public Optional<CaracteristicQualitativeValue> getOptionalMaturityValue(CaracteristicMap caracteristicMap) { + + CaracteristicQualitativeValue caracteristicValue = null; + if (withMaturityCaracteristic()) { + caracteristicValue = caracteristicMap.getQualitativeValue(maturityCaracteristic); + } + return Optional.ofNullable(caracteristicValue); + + } + + public void moveMaturityValueFromCaracteristicsToDefaultCaracteristics(IndividualObservationBatchRowModel newRow) { + + if (withMaturityCaracteristic()) { + + Serializable caracteristicValue = newRow.getCaracteristics().remove(maturityCaracteristic); + newRow.getDefaultCaracteristics().putIfAbsent(maturityCaracteristic, caracteristicValue); + + } + } + protected final void recomputeRowValidState(SpeciesFrequencyRowModel row) { // recompute row valid state @@ -1116,4 +1157,12 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa public SpeciesOrBenthosBatchUISupport getSpeciesOrBenthosBatchUISupport() { return speciesOrBenthosBatchUISupport; } + + public void setMaturityValueToDefaultCaracterictis(IndividualObservationBatchRowModel result, CaracteristicQualitativeValue maturityState) { + result.getDefaultCaracteristics().put(maturityCaracteristic, maturityState); + } + + public void setGenderValueToDefaultCaracterictis(IndividualObservationBatchRowModel result, CaracteristicQualitativeValue gender) { + result.getDefaultCaracteristics().put(sexCaracteristic, gender); + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.