This is an automated email from the git hooks/post-receive script. New commit to branch feature/observations_individuelles-init_default_caracteristics in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 47f1ac18507f7ed56d253d9e12a1fadb49381fea Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 27 12:31:56 2016 +0200 on reconstruit la map des caracteristiques par defaut à chaque editbatch --- .../IndividualObservationBatchTableHandler.java | 46 ++++++++++++++++++---- .../IndividualObservationBatchTableModel.java | 33 +++++----------- .../IndividualObservationBatchUIModel.java | 15 ++++--- .../frequency/SpeciesFrequencyUIHandler.java | 13 +++--- .../species/frequency/SpeciesFrequencyUIModel.java | 4 +- 5 files changed, 66 insertions(+), 45 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java index 402a73c..c533e06 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java @@ -24,7 +24,6 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; * #L% */ -import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Attachment; @@ -67,6 +66,7 @@ import java.beans.PropertyChangeListener; import java.io.Closeable; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -161,6 +161,13 @@ public class IndividualObservationBatchTableHandler implements Closeable { } }; + /** + * Editor for the other caracteristics column. + * We must pass the updated list of default caracteristic every time we recompute the default caracteristic list. + * Otherwise, the user can edit the maturity and sex as other caracteristics. + */ + protected final CaracteristicMapCellComponent.CaracteristicMapCellEditor otherCaracteristicsEditor; + public IndividualObservationBatchTableHandler(SpeciesFrequencyUI ui) { this.model = ui.getModel(); @@ -363,7 +370,18 @@ public class IndividualObservationBatchTableHandler implements Closeable { individualObservationTable); } - List<Caracteristic> defaultCaracteristic = individualObservationsModel.getDefaultCaracteristic(); + Caracteristic sexCaracteristic = individualObservationsModel.getSexCaracteristic(); + + { // sex column + + uiHandler.addCaracteristicColumnToModel(individualObservationTable, + columnModel, + sexCaracteristic); + } + + List<Caracteristic> defaultCaracteristic = new ArrayList<>(individualObservationsModel.getProtocolIndividualObservationCaracteristics()); + // on retire le sexe puisqu'il a été ajouté avant + defaultCaracteristic.remove(sexCaracteristic); for (Caracteristic caracteristic : defaultCaracteristic) { uiHandler.addCaracteristicColumnToModel(individualObservationTable, @@ -382,11 +400,9 @@ public class IndividualObservationBatchTableHandler implements Closeable { { // Other caracteristics column - Set<Caracteristic> caracteristicsToSkip = Collections.unmodifiableSet( - Sets.newHashSet(individualObservationsModel.getDefaultCaracteristic())); - + otherCaracteristicsEditor = CaracteristicMapCellComponent.newEditor(ui, new HashSet<>()); uiHandler.addColumnToModel(columnModel, - CaracteristicMapCellComponent.newEditor(ui, caracteristicsToSkip), + otherCaracteristicsEditor, CaracteristicMapCellComponent.newRender(uiHandler.getContext()), IndividualObservationBatchTableModel.OTHER_CARACTERISTICS); @@ -629,14 +645,28 @@ public class IndividualObservationBatchTableHandler implements Closeable { public void initDefaultCaracteristics(SpeciesBatchRowModel speciesBatch) { + // compute the default caracteristics + Set<Caracteristic> defaultCaracteristics = new HashSet<>(); + defaultCaracteristics.addAll(individualObservationsModel.getProtocolIndividualObservationCaracteristics()); + defaultCaracteristics.add(individualObservationsModel.getSexCaracteristic()); + if (individualObservationsModel.withMaturityCaracteristic()) { + defaultCaracteristics.add(individualObservationsModel.getMaturityCaracteristic()); + } + // update the caracteristics which are not editable in the other caracteristic editor + otherCaracteristicsEditor.setCaracteristicsToSkip(defaultCaracteristics); + + // create the default caracteristic map + CaracteristicMap defaultCaracteristicMap = CaracteristicMap.fromCollection(defaultCaracteristics); + + // and put the values of the sampling categories, if the categories are in the map CaracteristicMap sampleCategoryValues = new CaracteristicMap(); Iterator<SampleCategory<?>> iterator = speciesBatch.iterator(); iterator.forEachRemaining(sampleCategory -> { Caracteristic caracteristic = sampleCategory.getCategoryDef().getCaracteristic(); - sampleCategoryValues.put(caracteristic, sampleCategory.getCategoryValue()); + defaultCaracteristicMap.replace(caracteristic, sampleCategory.getCategoryValue()); }); - individualObservationTableModel.setDefaultCaracteristicValues(sampleCategoryValues); + individualObservationTableModel.setDefaultCaracteristics(defaultCaracteristicMap); individualObservationsModel.setNotEditableCaracteristic(sampleCategoryValues.keySet()); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableModel.java index ec5388d..19df4da 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableModel.java @@ -35,8 +35,6 @@ import org.nuiton.jaxx.application.bean.JavaBeanObjectUtil; 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.ArrayList; import java.util.Collection; @@ -116,24 +114,7 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab this.uiModel = uiModel; this.model = uiModel.getIndividualObservationModel(); this.weightUnit = weightUnit; - //FIXME A quoi ça sert ? la maturité est une default caracteristic donc l'éditeur de sa colonne fait le taf, non ? - //FIXME Eviter de mettre des listeners à drotie, à gauche, tout mettre au même endroit si possible qu'on ai une meilleure vision de ce qui se passe - // Lorsque la caracteristique de maturité change, on met à jour defaultCaracteristicsMap - this.model.addPropertyChangeListener(IndividualObservationBatchUIModel.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(model.getDefaultCaracteristic()); + this.defaultCaracteristicsMap = new CaracteristicMap(); setNoneEditableCols(RANK); } @@ -151,10 +132,9 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } } - public void setDefaultCaracteristicValues(CaracteristicMap defaultCaracteristicValues) { - defaultCaracteristicsMap.replaceAll( - (caracteristic, serializable) -> defaultCaracteristicValues.get(caracteristic) - ); + public void setDefaultCaracteristics(CaracteristicMap defaultCaracteristics) { + defaultCaracteristicsMap.clear(); + defaultCaracteristicsMap.putAll(defaultCaracteristics); } @Override @@ -207,6 +187,11 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab editable = maturityColumnIdentifier.withCaracteristic(); + if (editable) { + Serializable defaultValue = defaultCaracteristicsMap.get(maturityColumnIdentifier.getCaracteristic()); + editable = defaultValue == null; + } + } else if (columnIdentifier instanceof CaracteristicColumnIdentifier) { CaracteristicColumnIdentifier<IndividualObservationBatchRowModel> caracteristicColumnIdentifier = diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchUIModel.java index f1eba2b..6dca8d1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchUIModel.java @@ -82,7 +82,7 @@ public class IndividualObservationBatchUIModel extends AbstractTuttiTableUIModel * * @since 4.5 */ - private final List<Caracteristic> defaultCaracteristic; + private final List<Caracteristic> protocolIndividualObservationCaracteristics; /** * Caracteristique de maturité du protocole @@ -117,11 +117,12 @@ public class IndividualObservationBatchUIModel extends AbstractTuttiTableUIModel public IndividualObservationBatchUIModel(SpeciesFrequencyUIModel parentModel, Caracteristic sexCaracteristic, - List<Caracteristic> defaultCaracteristic) { + List<Caracteristic> protocolIndividualObservationCaracteristics) { super(SpeciesBatchRowModel.class, null, null); this.parentModel = parentModel; this.sexCaracteristic = sexCaracteristic; - this.defaultCaracteristic = defaultCaracteristic == null ? new ArrayList<>() : new ArrayList<>(defaultCaracteristic); + this.protocolIndividualObservationCaracteristics = protocolIndividualObservationCaracteristics == null ? + new ArrayList<>() : new ArrayList<>(protocolIndividualObservationCaracteristics); this.samplingNotificationZoneModel = new SamplingNotificationZoneModel(); } @@ -137,14 +138,18 @@ public class IndividualObservationBatchUIModel extends AbstractTuttiTableUIModel this.samplingCodePrefix = samplingCodePrefix; } - public List<Caracteristic> getDefaultCaracteristic() { - return defaultCaracteristic; + public List<Caracteristic> getProtocolIndividualObservationCaracteristics() { + return protocolIndividualObservationCaracteristics; } public boolean withMaturityCaracteristic() { return maturityCaracteristic != null; } + public Caracteristic getMaturityCaracteristic() { + return maturityCaracteristic; + } + public void setMaturityCaracteristic(Caracteristic maturityCaracteristic) { Object oldValue = this.maturityCaracteristic; this.maturityCaracteristic = maturityCaracteristic; 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 945b417..f27ddab 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 @@ -357,12 +357,13 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci SampleCategoryModel sampleCategoryModel = dataContext.getSampleCategoryModel(); // get the default caracteristics - List<Caracteristic> defaultCaracteristic = new ArrayList<>(dataContext.getDefaultIndividualObservationCaracteristics()); + List<Caracteristic> protocolIndividualObservationCaracteristics = new ArrayList<>(dataContext.getDefaultIndividualObservationCaracteristics()); - // on ajoute toujours la colonne sex - if (!defaultCaracteristic.contains(sexCaracteristic)) { - defaultCaracteristic.add(0, sexCaracteristic); - } + +// // on ajoute toujours la colonne sex +// if (!protocolCaracteristic.contains(sexCaracteristic)) { +// protocolCaracteristic.add(0, sexCaracteristic); +// } Optional<CruiseCache> optionalCruiseCache = dataContext.getOptionalCruiseCache(); if (!optionalCruiseCache.isPresent()) { @@ -375,7 +376,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci getConfig().getIndividualObservationWeightUnit(), sampleCategoryModel, sexCaracteristic, - defaultCaracteristic, + protocolIndividualObservationCaracteristics, optionalCruiseCache.get(), dataContext.getCruiseId(), protocol); 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 93e738e..c43ee34 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 @@ -283,7 +283,7 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa WeightUnit individualObservationWeightUnit, SampleCategoryModel sampleCategoryModel, Caracteristic sexCaracteristic, - List<Caracteristic> defaultCaracteristic, + List<Caracteristic> protocolIndividualObservationCaracteristics, CruiseCache cruiseCache, Integer cruiseId, TuttiProtocol protocol) { @@ -302,7 +302,7 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa this.frequenciesConfigurationMode = FrequencyConfigurationMode.AUTO_GEN; setEmptyRows(new HashSet<>()); - this.individualObservationModel = new IndividualObservationBatchUIModel(this, sexCaracteristic, defaultCaracteristic); + this.individualObservationModel = new IndividualObservationBatchUIModel(this, sexCaracteristic, protocolIndividualObservationCaracteristics); this.averageWeightsHistogramModel = new AverageWeightsHistogramModel(weightUnit); this.frequenciesHistogramModel = new FrequenciesHistogramModel(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.