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 42f36c55a64c9139c5dacaf90c38950d9ac817b9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 28 10:18:34 2016 +0200 Dernier ménage avant release, quand on utilises les bonnes APIs tout s'éclaircie au final... --- .../IndividualObservationBatchTableHandler.java | 89 ++++--------- .../IndividualObservationBatchTableModel.java | 141 ++++++++++----------- .../IndividualObservationBatchUIModel.java | 21 +-- .../frequency/IndividualObservationUICache.java | 9 +- .../frequency/SpeciesFrequencyTableModel.java | 13 -- .../frequency/SpeciesFrequencyUIHandler.java | 1 + .../species/frequency/SpeciesFrequencyUIModel.java | 9 +- .../actions/CancelEditSpeciesFrequencyAction.java | 15 +-- 8 files changed, 123 insertions(+), 175 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 c533e06..cbcaeb5 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 @@ -60,7 +60,6 @@ import org.jdesktop.swingx.table.TableColumnModelExt; import org.nuiton.decorator.Decorator; import javax.swing.JComboBox; -import javax.swing.event.TableModelEvent; import java.awt.Color; import java.beans.PropertyChangeListener; import java.io.Closeable; @@ -146,20 +145,6 @@ public class IndividualObservationBatchTableHandler implements Closeable { * Pour écouter les changement de caractéristiques sur une ligne. */ private final PropertyChangeListener individualObservationRowCaracteristicsChangedListener; - /** - * Pour installer les listener sur chaque ligne d'observation individuelle. - */ - private final Function<IndividualObservationBatchRowModel, Void> installListenersOnRow = new Function<IndividualObservationBatchRowModel, Void>() { - @Override - public Void apply(IndividualObservationBatchRowModel row) { - row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_SIZE, individualObservationRowSizeChangedListener); - row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_WEIGHT, individualObservationRowWeightChangedListener); - row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE, individualObservationRowSamplingCodeChangedListener); - row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS, individualObservationRowCaracteristicsChangedListener); - row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS, individualObservationRowCaracteristicsChangedListener); - return null; - } - }; /** * Editor for the other caracteristics column. @@ -436,7 +421,31 @@ public class IndividualObservationBatchTableHandler implements Closeable { } // create table model - individualObservationTableModel = new IndividualObservationBatchTableModel(individualObservationWeightUnit, model, columnModel); + + // Pour installer les listener sur chaque ligne d'observation individuelle + Function<IndividualObservationBatchRowModel, Void> installListenersOnRow = row -> { + row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_SIZE, individualObservationRowSizeChangedListener); + row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_WEIGHT, individualObservationRowWeightChangedListener); + row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE, individualObservationRowSamplingCodeChangedListener); + row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS, individualObservationRowCaracteristicsChangedListener); + row.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS, individualObservationRowCaracteristicsChangedListener); + return null; + }; + + // Pour désinstaller les listener sur chaque ligne d'observation individuelle. + Function<IndividualObservationBatchRowModel, Void> uninstallListenersOnRow = row -> { + row.removePropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_SIZE, individualObservationRowSizeChangedListener); + row.removePropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_WEIGHT, individualObservationRowWeightChangedListener); + row.removePropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE, individualObservationRowSamplingCodeChangedListener); + row.removePropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS, individualObservationRowCaracteristicsChangedListener); + row.removePropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS, individualObservationRowCaracteristicsChangedListener); + return null; + }; + individualObservationTableModel = new IndividualObservationBatchTableModel(individualObservationWeightUnit, + model, + columnModel, + installListenersOnRow, + uninstallListenersOnRow); individualObservationsModel.setIndividualObservationTableModel(individualObservationTableModel); individualObservationTable.setModel(individualObservationTableModel); @@ -464,34 +473,6 @@ public class IndividualObservationBatchTableHandler implements Closeable { // always scroll to selected row SwingUtil.scrollToTableSelection(individualObservationTable); - individualObservationTableModel.addTableModelListener(e -> { - - int firstRow = e.getFirstRow(); - int lastRow = e.getLastRow(); - - switch (e.getType()) { - - case TableModelEvent.INSERT: - for (int i = firstRow; i <= lastRow; i++) { - IndividualObservationBatchRowModel newRow = individualObservationTableModel.getEntry(i); - installListenersOnRow.apply(newRow); - - if (model.mustCopyIndividualObservationSize() && newRow.withSize()) { - - frequencyTableModel.incrementFrequencyRowsNumbers(newRow.getSize()); - - } - - individualObservationsModel.recomputeRowValidState(newRow); - } - break; - - } - - model.recomputeCanEditLengthStep(); - - }); - individualObservationsModel.addPropertyChangeListener(IndividualObservationBatchUIModel.PROPERTY_ROWS, evt -> individualObservationTableModel.setRows((List<IndividualObservationBatchRowModel>) evt.getNewValue())); // Pour mettre à jour les mensurations suite au changement du mode de recopie des observations individuelles @@ -532,8 +513,6 @@ public class IndividualObservationBatchTableHandler implements Closeable { // Recalcul des mensurations à partir des observations individuelles frequencyTableModel.reloadRowsFromIndividualObservations(); - individualObservationTableModel.fireTableDataChanged(); - }); model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_LENGTH_STEP_CARACTERISTIC, evt -> { @@ -560,27 +539,14 @@ public class IndividualObservationBatchTableHandler implements Closeable { SamplingCodePrefix samplingCodePrefix = new SamplingCodePrefix(uiHandler.getConfig().getSamplingCodePrefix(), speciesDecorator.toString(species)); individualObservationsModel.setSamplingCodePrefix(samplingCodePrefix); - return individualObservationTableModel.loadRows(individualObservations, installListenersOnRow); + return individualObservationTableModel.loadRows(individualObservations); } public void loadSpeciesBatch(SpeciesBatchRowModel speciesBatch, List<IndividualObservationBatchRowModel> individualObservationRows, boolean addToCache) { -// CaracteristicMap sampleCategoryValues = new CaracteristicMap(); -// Iterator<SampleCategory<?>> iterator = speciesBatch.iterator(); -// iterator.forEachRemaining(sampleCategory -> { -// Caracteristic caracteristic = sampleCategory.getCategoryDef().getCaracteristic(); -// sampleCategoryValues.put(caracteristic, sampleCategory.getCategoryValue()); -// }); -// -// individualObservationTableModel.setDefaultCaracteristicValues(sampleCategoryValues); -// individualObservationsModel.setNotEditableCaracteristic(sampleCategoryValues.keySet()); - individualObservationsModel.setRows(individualObservationRows); - if (individualObservationRows.isEmpty()) { - individualObservationTableModel.addNewRow(); - } - individualObservationsModel.recomputeRowsValidateState(); +// individualObservationsModel.recomputeRowsValidateState(); model.getIndividualObservationUICache().init(speciesBatch.getSpecies(), individualObservationsModel.getRows(), addToCache); model.getSamplingCodeUICache().init(speciesBatch.getSpecies(), individualObservationsModel.getRows(), addToCache); @@ -664,6 +630,7 @@ public class IndividualObservationBatchTableHandler implements Closeable { iterator.forEachRemaining(sampleCategory -> { Caracteristic caracteristic = sampleCategory.getCategoryDef().getCaracteristic(); defaultCaracteristicMap.replace(caracteristic, sampleCategory.getCategoryValue()); + sampleCategoryValues.put(caracteristic, sampleCategory.getCategoryValue()); }); individualObservationTableModel.setDefaultCaracteristics(defaultCaracteristicMap); 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 19df4da..453e94a 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 @@ -31,13 +31,11 @@ import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicColumnIdentifier; import org.apache.commons.collections4.CollectionUtils; import org.jdesktop.swingx.table.TableColumnModelExt; -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.io.Serializable; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.Set; @@ -104,14 +102,20 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab protected Caracteristic lengthstepCaracteristic; - protected final SpeciesFrequencyUIModel uiModel; - protected final IndividualObservationBatchUIModel model; + private final SpeciesFrequencyUIModel uiModel; + private final Function<IndividualObservationBatchRowModel, Void> installListenersOnRow; + private final Function<IndividualObservationBatchRowModel, Void> uninstallListenersOnRow; + private final IndividualObservationBatchUIModel model; public IndividualObservationBatchTableModel(WeightUnit weightUnit, SpeciesFrequencyUIModel uiModel, - TableColumnModelExt columnModel) { - super(columnModel, true, false); + TableColumnModelExt columnModel, + Function<IndividualObservationBatchRowModel, Void> installListenersOnRow, + Function<IndividualObservationBatchRowModel, Void> uninstallListenersOnRow) { + super(columnModel, true, true); this.uiModel = uiModel; + this.installListenersOnRow = installListenersOnRow; + this.uninstallListenersOnRow = uninstallListenersOnRow; this.model = uiModel.getIndividualObservationModel(); this.weightUnit = weightUnit; this.defaultCaracteristicsMap = new CaracteristicMap(); @@ -160,19 +164,6 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } } - //FIXME A quoi ça sert ? (j'ai déplacé le samplingCodePrefix ailleurs cela doit peut-être éviter de faire cela...) - // quand l'utilisateur change le prefix dans la conf, si la ligne a deja un code prélèvement, - // le prefix reste le même, même si l'utilisateur supprime le code et en regénère un - // il faut pousser le nouveau prefix si l'utilisateur supprime le code -// result.addPropertyChangeListener(IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE, evt -> { -// if (result.withSamplingCode() && result.withSamplingCodePrefix()) { -// result.setSamplingCodePrefix(new SamplingCodePrefix(result.getSamplingCode())); -// -// } else if (!result.withSamplingCode()) { -// result.setSamplingCodePrefix(samplingCodePrefix); -// } -// }); - return result; } @@ -212,15 +203,7 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab return editable; } - public void recomputeRankOrders(int firstRow) { - - for (int i = firstRow; i < getRowCount(); i++) { - getRows().get(i).setRankOrder(i + 1); - } - - } - - public List<IndividualObservationBatchRowModel> loadRows(List<IndividualObservationBatchRowModel> individualObservations, Function<IndividualObservationBatchRowModel, Void> individualObservationRowChangedListener) { + public List<IndividualObservationBatchRowModel> loadRows(List<IndividualObservationBatchRowModel> individualObservations) { List<IndividualObservationBatchRowModel> obsRows = new ArrayList<>(); @@ -251,7 +234,6 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab obsRows.add(newRow); - individualObservationRowChangedListener.apply(newRow); } } @@ -260,6 +242,59 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } + @Override + protected void onRowAdded(int rowIndex, IndividualObservationBatchRowModel row) { + + attachListeners(row); + + uiModel.recomputeCanEditLengthStep(); + uiModel.setModify(true); + + } + + @Override + protected void onRowUpdated(int rowIndex, IndividualObservationBatchRowModel row) { + + uiModel.recomputeCanEditLengthStep(); + uiModel.setModify(true); + model.recomputeRowValidState(row); + + } + + @Override + protected void onRowRemoved(int rowIndex, IndividualObservationBatchRowModel row) { + + dettachListeners(row); + + uiModel.recomputeCanEditLengthStep(); + uiModel.recomputeRowsValidateState(); + + } + + @Override + protected void onBeforeRowsChanged(List<IndividualObservationBatchRowModel> oldRows) { + + if (oldRows != null) { + oldRows.forEach(this::dettachListeners); + } + + } + + @Override + protected void onRowsChanged(List<IndividualObservationBatchRowModel> newRows) { + + int rankOrder = 1; + for (IndividualObservationBatchRowModel row : newRows) { + attachListeners(row); + row.setRankOrder(rankOrder++); + } + newRows.forEach(this::attachListeners); + + uiModel.recomputeCanEditLengthStep(); + uiModel.recomputeRowsValidateState(); + + } + public IndividualObservationBatchRowModel addRafaleRow(Float step) { IndividualObservationBatchRowModel row = getEmptyRow(); @@ -298,49 +333,13 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } - public void removeRows(Collection<IndividualObservationBatchRowModel> rowsToDelete) { - - int minSelection = Integer.MAX_VALUE; - int maxSelection = -1; - - for (IndividualObservationBatchRowModel row : rowsToDelete) { - - JavaBeanObjectUtil.removeAllPropertyChangeListeners(row); - int rowIndex = rows.indexOf(row); - if (minSelection > rowIndex) { - minSelection = rowIndex; - } - if (maxSelection < rowIndex) { - maxSelection = rowIndex; - } - - model.removeRowInError(row); - } - - rows.removeAll(rowsToDelete); - model.removeRowsInError(rowsToDelete); - - fireTableRowsDeleted(minSelection, maxSelection); - - if (rows.isEmpty()) { - addNewRow(); - - } else { - recomputeRankOrders(minSelection); - } - + private void dettachListeners(IndividualObservationBatchRowModel result) { + uninstallListenersOnRow.apply(result); } - public void clear() { - - if (!rows.isEmpty()) { - - int rowCount = rows.size(); - rows.clear(); - fireTableRowsDeleted(0, rowCount - 1); - addNewRow(); - - } - + private void attachListeners(IndividualObservationBatchRowModel result) { + dettachListeners(result); // prevent leaks! + installListenersOnRow.apply(result); } + } 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 e2b0db1..fbf3c99 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 @@ -289,6 +289,8 @@ public class IndividualObservationBatchUIModel extends AbstractTuttiTableUIModel getRows().forEach(row -> row.setCopyIndividualObservationMode(newCopyMode)); recomputeRowsValidateState(); + individualObservationTableModel.fireTableDataChanged(); + } public void removeIndividualObservations(Collection<IndividualObservationBatchRowModel> rows) { @@ -297,11 +299,10 @@ public class IndividualObservationBatchUIModel extends AbstractTuttiTableUIModel parentModel.getIndividualObservationUICache().removeIndividualObservations(rows); parentModel.getSamplingCodeUICache().removeIndividualObservations(rows); - // on supprime les observations individuelles du modèle - individualObservationTableModel.removeRows(rows); + List<IndividualObservationBatchRowModel> newRows = new ArrayList<>(getRows()); + newRows.removeAll(rows); - recomputeCanEditLengthStep(); - recomputeRowsValidateState(); + setRows(newRows); } @@ -311,17 +312,7 @@ public class IndividualObservationBatchUIModel extends AbstractTuttiTableUIModel public void clear() { - // on supprime les observations individuelles des caches - parentModel.getIndividualObservationUICache().removeIndividualObservations(rows); - parentModel.getSamplingCodeUICache().removeIndividualObservations(rows); - - rowsInError.clear(); - individualObservationTableModel.clear(); - - firePropertyChange(PROPERTY_ROWS_IN_ERROR, null, rowsInError); - - recomputeCanEditLengthStep(); -// recomputeRowsValidateState(); + removeIndividualObservations(rows); } } 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 4f4964a..32531a0 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 @@ -158,7 +158,14 @@ public class IndividualObservationUICache implements Closeable { .forEach(row -> { IndividualObservationSamplingCacheRequest samplingCacheRequest = uiModel.toSamplingCacheRequest(row); - removeIndividualObservation(samplingCacheRequest); + + try { + removeIndividualObservation(samplingCacheRequest); + } catch (Exception e) { + if (log.isErrorEnabled()) { + log.error("Could not remove individual observation", e); + } + } }); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java index f241916..0832738 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java @@ -694,17 +694,4 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp } - public void clear() { - - if (!rows.isEmpty()) { - - int rowCount = rows.size(); - rows.clear(); - fireTableRowsDeleted(0, rowCount - 1); - addNewRow(); - - } - - - } } \ No newline at end of file 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 4b07cbc..dab5849 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 @@ -1222,6 +1222,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci log.info("lengthStepCaracteristic: " + lengthStepCaracteristic); } +// model.setLengthStepCaracteristic(null); model.setLengthStepCaracteristic(lengthStepCaracteristic); FrequencyConfigurationMode configurationMode = model.guessFrequencyConfigurationMode(); 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 c43ee34..aedbb88 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 @@ -432,7 +432,8 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa step = caracteristic.getPrecision(); } if (step == null) { - step = 1f; + // on ne met pas 1 c'est la valeur par défaut + step = 0.1f; } setStep(step); } @@ -879,11 +880,9 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa public void clear() { - frequencyTableModel.clear(); - recomputeCanEditLengthStep(); + setRows(new ArrayList<>()); - rowsInError.clear(); - firePropertyChange(PROPERTY_ROWS_IN_ERROR, null, rowsInError); + recomputeCanEditLengthStep(); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/CancelEditSpeciesFrequencyAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/CancelEditSpeciesFrequencyAction.java index fd6d821..a326a57 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/CancelEditSpeciesFrequencyAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/CancelEditSpeciesFrequencyAction.java @@ -24,9 +24,7 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.ac * #L% */ -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.IndividualObservationBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.IndividualObservationBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; @@ -74,14 +72,13 @@ public class CancelEditSpeciesFrequencyAction extends LongActionSupport<SpeciesF SpeciesFrequencyUIModel model = getModel(); - IndividualObservationBatchUIModel individualObservationModel = model.getIndividualObservationModel(); - List<IndividualObservationBatchRowModel> individualObservationRows = individualObservationModel.getRows(); + // remove indivudal observations from cache + List<IndividualObservationBatchRowModel> individualObservations = model.getIndividualObservationModel().getRows(); + model.getIndividualObservationUICache().removeIndividualObservations(individualObservations); - individualObservationModel.removeIndividualObservations(individualObservationRows); - - SpeciesBatchRowModel batch = model.getBatch(); - - model.addIndividualObservationsInCache(batch.getIndividualObservation()); + // push back old individual observations in cache + List<IndividualObservationBatchRowModel> oldIndividualObservations = model.getBatch().getIndividualObservation(); + model.addIndividualObservationsInCache(oldIndividualObservations); // close dialog getHandler().onCloseUI(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.