branch feature/revue_algorithme updated (2488271 -> 7de63b3)
This is an automated email from the git hooks/post-receive script. New change to branch feature/revue_algorithme in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git from 2488271 Utilisation d'un nouvel handler pour gérer la zone de notification new 9025fe4 Ajout d'états sur le cache d'ui new e7dec7b Revue de la zone de notification new 2ce988a Suppression des listeners sur le cache + revue du code du cache new 41059a9 Suppression du statut de la ligne d'une observation (cela pose des problème sur la sélection dans par exemple l'éditeur des code de prélèvement qui se déclanche avant que la ligne soit sélectionnée) new 48d0e06 Revue du modèle de la zone de notification et de son handler new e899b8a traduction perdue new af55cbb Renommage méthode + suppression méthode non utilisée new 7de63b3 Normalement on a le bon flow pour la rafraichissement de la zone de notification des prélèvements + nettoyage de code The 8 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 7de63b3196d6cab28a601e6d1d7cfd88b589b0b6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:27:52 2016 +0200 Normalement on a le bon flow pour la rafraichissement de la zone de notification des prélèvements + nettoyage de code commit af55cbb697ba72eda6aafeef1e2a769230855b46 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:17:38 2016 +0200 Renommage méthode + suppression méthode non utilisée commit e899b8ab8b822120a6c46d62938d24f881c3ef9f Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:17:14 2016 +0200 traduction perdue commit 48d0e067104b56a4afa32d552e77d17f264dcf71 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:16:51 2016 +0200 Revue du modèle de la zone de notification et de son handler commit 41059a9cd2a86b5359d3715376f7899125a0aa23 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:15:11 2016 +0200 Suppression du statut de la ligne d'une observation (cela pose des problème sur la sélection dans par exemple l'éditeur des code de prélèvement qui se déclanche avant que la ligne soit sélectionnée) commit 2ce988a985c99d24a6a35772bd7dadb57a53b314 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:14:13 2016 +0200 Suppression des listeners sur le cache + revue du code du cache commit e7dec7b3385ffdb9537990bd65767a1ec9bf95bd Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 19 15:16:27 2016 +0200 Revue de la zone de notification commit 9025fe4882840061fa5b88291dc4a25a59f61d98 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 19 15:16:15 2016 +0200 Ajout d'états sur le cache d'ui Summary of changes: .../service/sampling/CruiseSamplingCache.java | 76 +---- .../IndividualObservationSamplingStatus.java | 14 + .../tutti/service/sampling/SamplingEvent.java | 51 ---- .../tutti/service/sampling/SamplingListener.java | 38 --- .../IndividualObservationBatchRowModel.java | 16 - .../IndividualObservationBatchTableHandler.java | 139 ++------- .../IndividualObservationBatchUIModel.java | 7 + ...dividualObservationNotificationZoneHandler.java | 260 ---------------- .../frequency/IndividualObservationUICache.java | 21 +- .../frequency/SamplingNotificationZoneHandler.java | 331 +++++++++++++++++++++ .../frequency/SamplingNotificationZoneModel.java | 56 ++++ .../frequency/SamplingNotificationZoneStatus.java | 15 + .../frequency/SpeciesFrequencyUIHandler.java | 15 +- .../resources/i18n/tutti-ui-swing_fr_FR.properties | 3 +- 14 files changed, 486 insertions(+), 556 deletions(-) delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingEvent.java delete mode 100644 tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingListener.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationNotificationZoneHandler.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneHandler.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneModel.java create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneStatus.java -- 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/revue_algorithme in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 2ce988a985c99d24a6a35772bd7dadb57a53b314 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:14:13 2016 +0200 Suppression des listeners sur le cache + revue du code du cache --- .../service/sampling/CruiseSamplingCache.java | 76 ++++------------------ .../IndividualObservationSamplingStatus.java | 14 ++++ .../tutti/service/sampling/SamplingEvent.java | 51 --------------- .../tutti/service/sampling/SamplingListener.java | 38 ----------- 4 files changed, 27 insertions(+), 152 deletions(-) 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 61507f6..7d8bed0 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 @@ -43,7 +43,6 @@ import fr.ifremer.tutti.util.Numbers; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.event.EventListenerList; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -98,10 +97,6 @@ public class CruiseSamplingCache implements CruiseCacheAble { */ private final Map<Integer, CaracteristicQualitativeValue> sexQualitativeValues; /** - * La liste des listeners. - */ - private final EventListenerList listeners = new EventListenerList(); - /** * Un drapeau pour indiquer qu'on est en train de construire le cache et donc ne déclancher aucun listener. */ private boolean loading; @@ -160,8 +155,6 @@ public class CruiseSamplingCache implements CruiseCacheAble { try { - int fishingOperationId = fishingOperation.getIdAsInt(); - for (IndividualObservationBatch individualObservationBatch : individualObservations) { Optional<CalcifiedPiecesSamplingDefinition> optionalCalcifiedPiecesSamplingDefinition = @@ -186,8 +179,6 @@ public class CruiseSamplingCache implements CruiseCacheAble { CaracteristicQualitativeValue gender = individualObservationBatch.getCaracteristics().getQualitativeValue(sexCaracteristic); -// CalcifiedPiecesSamplingDefinition calcifiedPiecesSamplingDefinition = optionalCalcifiedPiecesSamplingDefinition.get(); - IndividualObservationSamplingContext individualObservationSamplingContext = createContext(fishingOperation.getIdAsInt(), species, @@ -236,8 +227,6 @@ public class CruiseSamplingCache implements CruiseCacheAble { try { - int fishingOperationId = fishingOperation.getIdAsInt(); - for (IndividualObservationBatch individualObservationBatch : individualObservations) { Optional<CalcifiedPiecesSamplingDefinition> optionalCalcifiedPiecesSamplingDefinition = @@ -260,8 +249,6 @@ public class CruiseSamplingCache implements CruiseCacheAble { CaracteristicQualitativeValue gender = individualObservationBatch.getCaracteristics().getQualitativeValue(sexCaracteristic); -// CalcifiedPiecesSamplingDefinition calcifiedPiecesSamplingDefinition = optionalCalcifiedPiecesSamplingDefinition.get(); - IndividualObservationSamplingContext individualObservationSamplingContext = createContext(fishingOperation.getIdAsInt(), species, @@ -362,11 +349,6 @@ public class CruiseSamplingCache implements CruiseCacheAble { cpsDefinitionsBySpecies.clear(); maturityCaracteristicBySpecies.clear(); matureStatesByMaturityCracteristic.clear(); - SamplingListener[] samplingListeners = listeners.getListeners(SamplingListener.class); - for (SamplingListener listener : samplingListeners) { - removeSamplingListener(listener); - } - } @Override @@ -428,8 +410,16 @@ public class CruiseSamplingCache implements CruiseCacheAble { String fishingOperationSamplingKey = context.getFishingOperationSamplingKey(); CruiseSamplingInternalCache.SamplingData fishingOperationSamplingData = fishingOperationCache.getSamplingData(fishingOperationSamplingKey); - return new IndividualObservationSamplingStatus(context, cruiseSamplingData, zoneSamplingData, fishingOperationSamplingData); + boolean needSampling; + if (individualObservationBatch.getSamplingCode() != null) { + needSampling = false; + } else { + int samplingInterval = context.getCalcifiedPiecesSamplingDefinition().getSamplingInterval(); + int cruiseIndividualObservationCount = cruiseSamplingData.getIndividualObservationCount(); + needSampling = cruiseIndividualObservationCount == 1 || samplingInterval == 1 || cruiseIndividualObservationCount % samplingInterval == 1; + } + return new IndividualObservationSamplingStatus(context, needSampling, cruiseSamplingData, zoneSamplingData, fishingOperationSamplingData); } /** @@ -652,14 +642,6 @@ public class CruiseSamplingCache implements CruiseCacheAble { return maturity; } - public void addSamplingListener(SamplingListener listener) { - listeners.add(SamplingListener.class, listener); - } - - public void removeSamplingListener(SamplingListener listener) { - listeners.remove(SamplingListener.class, listener); - } - public List<CacheExtractedKey> getSamplingNumbers(Map<String, Species> speciesById) { List<CacheExtractedKey> result = cruiseCache.getSamplingNumbers(speciesById, sexQualitativeValues); result.forEach(key -> { @@ -687,17 +669,6 @@ public class CruiseSamplingCache implements CruiseCacheAble { return cpsDefinitionsBySpecies.containsKey(species.getReferenceTaxonId()); } - private void fireSamplingNeeded(SamplingEvent event) { - - SamplingListener[] samplingListeners = listeners.getListeners(SamplingListener.class); - if (samplingListeners.length > 0) { - - for (SamplingListener listener : samplingListeners) { - listener.samplingNeeded(event); - } - } - } - private Optional<Zone> tryFindZone(TuttiLocation location) { Integer locationId = location.getIdAsInt(); @@ -763,32 +734,11 @@ public class CruiseSamplingCache implements CruiseCacheAble { CruiseSamplingInternalCache.SamplingData fishingOperationSamplingData = fishingOperationCache.addOneIndividualObservation(fishingOperationSamplingKey); if (log.isInfoEnabled()) { - log.info("add individual observation " + cruiseSamplingKey + " => op " + fishingOperationSamplingData.getSamplingCount() + " / zone " + zoneSamplingData.getSamplingCount() + " / cruise " + cruiseSamplingData.getSamplingCount()); - } - - if (!isLoading()) { - - int samplingInterval = individualObservationSamplingContext.getCalcifiedPiecesSamplingDefinition().getSamplingInterval(); - int cruiseIndividualObservationCount = cruiseSamplingData.getIndividualObservationCount(); - if (cruiseIndividualObservationCount == 1 || samplingInterval == 1 || cruiseIndividualObservationCount % samplingInterval == 1) { - - IndividualObservationSamplingStatus status = new IndividualObservationSamplingStatus(individualObservationSamplingContext, cruiseSamplingData, zoneSamplingData, fishingOperationSamplingData); - SamplingEvent event = new SamplingEvent(this, status); - if (log.isInfoEnabled()) { - log.info("-> needs sampling"); - } - fireSamplingNeeded(event); - } - + log.info("add individual observation " + cruiseSamplingKey + " ⇒ op " + fishingOperationSamplingData + " / zone " + zoneSamplingData + " / cruise " + cruiseSamplingData); } } - /** - * Suppression d'un échantillon du cache. - * - * @param individualObservationSamplingContext le contexte de l'observation individuelle - */ private void removeIndividualObservation(IndividualObservationSamplingContext individualObservationSamplingContext) { Objects.requireNonNull(individualObservationSamplingContext); @@ -803,7 +753,7 @@ public class CruiseSamplingCache implements CruiseCacheAble { CruiseSamplingInternalCache.SamplingData fishingOperationSamplingData = fishingOperationCache.removeOneIndividualObservation(fishingOperationSamplingKey); if (log.isInfoEnabled()) { - log.info("remove individual observation " + cruiseSamplingKey + " => op " + fishingOperationSamplingData.getSamplingCount() + " / zone " + zoneSamplingData.getSamplingCount() + " / cruise " + cruiseSamplingData.getSamplingCount()); + log.info("remove individual observation " + cruiseSamplingKey + " ⇒ op " + fishingOperationSamplingData + " / zone " + zoneSamplingData + " / cruise " + cruiseSamplingData); } } @@ -822,7 +772,7 @@ public class CruiseSamplingCache implements CruiseCacheAble { CruiseSamplingInternalCache.SamplingData fishingOperationSamplingData = fishingOperationCache.addOneSampling(fishingOperationSamplingKey); if (log.isInfoEnabled()) { - log.info("add Sampling " + cruiseSamplingKey + " => op " + fishingOperationSamplingData.getSamplingCount() + " / zone " + zoneSamplingData.getSamplingCount() + " / cruise " + cruiseSamplingData.getSamplingCount()); + log.info("add sampling " + cruiseSamplingKey + " ⇒ op " + fishingOperationSamplingData + " / zone " + zoneSamplingData + " / cruise " + cruiseSamplingData); } } @@ -841,7 +791,7 @@ public class CruiseSamplingCache implements CruiseCacheAble { CruiseSamplingInternalCache.SamplingData fishingOperationSamplingData = fishingOperationCache.removeOneSampling(fishingOperationSamplingKey); if (log.isInfoEnabled()) { - log.info("remove Sampling " + cruiseSamplingKey + " => op " + fishingOperationSamplingData.getSamplingCount() + " / zone " + zoneSamplingData.getSamplingCount() + " / cruise " + cruiseSamplingData.getSamplingCount()); + log.info("remove sampling " + cruiseSamplingKey + " ⇒ op " + fishingOperationSamplingData + " / zone " + zoneSamplingData + " / cruise " + cruiseSamplingData); } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/IndividualObservationSamplingStatus.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/IndividualObservationSamplingStatus.java index 92184c6..46dcfdb 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/IndividualObservationSamplingStatus.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/IndividualObservationSamplingStatus.java @@ -50,11 +50,21 @@ public class IndividualObservationSamplingStatus { */ private final int samplingCountInZone; + /** + * Pour savoir si on demande un prélèvement. + */ + private final boolean needSampling; + public IndividualObservationSamplingStatus(IndividualObservationSamplingContext individualObservationSamplingContext, + boolean needSampling, CruiseSamplingInternalCache.SamplingData cruiseSamplingData, CruiseSamplingInternalCache.SamplingData zoneSamplingData, CruiseSamplingInternalCache.SamplingData fishingOperationSamplingData) { Objects.requireNonNull(individualObservationSamplingContext); + Objects.requireNonNull(cruiseSamplingData); + Objects.requireNonNull(zoneSamplingData); + Objects.requireNonNull(fishingOperationSamplingData); + this.needSampling = needSampling; this.individualObservationSamplingContext = individualObservationSamplingContext; this.samplingCountInCruise = cruiseSamplingData.getSamplingCount(); this.individualObservationCountInCruise = cruiseSamplingData.getIndividualObservationCount(); @@ -68,6 +78,10 @@ public class IndividualObservationSamplingStatus { return individualObservationSamplingContext; } + public boolean isNeedSampling() { + return needSampling; + } + public CalcifiedPiecesSamplingDefinition getCalcifiedPiecesSamplingDefinition() { return individualObservationSamplingContext.getCalcifiedPiecesSamplingDefinition(); } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingEvent.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingEvent.java deleted file mode 100644 index f06583c..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingEvent.java +++ /dev/null @@ -1,51 +0,0 @@ -package fr.ifremer.tutti.service.sampling; - -/* - * #%L - * Tutti :: Service - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2012 - 2016 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import java.util.EventObject; - -/** - * @author Kevin Morin (Code Lutin) - * @since 4.5 - */ -public class SamplingEvent extends EventObject { - - private final IndividualObservationSamplingStatus status; - - public SamplingEvent(CruiseSamplingCache source, IndividualObservationSamplingStatus status) { - super(source); - this.status = status; - } - - @Override - public CruiseSamplingCache getSource() { - return (CruiseSamplingCache) super.getSource(); - } - - public IndividualObservationSamplingStatus getStatus() { - return status; - } - -} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingListener.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingListener.java deleted file mode 100644 index 8f14783..0000000 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingListener.java +++ /dev/null @@ -1,38 +0,0 @@ -package fr.ifremer.tutti.service.sampling; - -/* - * #%L - * Tutti :: Service - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2012 - 2016 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import java.util.EventListener; - -/** - * @author Kevin Morin (Code Lutin) - * @since 4.5 - */ -public interface SamplingListener extends EventListener { - - void samplingNeeded(SamplingEvent event); - -} - -- 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/revue_algorithme in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 41059a9cd2a86b5359d3715376f7899125a0aa23 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:15:11 2016 +0200 Suppression du statut de la ligne d'une observation (cela pose des problème sur la sélection dans par exemple l'éditeur des code de prélèvement qui se déclanche avant que la ligne soit sélectionnée) --- .../frequency/IndividualObservationBatchRowModel.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchRowModel.java index 9895745..8244875 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchRowModel.java @@ -34,7 +34,6 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.sampling.IndividualObservationSamplingStatus; import fr.ifremer.tutti.service.sampling.SamplingCodePrefix; import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; @@ -96,13 +95,6 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel */ protected SamplingCodePrefix samplingCodePrefix; - /** - * Le statut venant du cache des observations individuelles. - * - * @since 4.5 - */ - protected IndividualObservationSamplingStatus individualObservationSamplingStatus; - protected static final Binder<IndividualObservationBatch, IndividualObservationBatchRowModel> fromBeanBinder = BinderFactory.newBinder(IndividualObservationBatch.class, IndividualObservationBatchRowModel.class); @@ -144,14 +136,6 @@ public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel firePropertyChange(PROPERTY_DEFAULT_CARACTERISTICS, oldValue, defaultCaracteristics); } - public IndividualObservationSamplingStatus getIndividualObservationSamplingStatus() { - return individualObservationSamplingStatus; - } - - public void setIndividualObservationSamplingStatus(IndividualObservationSamplingStatus individualObservationSamplingStatus) { - this.individualObservationSamplingStatus = individualObservationSamplingStatus; - } - //------------------------------------------------------------------------// //-- AbstractTuttiBeanUIModel --// //------------------------------------------------------------------------// -- 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/revue_algorithme in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 48d0e067104b56a4afa32d552e77d17f264dcf71 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:16:51 2016 +0200 Revue du modèle de la zone de notification et de son handler --- .../frequency/SamplingNotificationZoneHandler.java | 96 +++++++++++----------- .../frequency/SamplingNotificationZoneModel.java | 12 +++ 2 files changed, 60 insertions(+), 48 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneHandler.java index 0587d90..9c9b2b0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneHandler.java @@ -8,7 +8,6 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.sampling.CalcifiedPiecesSamplingAlgorithmEntryNotFoundException; import fr.ifremer.tutti.service.sampling.IndividualObservationSamplingContext; import fr.ifremer.tutti.service.sampling.IndividualObservationSamplingStatus; -import fr.ifremer.tutti.service.sampling.SamplingListener; import fr.ifremer.tutti.service.sampling.SizeNotDefinedOnIndividualObservationException; import fr.ifremer.tutti.service.sampling.ZoneNotDefinedOnFishingOperationException; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; @@ -48,9 +47,9 @@ public class SamplingNotificationZoneHandler implements Closeable { private final JLabel samplingWarningLabel; private final JLabel samplingSummaryLabel; - private final SamplingListener samplingListener; private final ListSelectionListener listSelectionListener; private final PropertyChangeListener modelSummaryTextChanged; + private final PropertyChangeListener modelSelectedRowChanged; private final PropertyChangeListener modelStatusChanged; private final Decorator<Integer> infiniteDecorator; @@ -60,12 +59,12 @@ public class SamplingNotificationZoneHandler implements Closeable { private final Color colorHighlightInfoForeground; private final Color colorHighlightInfoBackground; - public SamplingNotificationZoneHandler(SpeciesFrequencyUI ui) { + public SamplingNotificationZoneHandler(SpeciesFrequencyUI ui, SamplingNotificationZoneModel model) { this.uiModel = ui.getModel(); this.samplingWarningLabel = ui.getSamplingWarningLabel(); this.samplingSummaryLabel = ui.getSamplingResumeLabel(); this.individualObservationTableModel = (IndividualObservationBatchTableModel) ui.getObsTable().getModel(); - this.model = new SamplingNotificationZoneModel(); + this.model = model; this.listSelectionModel = ui.getObsTable().getSelectionModel(); SpeciesFrequencyUIHandler uiHandler = ui.getHandler(); @@ -76,16 +75,6 @@ public class SamplingNotificationZoneHandler implements Closeable { this.colorHighlightInfoForeground = uiHandler.getConfig().getColorHighlightInfoForeground(); this.colorHighlightInfoBackground = uiHandler.getConfig().getColorHighlightInfoBackground(); - // Ecoute sur le cache de données pour savoir quand il faut afficher les notifications de prélèvements - this.samplingListener = event -> { - - if (uiModel.isCanDisplayNotifications()) { - - whenSamplingNeeded(event.getStatus()); - - } - }; - // Ecoute le changement d'état de la zone de notification pour mettre à jour le statut this.modelStatusChanged = event -> { @@ -132,6 +121,34 @@ public class SamplingNotificationZoneHandler implements Closeable { }; + this.modelSelectedRowChanged = event -> { + + IndividualObservationBatchRowModel selectedRow = (IndividualObservationBatchRowModel) event.getNewValue(); + + if (selectedRow == null) { + + whenCanNotUseSampling("Aucune observation individuelle sélectionnée."); + return; + } + + try { + + // récupération du status de l'observation individuelle + IndividualObservationSamplingStatus status = individualObservationUICache.getIndividualObservationSamplingStatus(selectedRow); + + // mise à jour de la zone de notification + whenUpdateSummary(status); + + } catch (CalcifiedPiecesSamplingAlgorithmEntryNotFoundException e) { + whenCanNotUseSampling("Pas de correspondance sur l'observation individuelle sélectionnée dans le protocole."); + } catch (SizeNotDefinedOnIndividualObservationException e) { + whenCanNotUseSampling("La taille n'est pas définie sur l'observation individuelle sélectionnée."); + } catch (ZoneNotDefinedOnFishingOperationException e) { + whenCanNotUseSampling("Le trait n'est pas dans une zone."); + } + + }; + // Ecoute la sélection sur le tableau des observations individuelles pour rafraîchir la zone de notification this.listSelectionListener = event -> { @@ -142,7 +159,7 @@ public class SamplingNotificationZoneHandler implements Closeable { } if (source.isSelectionEmpty()) { - whenCanNotUseSampling("Aucune observation individuelle sélectionnée."); + model.setSelectedRow(null); return; } @@ -152,23 +169,7 @@ public class SamplingNotificationZoneHandler implements Closeable { } IndividualObservationBatchRowModel selectedRow = individualObservationTableModel.getEntry(source.getMinSelectionIndex()); - - // on commence toujours par supprimer le status de cette ligne - selectedRow.setIndividualObservationSamplingStatus(null); - - try { - - IndividualObservationSamplingStatus status = individualObservationUICache.getIndividualObservationStatus(selectedRow); - selectedRow.setIndividualObservationSamplingStatus(status); - whenUpdateSummary(status); - - } catch (CalcifiedPiecesSamplingAlgorithmEntryNotFoundException e) { - whenCanNotUseSampling("Pas de correspondance sur l'observation individuelle sélectionnée dans le protocole."); - } catch (SizeNotDefinedOnIndividualObservationException e) { - whenCanNotUseSampling("La taille n'est pas définie sur l'observation individuelle sélectionnée."); - } catch (ZoneNotDefinedOnFishingOperationException e) { - whenCanNotUseSampling("Le trait n'est pas dans une zone."); - } + model.setSelectedRow(selectedRow); }; @@ -183,13 +184,12 @@ public class SamplingNotificationZoneHandler implements Closeable { // toujours supprimer les listeners listSelectionModel.removeListSelectionListener(listSelectionListener); model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SAMPLING_STATUS, modelStatusChanged); + model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SELECTED_ROW, modelSelectedRowChanged); model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SUMMARY_TEXT, modelSummaryTextChanged); - if (individualObservationUICache.useCruiseSamplingCache()) { - individualObservationUICache.getCruiseSamplingCache().removeSamplingListener(samplingListener); - } // on les ajoutent (on peut en avoir besoin pour désactiver la zone de notification) model.addPropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SAMPLING_STATUS, modelStatusChanged); + model.addPropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SELECTED_ROW, modelSelectedRowChanged); model.addPropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SUMMARY_TEXT, modelSummaryTextChanged); if (!individualObservationUICache.isProtocolFilled()) { @@ -224,7 +224,6 @@ public class SamplingNotificationZoneHandler implements Closeable { model.reset(); - individualObservationUICache.getCruiseSamplingCache().addSamplingListener(samplingListener); listSelectionModel.addListSelectionListener(listSelectionListener); } @@ -233,41 +232,42 @@ public class SamplingNotificationZoneHandler implements Closeable { public void close() { listSelectionModel.removeListSelectionListener(listSelectionListener); - if (individualObservationUICache.useCruiseSamplingCache()) { - individualObservationUICache.getCruiseSamplingCache().removeSamplingListener(samplingListener); - } model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SAMPLING_STATUS, modelStatusChanged); + model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SELECTED_ROW, modelSelectedRowChanged); model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SUMMARY_TEXT, modelSummaryTextChanged); } private void whenCanNotUseSampling(String message) { + model.setSummaryText(message); model.setSamplingNotificationZoneStatus(SamplingNotificationZoneStatus.DISABLED); + } private void stopUsingStatusNotication(String message) { whenCanNotUseSampling(message); model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SAMPLING_STATUS, modelStatusChanged); + model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SELECTED_ROW, modelSelectedRowChanged); model.removePropertyChangeListener(SamplingNotificationZoneModel.PROPERTY_SUMMARY_TEXT, modelSummaryTextChanged); } - private void whenSamplingNeeded(IndividualObservationSamplingStatus status) { + private void whenUpdateSummary(IndividualObservationSamplingStatus status) { model.setSummaryText(getSummaryText(status)); - model.setSamplingNotificationZoneStatus(SamplingNotificationZoneStatus.NEED_SAMPLING); - - } - private void whenUpdateSummary(IndividualObservationSamplingStatus status) { + SamplingNotificationZoneStatus zoneStatus; - model.setSummaryText(getSummaryText(status)); + if (status.isNeedSampling()) { + zoneStatus = SamplingNotificationZoneStatus.NEED_SAMPLING; + } else if (status.isOneTotalCountIsAttained()) { + zoneStatus = SamplingNotificationZoneStatus.COUNT_ATTAINED; + } else { + zoneStatus = SamplingNotificationZoneStatus.NONE; + } - SamplingNotificationZoneStatus zoneStatus = status.isOneTotalCountIsAttained() ? - SamplingNotificationZoneStatus.COUNT_ATTAINED : - SamplingNotificationZoneStatus.NONE; model.setSamplingNotificationZoneStatus(zoneStatus); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneModel.java index 6e6547d..1572e0d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SamplingNotificationZoneModel.java @@ -11,7 +11,9 @@ public class SamplingNotificationZoneModel extends AbstractSerializableBean { public static final String PROPERTY_SAMPLING_STATUS = "samplingNotificationZoneStatus"; public static final String PROPERTY_SUMMARY_TEXT = "summaryText"; + public static final String PROPERTY_SELECTED_ROW = "selectedRow"; + private IndividualObservationBatchRowModel selectedRow; private SamplingNotificationZoneStatus samplingNotificationZoneStatus; private String summaryText; @@ -41,4 +43,14 @@ public class SamplingNotificationZoneModel extends AbstractSerializableBean { setSummaryText("Aucune observation individuelle sélectionnée."); } + + public IndividualObservationBatchRowModel getSelectedRow() { + return selectedRow; + } + + public void setSelectedRow(IndividualObservationBatchRowModel selectedRow) { + this.selectedRow = selectedRow; + firePropertyChange(PROPERTY_SELECTED_ROW, null /* On force la propagation de l'évènement! */, selectedRow); + } + } -- 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/revue_algorithme in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit e899b8ab8b822120a6c46d62938d24f881c3ef9f Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:17:14 2016 +0200 traduction perdue --- tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 4f46f12..647a22e 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 @@ -1533,8 +1533,7 @@ tutti.editSpeciesFrequencies.samplingNeeded.immature=Immature tutti.editSpeciesFrequencies.samplingNeeded.mature=Mature tutti.editSpeciesFrequencies.samplingNeeded.max=max tutti.editSpeciesFrequencies.samplingNeeded.summary=<html><body><strong>%s</strong> \: Trait \: %s | %s \: %s | Campagne \: %s -tutti.editSpeciesFrequencies.samplingNeeded.summary.noZone=<html><body><strong>%s</strong> \: Trait \: %s | (pas dans une zone) | Campagne \: %s -tutti.editSpeciesFrequencies.samplingNeeded.warning= +tutti.editSpeciesFrequencies.samplingNeeded.warning=<html><body><strong>Prélevez les pièces calcifiées \!</body></html> tutti.editSpeciesFrequencies.samplingTotalCountAttained.warning=<html><body><strong>Le nombre de prélèvements requis est atteint \!</body></html> tutti.editSpeciesFrequencies.simpleCountingAndFrequencies=Des mensurations ont été saisies dans le tableau. Saisir un simple dénombrement les effacera. tutti.editSpeciesFrequencies.table.header.lengthStep=Classe de taille -- 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/revue_algorithme in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit af55cbb697ba72eda6aafeef1e2a769230855b46 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:17:38 2016 +0200 Renommage méthode + suppression méthode non utilisée --- .../catches/species/frequency/IndividualObservationUICache.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) 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 23a149a..f487a6a 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 @@ -171,10 +171,6 @@ public class IndividualObservationUICache implements Closeable { .forEach(individualObservationRow -> addSamplingCodeNotAvailable(individualObservationRow.getSamplingCode())); } - public CruiseSamplingCache getCruiseSamplingCache() { - return cruiseSamplingCache; - } - public boolean isFishingOperationWithZone() { return fishingOperationZone != null; } @@ -198,7 +194,7 @@ public class IndividualObservationUICache implements Closeable { this.fishingOperation = null; } - public IndividualObservationSamplingStatus getIndividualObservationStatus(IndividualObservationBatchRowModel row) throws CalcifiedPiecesSamplingAlgorithmEntryNotFoundException, SizeNotDefinedOnIndividualObservationException, ZoneNotDefinedOnFishingOperationException { + public IndividualObservationSamplingStatus getIndividualObservationSamplingStatus(IndividualObservationBatchRowModel row) throws CalcifiedPiecesSamplingAlgorithmEntryNotFoundException, SizeNotDefinedOnIndividualObservationException, ZoneNotDefinedOnFishingOperationException { Float size = row.getSize(); return cruiseSamplingCache.getIndividualObservationSamplingStatus(fishingOperation, -- 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/revue_algorithme in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 7de63b3196d6cab28a601e6d1d7cfd88b589b0b6 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 20 02:27:52 2016 +0200 Normalement on a le bon flow pour la rafraichissement de la zone de notification des prélèvements + nettoyage de code --- .../IndividualObservationBatchTableHandler.java | 139 +++++---------------- .../IndividualObservationBatchUIModel.java | 7 ++ .../frequency/SpeciesFrequencyUIHandler.java | 11 +- 3 files changed, 39 insertions(+), 118 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 c68e7d3..37eacb1 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 @@ -103,7 +103,7 @@ public class IndividualObservationBatchTableHandler implements Closeable { if (!optionalCruiseCache.isPresent()) { throw new IllegalStateException("Can't find cruise cache"); } - this.individualObservationUICache = new IndividualObservationUICache(optionalCruiseCache.get(), model, uiHandler.getDataContext()); + this.individualObservationUICache = new IndividualObservationUICache(optionalCruiseCache.get(), model, dataContext); this.individualObservationTable = ui.getObsTable(); this.frequencyTableModel = uiHandler.getTableModel(); this.individualObservationToFrequencyEngine = new IndividualObservationToFrequencyEngine(model2.getIndividualObservationWeightUnit()); @@ -120,6 +120,7 @@ public class IndividualObservationBatchTableHandler implements Closeable { CaracteristicQualitativeValue gender = model2.getGender(row); CaracteristicQualitativeValue maturity = model2.getMaturityValue(row); + boolean recomputeSamplingNotificationZone = false; switch (propertyName) { case IndividualObservationBatchRowModel.PROPERTY_INDIVIDUAL_OBSERVATION_BATCH_ROW_STATE: { @@ -139,6 +140,7 @@ public class IndividualObservationBatchTableHandler implements Closeable { float lengthStepToDecrement = optionalDecrementSize.get(); frequencyTableModel.decrementFrequencyRowsNumbers(lengthStepToDecrement); individualObservationUICache.decrementsObservationNb(gender, maturity, lengthStepToDecrement, row.getSamplingCode()); + recomputeSamplingNotificationZone = true; } Optional<Float> optionalIncrementSize = frequencyUpdate.getIncrementSize(); @@ -146,6 +148,7 @@ public class IndividualObservationBatchTableHandler implements Closeable { float lengthStepToIncrement = optionalIncrementSize.get(); frequencyTableModel.incrementFrequencyRowsNumbers(lengthStepToIncrement); individualObservationUICache.incrementsObservationNb(gender, maturity, lengthStepToIncrement, row.getSamplingCode()); + recomputeSamplingNotificationZone = true; } Optional<Pair<Float, Float>> optionalSubstractWeight = frequencyUpdate.getSubstractWeight(); @@ -176,73 +179,11 @@ public class IndividualObservationBatchTableHandler implements Closeable { } break; -// case IndividualObservationBatchRowModel.PROPERTY_SIZE: { -// -// Float oldValue = (Float) evt.getOldValue(); -// Float newValue = (Float) evt.getNewValue(); -// -// if (oldValue != null) { -// individualObservationUICache.decrementsObservationNb(gender, maturity, oldValue, row.getSamplingCode()); -// } -// if (newValue != null) { -// individualObservationUICache.incrementsObservationNb(gender, maturity, newValue, row.getSamplingCode()); -// } -// -// // we only update the frequencies if the row is valid -// if (row.isValid() && model.mustCopyIndividualObservationSize()) { -// -// if (oldValue != null) { -// frequencyTableModel.decrementFrequencyRowsNumbers(oldValue); -// } -// if (newValue != null) { -// frequencyTableModel.incrementFrequencyRowsNumbers(newValue); -// } -// -// if (model.isCopyIndividualObservationAll() && row.withWeight()) { -// float weight = row.getWeight(); -// if (oldValue != null) { -// frequencyTableModel.removeWeightToFrequencyRow(oldValue, weight); -// } -// if (newValue != null) { -// frequencyTableModel.addWeightToFrequencyRow(newValue, weight); -// } -// } -// } -// } -// break; -// -// case IndividualObservationBatchRowModel.PROPERTY_WEIGHT: -// if (row.isValid() && model.isCopyIndividualObservationAll()) { -// -// Float oldValue = (Float) evt.getOldValue(); -// Float newValue = (Float) evt.getNewValue(); -// Float weightToAdd; -// -// if (oldValue == null) { -// weightToAdd = newValue; -// -// } else if (newValue == null) { -// weightToAdd = -oldValue; -// -// } else { -// weightToAdd = newValue - oldValue; -// } -// -// WeightUnit weightUnit = model.getWeightUnit(); -// -// if (weightUnit.isNotNullNorZero(weightToAdd)) { -// if (weightUnit.isGreaterThanZero(weightToAdd)) { -// frequencyTableModel.addWeightToFrequencyRow(row, weightToAdd); -// } else { -// frequencyTableModel.removeWeightToFrequencyRow(row, -weightToAdd); -// } -// } -// } -// break; - case IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS: case IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS: + if (row.withSize()) { + CaracteristicMap oldValue = (CaracteristicMap) evt.getOldValue(); CaracteristicMap newValue = (CaracteristicMap) evt.getNewValue(); @@ -259,6 +200,7 @@ public class IndividualObservationBatchTableHandler implements Closeable { if (!Objects.equals(oldMaturity, newMaturity)) { individualObservationUICache.decrementsObservationNb(gender, oldMaturity, row.getSize()); individualObservationUICache.incrementsObservationNb(gender, newMaturity, row.getSize(), row.getSamplingCode()); + recomputeSamplingNotificationZone = true; } } @@ -267,8 +209,11 @@ public class IndividualObservationBatchTableHandler implements Closeable { if (!Objects.equals(oldGender, newGender)) { individualObservationUICache.decrementsObservationNb(oldGender, maturity, row.getSize()); individualObservationUICache.incrementsObservationNb(newGender, maturity, row.getSize(), row.getSamplingCode()); + recomputeSamplingNotificationZone = true; } + } + break; case IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE: @@ -288,39 +233,31 @@ public class IndividualObservationBatchTableHandler implements Closeable { if (row.withSize()) { - float size = row.getSize(); + boolean removeSampling = withOldSamplingCode && !withNewSamplingCode; + boolean addSampling = withNewSamplingCode && !withOldSamplingCode; + + if (removeSampling) { + + individualObservationUICache.decrementsSamplingNb(gender, maturity, row.getSize()); + recomputeSamplingNotificationZone = true; + + } else if (addSampling) { + + individualObservationUICache.incrementsSamplingNb(gender, maturity, row.getSize()); + recomputeSamplingNotificationZone = true; - if (withOldSamplingCode) { - individualObservationUICache.decrementsSamplingNb(gender, maturity, size); - } - if (withNewSamplingCode) { - individualObservationUICache.incrementsSamplingNb(gender, maturity, size); } } + break; -// case IndividualObservationBatchRowModel.PROPERTY_VALID: -// // if the row's valid state changes, then remove or readd it to the frequencies -// if (!model.isRowComputationInProgress()) { -// -// boolean oldValue = (boolean) evt.getOldValue(); -// boolean newValue = (boolean) evt.getNewValue(); -// -// if (oldValue && model.mustCopyIndividualObservationSize()) { -// -// frequencyTableModel.decrementFrequencyRowsNumbers(row); -// } -// if (newValue) { -// if (model.mustCopyIndividualObservationSize()) { -// frequencyTableModel.incrementFrequencyRowsNumbers(row); -// } -// if (model.isCopyIndividualObservationAll() && row.withWeight()) { -// frequencyTableModel.addWeightToFrequencyRow(row, row.getWeight()); -// } -// } -// } -// break; + } + + if (recomputeSamplingNotificationZone) { + + // recalcul de la zone de notification + model2.getSamplingNotificationZoneModel().setSelectedRow(row); } // model2.recomputeRowValidState(row); @@ -479,24 +416,6 @@ public class IndividualObservationBatchTableHandler implements Closeable { }); -// individualObservationTable.getSelectionModel().addListSelectionListener(e -> { -// -// if (!model.isInRafaleRowCreation()) { -// uiHandler.resetSamplingLabel(); -// } -// -// IndividualObservationBatchRowModel selectedRow = null; -// -// if (!individualObservationTable.getSelectionModel().isSelectionEmpty()) { -// if (individualObservationTable.getSelectedRowCount() == 1) { -// selectedRow = individualObservationTableModel.getEntry(individualObservationTable.getSelectedRow()); -// -// } -// } -// -// individualObservationUICache.updateSelectedRow(selectedRow); -// }); - model2.addPropertyChangeListener(IndividualObservationBatchUIModel.PROPERTY_ROWS, evt -> individualObservationTableModel.setRows((List<IndividualObservationBatchRowModel>) evt.getNewValue())); // Pour bloquer le changement du mode de recopie des observations individuelles → mensurations 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 d5f1d0c..7c7f4b6 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 @@ -54,6 +54,8 @@ public class IndividualObservationBatchUIModel extends AbstractTuttiTableUIModel */ private Collection<Caracteristic> notEditableCaracteristic; + private final SamplingNotificationZoneModel samplingNotificationZoneModel; + @Override protected SpeciesBatchRowModel newEntity() { return null; // Jamais utilisé! @@ -64,6 +66,11 @@ public class IndividualObservationBatchUIModel extends AbstractTuttiTableUIModel this.sexCaracteristic = sexCaracteristic; this.individualObservationWeightUnit = individualObservationWeightUnit; this.defaultCaracteristic = defaultCaracteristic == null ? new ArrayList<>() : new ArrayList<>(defaultCaracteristic); + this.samplingNotificationZoneModel = new SamplingNotificationZoneModel(); + } + + public SamplingNotificationZoneModel getSamplingNotificationZoneModel() { + return samplingNotificationZoneModel; } public WeightUnit getIndividualObservationWeightUnit() { 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 d400df7..5e9960f 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 @@ -481,7 +481,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci this.individualObservationBatchTableHandler = new IndividualObservationBatchTableHandler(ui); this.averageWeightsHistogramHandler = new AverageWeightsHistogramHandler(ui); this.frequenciesHistogramHandler = new FrequenciesHistogramHandler(ui); - this.samplingNotificationZoneHandler = new SamplingNotificationZoneHandler(ui); + this.samplingNotificationZoneHandler = new SamplingNotificationZoneHandler(ui, model.getIndividualObservationModel().getSamplingNotificationZoneModel()); listenValidatorValid(ui.getValidator(), model); @@ -510,9 +510,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci IOUtils.closeQuietly(individualObservationBatchTableHandler); IOUtils.closeQuietly(averageWeightsHistogramHandler); IOUtils.closeQuietly(frequenciesHistogramHandler); - IOUtils.closeQuietly(individualObservationBatchTableHandler); - -// resetSamplingLabel(); + IOUtils.closeQuietly(samplingNotificationZoneHandler); frequencyEditor = null; @@ -535,10 +533,9 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci EditSpeciesBatchPanelUI parent = getParentContainer(EditSpeciesBatchPanelUI.class); parent.switchToEditBatch(); + //FIXME Voir si on doit encore faire ça après le switch ? je pense que oui... // // on supprime la colonne maturité en fermant, pour avoir les même colonnes qu'à la création de l'écran (important pour la swing session) // removeMaturityColumnIfPresent(); -// -// individualObservationUICache.close(); } @@ -1083,8 +1080,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci boolean sampleCodeMenusEnabled = individualObservationBatchTableHandler.isSampleCodeMenusEnabled(modelRowIndex); -// boolean sampleCodeMenusEnabled = modelRowIndex >= 0 && ui.getObsTable().getSelectedRowCount() == 1 -// && getObsTableModel().getRows().get(ui.getObsTable().getSelectedRow()).withSamplingCode(); ui.getEditSampleCodeMenu().setEnabled(sampleCodeMenusEnabled); ui.getDeleteSampleCodeMenu().setEnabled(sampleCodeMenusEnabled); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm