branch feature/8203 updated (c380fac -> 780e9e2)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git omits c380fac on n'affiche pas le bandeau de prélèvement si on ne peut pas afficher les notifs (fixes #8203) omits 64fa1d8 flag pour ne pas afficher les notifs quand on charge le lot ou qu'on reset (refs #8203) omits 9676b81 - on cache le message de prélèvement avant de créer une ligen en rafale - on cache le résumé quand aucune ligne n'est sélectionnée refs #8203 omits 8698a34 Merge branch 'feature/8203' of gitlab.nuiton.org:codelutin/tutti into feature/8203 omits 6d07c54 Fix merge omits fd89346 - flag pour ne pas effacer le message de prélèvement en cas d'ajout en rafale - on n'efface pas le résumé des prelevements quand on modifie les lignes (refs #8203) omits dc42850 correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) omits 5ca85a8 on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) omits b95dd89 correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) omits fb4c85c on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) omits c1877c6 - flag pour ne pas effacer le message de prélèvement en cas d'ajout en rafale - on n'efface pas le résumé des prelevements quand on modifie les lignes (refs #8203) omits 235af28 Merge branch 'feature/8203' of gitlab.nuiton.org:codelutin/tutti into feature/8203 omits 36f362f correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) omits 7cec81f on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) omits 2f55a8d correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) omits 30f4e68 on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) new 6c57296 on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) new c961117 correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) new 597b1e3 - flag pour ne pas effacer le message de prélèvement en cas d'ajout en rafale - on n'efface pas le résumé des prelevements quand on modifie les lignes (refs #8203) new 0e34ab5 on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) new ff5f44e correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) new 7a08a7e Fix merge new 985fc53 - on cache le message de prélèvement avant de créer une ligen en rafale - on cache le résumé quand aucune ligne n'est sélectionnée refs #8203 new de6697e flag pour ne pas afficher les notifs quand on charge le lot ou qu'on reset (refs #8203) new 780e9e2 on n'affiche pas le bandeau de prélèvement si on ne peut pas afficher les notifs (fixes #8203) This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (c380fac) \ N -- N -- N refs/heads/feature/8203 (780e9e2) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 9 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 780e9e2e49c743f4b6bce3a898ef0ad348fd65d2 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 17:15:21 2016 +0200 on n'affiche pas le bandeau de prélèvement si on ne peut pas afficher les notifs (fixes #8203) commit de6697eaa7701c54dfb016514d34dca6b38dd0c4 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 17:02:34 2016 +0200 flag pour ne pas afficher les notifs quand on charge le lot ou qu'on reset (refs #8203) commit 985fc5350de81a652c482336f898dcd68712df1f Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 16:20:47 2016 +0200 - on cache le message de prélèvement avant de créer une ligen en rafale - on cache le résumé quand aucune ligne n'est sélectionnée refs #8203 commit 7a08a7e46083e27862d3e2bcb35199d2be2c097b Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 6 16:03:52 2016 +0200 Fix merge commit ff5f44ec0c863f97d5bb33e253ce91da45fbbee3 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 11:41:01 2016 +0200 correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) commit 0e34ab5077b6d735a8dbce0e723c048a0fe91076 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 11:34:34 2016 +0200 on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) commit 597b1e343b5e52d6ac1b078124d525c81fc15eda Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 14:53:30 2016 +0200 - flag pour ne pas effacer le message de prélèvement en cas d'ajout en rafale - on n'efface pas le résumé des prelevements quand on modifie les lignes (refs #8203) commit c961117508d5ce9a7bb3d594e364a40883160d93 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 11:41:01 2016 +0200 correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) commit 6c57296507f3b6bfb09dc6c2cb17223d6f1a5528 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 11:34:34 2016 +0200 on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) Summary of changes: -- 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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 6c57296507f3b6bfb09dc6c2cb17223d6f1a5528 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 11:34:34 2016 +0200 on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) --- .../service/sampling/CruiseSamplingCache.java | 58 +++++++++++- .../tutti/service/sampling/SamplingListener.java | 2 +- .../frequency/IndividualObservationUICache.java | 103 ++++++++++++--------- .../frequency/SpeciesFrequencyUIHandler.java | 9 ++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 4 +- 6 files changed, 132 insertions(+), 46 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 6477871..7ba051a 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 @@ -647,6 +647,62 @@ public class CruiseSamplingCache implements Closeable { } + public Optional<SamplingEvent> getEventForSummary(FishingOperation fishingOperation, + Species species, Boolean maturity, + CaracteristicQualitativeValue gender, + int lengthStep) { + + Objects.requireNonNull(fishingOperation); + Objects.requireNonNull(species); + + Optional < CalcifiedPiecesSamplingDefinition > cpsDefinitionOpt = getCalcifiedPiecesSamplingDefinition(species, maturity, lengthStep); + + Optional<SamplingEvent> result; + if (cpsDefinitionOpt.isPresent()) { + + CalcifiedPiecesSamplingDefinition cpsDefinition = cpsDefinitionOpt.get(); + + if (log.isInfoEnabled()) { + log.info("Found matching sampling definition: " + cpsDefinition); + } + + if (!cpsDefinition.isSex()) { + gender = null; + } + String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); + + int totalValue = totalCruiseCache.incrementObservationNb(samplingKey); + int totalSamplingNb = totalCruiseCache.getSamplingNb(samplingKey); + + int zoneValue = 0; + int zoneSamplingNb = 0; + + Optional<Zone> optionalZone = tryFindZone(fishingOperation); + if (optionalZone.isPresent()) { + String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); + zoneValue = zoneCache.incrementObservationNb(zoneKey); + zoneSamplingNb = zoneCache.getSamplingNb(zoneKey); + } + + String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperation.getIdAsInt(), samplingKey); + + int operationValue = operationCache.incrementObservationNb(operationKey); + int operationSamplingNb = operationCache.getSamplingNb(operationKey); + + if (log.isInfoEnabled()) { + log.info("add Individual Observation " + samplingKey + " => op " + operationValue + " / zone " + zoneValue + " / cruise " + totalValue); + } + + SamplingEvent event = new SamplingEvent(this, lengthStep, gender, maturity, cpsDefinition, optionalZone, totalSamplingNb, zoneSamplingNb, operationSamplingNb); + result = Optional.of(event); + + } else { + result = Optional.empty(); + } + + return result; + } + public Optional<Zone> tryFindZone(FishingOperation operation) { Optional<Zone> result; if (operation.getSubStrata() != null) { @@ -694,7 +750,7 @@ public class CruiseSamplingCache implements Closeable { if (samplingListeners.length > 0) { for (SamplingListener listener : samplingListeners) { - listener.resumeUpdated(event); + listener.summaryUpdated(event); } } } 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 index 6aa37e4..f120f10 100644 --- 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 @@ -34,6 +34,6 @@ public interface SamplingListener extends EventListener { void samplingNeeded(SamplingEvent event); - void resumeUpdated(SamplingEvent event); + void summaryUpdated(SamplingEvent event); } 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 7358b26..218cb9e 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 @@ -162,50 +162,10 @@ public class IndividualObservationUICache implements Closeable { } @Override - public void resumeUpdated(SamplingEvent event) { - - CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); - if (log.isInfoEnabled()) { - log.info("samplingNeeded for " + cpsDef); - } - - int nbForOperation = event.getNbSamplingForOperation(); - int nbForZone = event.getNbSamplingForZone(); - int nbForCruise = event.getNbSamplingForCruise(); - - String nbForOperationLabel = getLabelForSamplingNumber(nbForOperation, cpsDef.getOperationLimitation()); - String nbForZoneLabel = getLabelForSamplingNumber(nbForZone, cpsDef.getZoneLimitation()); - String nbForCruiseLabel = getLabelForSamplingNumber(nbForCruise, cpsDef.getMaxByLenghtStep()); - - Decorator<Species> speciesDecorator = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE); - String key = speciesDecorator.toString(species) - + " " + Numbers.convertFromMm(event.getLengthStep(), uiModel.getLengthStepCaracteristicUnit()) - + " " + uiModel.getLengthStepCaracteristicUnit(); - if (event.getGender() != null) { - key += " " + event.getGender().getDescription(); - } - if (event.getMaturity() != null) { - if (event.getMaturity()) { - key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.mature"); - } else { - key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.immature"); - } - } - String resume; - if (event.getZone().isPresent()) { - Decorator<Zone> zoneDecorator = ui.getHandler().getDecorator(Zone.class, null); - String zone = zoneDecorator.toString(event.getZone().get()); - resume = t("tutti.editSpeciesFrequencies.samplingNeeded.resume", key, nbForOperationLabel, zone, nbForZoneLabel, nbForCruiseLabel); - } else { - resume = t("tutti.editSpeciesFrequencies.samplingNeeded.resume.noZone", key, nbForOperationLabel, nbForZoneLabel, nbForCruiseLabel); - } - ui.getSamplingResumeLabel().setText(resume); + public void summaryUpdated(SamplingEvent event) { + displaySummary(event); } - String getLabelForSamplingNumber(int value, Integer max) { - Decorator<Integer> valueDecorator = ui.getHandler().getDecorator(Integer.class, DecoratorService.NULL_INFINITE); - return valueDecorator.toString(value) + "(" + valueDecorator.toString(max) + ")"; - } }; } @@ -495,5 +455,64 @@ public class IndividualObservationUICache implements Closeable { } + public void updateSelectedRow(IndividualObservationBatchRowModel selectedRow) { + + if (samplingCache.isPresent() && selectedRow.withSize()) { + + Boolean maturity = samplingCache.get().getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), selectedRow.getMaturityState()); + int lengthstep = uiModel.getLengthStepInMm(selectedRow.getSize()); + + Optional<SamplingEvent> event = samplingCache.get().getEventForSummary(fishingOperation, species, maturity, selectedRow.getGender(sexCaracteristic), lengthstep); + + if (event.isPresent()) { + displaySummary(event.get()); + } + } + } + + protected void displaySummary(SamplingEvent event) { + + CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); + if (log.isInfoEnabled()) { + log.info("samplingNeeded for " + cpsDef); + } + + int nbForOperation = event.getNbSamplingForOperation(); + int nbForZone = event.getNbSamplingForZone(); + int nbForCruise = event.getNbSamplingForCruise(); + + String nbForOperationLabel = getLabelForSamplingNumber(nbForOperation, cpsDef.getOperationLimitation()); + String nbForZoneLabel = getLabelForSamplingNumber(nbForZone, cpsDef.getZoneLimitation()); + String nbForCruiseLabel = getLabelForSamplingNumber(nbForCruise, cpsDef.getMaxByLenghtStep()); + + Decorator<Species> speciesDecorator = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE); + String key = speciesDecorator.toString(species) + + " " + Numbers.convertFromMm(event.getLengthStep(), uiModel.getLengthStepCaracteristicUnit()) + + " " + uiModel.getLengthStepCaracteristicUnit(); + if (event.getGender() != null) { + key += " " + event.getGender().getDescription(); + } + if (event.getMaturity() != null) { + if (event.getMaturity()) { + key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.mature"); + } else { + key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.immature"); + } + } + String summary; + if (event.getZone().isPresent()) { + Decorator<Zone> zoneDecorator = ui.getHandler().getDecorator(Zone.class, null); + String zone = zoneDecorator.toString(event.getZone().get()); + summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary", key, nbForOperationLabel, zone, nbForZoneLabel, nbForCruiseLabel); + } else { + summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary.noZone", key, nbForOperationLabel, nbForZoneLabel, nbForCruiseLabel); + } + ui.getSamplingResumeLabel().setText(summary); + } + + protected String getLabelForSamplingNumber(int value, Integer max) { + Decorator<Integer> valueDecorator = ui.getHandler().getDecorator(Integer.class, DecoratorService.NULL_INFINITE); + return "<strong>" + valueDecorator.toString(value) + "</strong> (" + valueDecorator.toString(max) + ")"; + } } 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 b0ef3e4..d34f561 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 @@ -1416,6 +1416,15 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci getModel().recomputeCanEditLengthStep(); }); + + obsTable.getSelectionModel().addListSelectionListener(e -> { + + resetSamplingLabels(); + if (obsTable.getSelectedRowCount() == 1) { + IndividualObservationBatchRowModel selectedRow = getObsTableModel().getRows().get(obsTable.getSelectedRow()); + individualObservationUICache.updateSelectedRow(selectedRow); + } + }); } protected void resetSamplingLabels() { diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 3d5e6fe..f7e654d 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -1648,6 +1648,8 @@ tutti.editSpeciesFrequencies.samplingNeeded.mature= tutti.editSpeciesFrequencies.samplingNeeded.max= tutti.editSpeciesFrequencies.samplingNeeded.resume= tutti.editSpeciesFrequencies.samplingNeeded.resume.noZone= +tutti.editSpeciesFrequencies.samplingNeeded.summary= +tutti.editSpeciesFrequencies.samplingNeeded.summary.noZone= tutti.editSpeciesFrequencies.samplingNeeded.warning= tutti.editSpeciesFrequencies.simpleCountingAndFrequencies= tutti.editSpeciesFrequencies.table.header.lengthStep= 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 56171e9..a99f983 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 @@ -1532,8 +1532,8 @@ tutti.editSpeciesFrequencies.logTable.removeRow.confirm.title=Suppression d'une tutti.editSpeciesFrequencies.samplingNeeded.immature=Immature tutti.editSpeciesFrequencies.samplingNeeded.mature=Mature tutti.editSpeciesFrequencies.samplingNeeded.max=max -tutti.editSpeciesFrequencies.samplingNeeded.resume=<html><body><strong>%s</strong> \: Trait \: %s | %s \: %s | Campagne \: %s -tutti.editSpeciesFrequencies.samplingNeeded.resume.noZone=<html><body><strong>%s</strong> \: Trait \: %s | (pas dans une zone) | Campagne \: %s +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=<html><body><strong>Prélevez les pièces calcifiées \!</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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit c961117508d5ce9a7bb3d594e364a40883160d93 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 11:41:01 2016 +0200 correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) --- .../fr/ifremer/tutti/service/sampling/CruiseSamplingCache.java | 6 +++--- .../tutti/service/sampling/CruiseSamplingInternalCache.java | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 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 7ba051a..4d9f32c 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 @@ -671,7 +671,7 @@ public class CruiseSamplingCache implements Closeable { } String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); - int totalValue = totalCruiseCache.incrementObservationNb(samplingKey); + int totalValue = totalCruiseCache.getObservationNb(samplingKey); int totalSamplingNb = totalCruiseCache.getSamplingNb(samplingKey); int zoneValue = 0; @@ -680,13 +680,13 @@ public class CruiseSamplingCache implements Closeable { Optional<Zone> optionalZone = tryFindZone(fishingOperation); if (optionalZone.isPresent()) { String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); - zoneValue = zoneCache.incrementObservationNb(zoneKey); + zoneValue = zoneCache.getObservationNb(zoneKey); zoneSamplingNb = zoneCache.getSamplingNb(zoneKey); } String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperation.getIdAsInt(), samplingKey); - int operationValue = operationCache.incrementObservationNb(operationKey); + int operationValue = operationCache.getObservationNb(operationKey); int operationSamplingNb = operationCache.getSamplingNb(operationKey); if (log.isInfoEnabled()) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingInternalCache.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingInternalCache.java index a5d87be..5351f78 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingInternalCache.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/CruiseSamplingInternalCache.java @@ -102,6 +102,16 @@ class CruiseSamplingInternalCache implements Closeable { return result; } + public int getObservationNb(String samplingKey) { + Objects.requireNonNull(samplingKey); + SamplingData value = data.get(samplingKey); + int observationNb = value.getObservationNb(); + if (log.isDebugEnabled()) { + log.debug(samplingKey + " → " + observationNb); + } + return observationNb; + } + public int incrementSamplingNb(String samplingKey) { Objects.requireNonNull(samplingKey); SamplingData value = data.computeIfAbsent(samplingKey, s -> new SamplingData()); -- 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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 597b1e343b5e52d6ac1b078124d525c81fc15eda Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 14:53:30 2016 +0200 - flag pour ne pas effacer le message de prélèvement en cas d'ajout en rafale - on n'efface pas le résumé des prelevements quand on modifie les lignes (refs #8203) --- .../frequency/IndividualObservationUICache.java | 77 ++++++++++++---------- .../frequency/SpeciesFrequencyUIHandler.java | 11 ++-- .../species/frequency/SpeciesFrequencyUIModel.java | 13 ++++ .../actions/ApplySpeciesFrequencyRafaleAction.java | 8 ++- 4 files changed, 67 insertions(+), 42 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 218cb9e..06b07c0 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 @@ -163,7 +163,7 @@ public class IndividualObservationUICache implements Closeable { @Override public void summaryUpdated(SamplingEvent event) { - displaySummary(event); + displaySummary(Optional.of(event)); } }; @@ -457,56 +457,63 @@ public class IndividualObservationUICache implements Closeable { public void updateSelectedRow(IndividualObservationBatchRowModel selectedRow) { + Optional<SamplingEvent> event; if (samplingCache.isPresent() && selectedRow.withSize()) { Boolean maturity = samplingCache.get().getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), selectedRow.getMaturityState()); int lengthstep = uiModel.getLengthStepInMm(selectedRow.getSize()); - Optional<SamplingEvent> event = samplingCache.get().getEventForSummary(fishingOperation, species, maturity, selectedRow.getGender(sexCaracteristic), lengthstep); + event = samplingCache.get().getEventForSummary(fishingOperation, species, maturity, selectedRow.getGender(sexCaracteristic), lengthstep); - if (event.isPresent()) { - displaySummary(event.get()); - } + } else { + event = Optional.empty(); } + displaySummary(event); } - protected void displaySummary(SamplingEvent event) { + protected void displaySummary(Optional<SamplingEvent> optEvent) { - CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); - if (log.isInfoEnabled()) { - log.info("samplingNeeded for " + cpsDef); - } + String summary = null; - int nbForOperation = event.getNbSamplingForOperation(); - int nbForZone = event.getNbSamplingForZone(); - int nbForCruise = event.getNbSamplingForCruise(); + if (optEvent.isPresent()) { + SamplingEvent event = optEvent.get(); - String nbForOperationLabel = getLabelForSamplingNumber(nbForOperation, cpsDef.getOperationLimitation()); - String nbForZoneLabel = getLabelForSamplingNumber(nbForZone, cpsDef.getZoneLimitation()); - String nbForCruiseLabel = getLabelForSamplingNumber(nbForCruise, cpsDef.getMaxByLenghtStep()); + CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); + if (log.isInfoEnabled()) { + log.info("samplingNeeded for " + cpsDef); + } - Decorator<Species> speciesDecorator = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE); - String key = speciesDecorator.toString(species) - + " " + Numbers.convertFromMm(event.getLengthStep(), uiModel.getLengthStepCaracteristicUnit()) - + " " + uiModel.getLengthStepCaracteristicUnit(); - if (event.getGender() != null) { - key += " " + event.getGender().getDescription(); - } - if (event.getMaturity() != null) { - if (event.getMaturity()) { - key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.mature"); + int nbForOperation = event.getNbSamplingForOperation(); + int nbForZone = event.getNbSamplingForZone(); + int nbForCruise = event.getNbSamplingForCruise(); + + String nbForOperationLabel = getLabelForSamplingNumber(nbForOperation, cpsDef.getOperationLimitation()); + String nbForZoneLabel = getLabelForSamplingNumber(nbForZone, cpsDef.getZoneLimitation()); + String nbForCruiseLabel = getLabelForSamplingNumber(nbForCruise, cpsDef.getMaxByLenghtStep()); + + Decorator<Species> speciesDecorator = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE); + String key = speciesDecorator.toString(species) + + " " + Numbers.convertFromMm(event.getLengthStep(), uiModel.getLengthStepCaracteristicUnit()) + + " " + uiModel.getLengthStepCaracteristicUnit(); + if (event.getGender() != null) { + key += " " + event.getGender().getDescription(); + } + if (event.getMaturity() != null) { + if (event.getMaturity()) { + key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.mature"); + } else { + key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.immature"); + } + } + if (event.getZone().isPresent()) { + Decorator<Zone> zoneDecorator = ui.getHandler().getDecorator(Zone.class, null); + String zone = zoneDecorator.toString(event.getZone().get()); + summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary", key, nbForOperationLabel, zone, nbForZoneLabel, nbForCruiseLabel); } else { - key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.immature"); + summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary.noZone", key, nbForOperationLabel, nbForZoneLabel, nbForCruiseLabel); } } - String summary; - if (event.getZone().isPresent()) { - Decorator<Zone> zoneDecorator = ui.getHandler().getDecorator(Zone.class, null); - String zone = zoneDecorator.toString(event.getZone().get()); - summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary", key, nbForOperationLabel, zone, nbForZoneLabel, nbForCruiseLabel); - } else { - summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary.noZone", key, nbForOperationLabel, nbForZoneLabel, nbForCruiseLabel); - } + ui.getSamplingResumeLabel().setText(summary); } 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 d34f561..f382c47 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -217,8 +217,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci @Override public void propertyChange(PropertyChangeEvent evt) { - resetSamplingLabels(); - IndividualObservationBatchRowModel row = (IndividualObservationBatchRowModel) evt.getSource(); String propertyName = evt.getPropertyName(); @@ -819,7 +817,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci frequenciesHistogramPopup.dispose(); averageWeightsHistogramPopup.dispose(); - resetSamplingLabels(); + resetSamplingLabel(); frequencyEditor = null; @@ -1419,7 +1417,9 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci obsTable.getSelectionModel().addListSelectionListener(e -> { - resetSamplingLabels(); + if (!getModel().isInRafaleRowCreation()) { + resetSamplingLabel(); + } if (obsTable.getSelectedRowCount() == 1) { IndividualObservationBatchRowModel selectedRow = getObsTableModel().getRows().get(obsTable.getSelectedRow()); individualObservationUICache.updateSelectedRow(selectedRow); @@ -1427,12 +1427,11 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci }); } - protected void resetSamplingLabels() { + protected void resetSamplingLabel() { if (log.isDebugEnabled()) { log.debug("reset smapling panel"); } ui.getSamplingWarningLabel().setVisible(false); - ui.getSamplingResumeLabel().setText(null); } public void setMaturityCaracteristic(Optional<Caracteristic> maturityCaracteristic) { 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 d6d7bf5..21879e8 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 @@ -308,6 +308,11 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa protected boolean initBatchEdition; /** + * A row is being created in rafale. Do not remove the sampling warning in this state. + */ + protected boolean inRafaleRowCreation; + + /** * Caracteristiques non éditables, car caractéristiques de catégorisation du lot (sexe, maturité, etc) * * @since 4.5 @@ -1015,6 +1020,14 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa this.rowComputationInProgress = rowComputationInProgress; } + public boolean isInRafaleRowCreation() { + return inRafaleRowCreation; + } + + public void setInRafaleRowCreation(boolean inRafaleRowCreation) { + this.inRafaleRowCreation = inRafaleRowCreation; + } + public Collection<Caracteristic> getNotEditableCaracteristic() { return notEditableCaracteristic; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java index d1be369..7d86e40 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java @@ -76,6 +76,8 @@ public class ApplySpeciesFrequencyRafaleAction { SpeciesFrequencyUIHandler handler = ui.getHandler(); float aroundLengthStep = model.getLengthStep(step); + model.setInRafaleRowCreation(true); + if (model.isCopyIndividualObservationNothing()) { SpeciesFrequencyTableModel tableModel = handler.getTableModel(); @@ -141,7 +143,10 @@ public class ApplySpeciesFrequencyRafaleAction { newLogRow.setObsRow(obsRow); int rowIndex = obsTableModel.getRowIndex(obsRow); - SwingUtilities.invokeLater(() -> selectRow(ui.getObsTable(), rowIndex)); + SwingUtilities.invokeLater(() -> { + selectRow(ui.getObsTable(), rowIndex); + model.setInRafaleRowCreation(false); + }); } @@ -157,6 +162,7 @@ public class ApplySpeciesFrequencyRafaleAction { } protected void selectRow(JXTable table, int rowIndex) { + table.setRowSelectionInterval(rowIndex, rowIndex); table.scrollRowToVisible(rowIndex); } -- 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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 0e34ab5077b6d735a8dbce0e723c048a0fe91076 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 11:34:34 2016 +0200 on demande au cache le résumé de prélèvement pour la ligne sélectionnée (s'il n'y a qu'une ligne sélectionnée) (fixes #8203) --- .../fr/ifremer/tutti/service/sampling/CruiseSamplingCache.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 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 4d9f32c..b9a37f3 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 @@ -101,7 +101,7 @@ public class CruiseSamplingCache implements Closeable { /** * L'identifiant de la campagne associée à ce cache. */ - private final int cruiseId; + private final Integer cruiseId; /** * L'identificant du protocol associé à ce cache. */ @@ -671,7 +671,7 @@ public class CruiseSamplingCache implements Closeable { } String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); - int totalValue = totalCruiseCache.getObservationNb(samplingKey); + int totalValue = totalCruiseCache.incrementObservationNb(samplingKey); int totalSamplingNb = totalCruiseCache.getSamplingNb(samplingKey); int zoneValue = 0; @@ -680,13 +680,13 @@ public class CruiseSamplingCache implements Closeable { Optional<Zone> optionalZone = tryFindZone(fishingOperation); if (optionalZone.isPresent()) { String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); - zoneValue = zoneCache.getObservationNb(zoneKey); + zoneValue = zoneCache.incrementObservationNb(zoneKey); zoneSamplingNb = zoneCache.getSamplingNb(zoneKey); } String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperation.getIdAsInt(), samplingKey); - int operationValue = operationCache.getObservationNb(operationKey); + int operationValue = operationCache.incrementObservationNb(operationKey); int operationSamplingNb = operationCache.getSamplingNb(operationKey); if (log.isInfoEnabled()) { @@ -750,7 +750,7 @@ public class CruiseSamplingCache implements Closeable { if (samplingListeners.length > 0) { for (SamplingListener listener : samplingListeners) { - listener.summaryUpdated(event); + listener.resumeUpdated(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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit ff5f44ec0c863f97d5bb33e253ce91da45fbbee3 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 11:41:01 2016 +0200 correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) --- .../java/fr/ifremer/tutti/service/sampling/CruiseSamplingCache.java | 6 +++--- 1 file changed, 3 insertions(+), 3 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 b9a37f3..132a019 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 @@ -671,7 +671,7 @@ public class CruiseSamplingCache implements Closeable { } String samplingKey = CruiseSamplingInternalCache.createSamplingKey(species, gender, maturity, lengthStep); - int totalValue = totalCruiseCache.incrementObservationNb(samplingKey); + int totalValue = totalCruiseCache.getObservationNb(samplingKey); int totalSamplingNb = totalCruiseCache.getSamplingNb(samplingKey); int zoneValue = 0; @@ -680,13 +680,13 @@ public class CruiseSamplingCache implements Closeable { Optional<Zone> optionalZone = tryFindZone(fishingOperation); if (optionalZone.isPresent()) { String zoneKey = CruiseSamplingInternalCache.addPrefixKey(optionalZone.get().getId(), samplingKey); - zoneValue = zoneCache.incrementObservationNb(zoneKey); + zoneValue = zoneCache.getObservationNb(zoneKey); zoneSamplingNb = zoneCache.getSamplingNb(zoneKey); } String operationKey = CruiseSamplingInternalCache.addPrefixKey(fishingOperation.getIdAsInt(), samplingKey); - int operationValue = operationCache.incrementObservationNb(operationKey); + int operationValue = operationCache.getObservationNb(operationKey); int operationSamplingNb = operationCache.getSamplingNb(operationKey); if (log.isInfoEnabled()) { -- 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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 7a08a7e46083e27862d3e2bcb35199d2be2c097b Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 6 16:03:52 2016 +0200 Fix merge --- .../fr/ifremer/tutti/service/sampling/CruiseSamplingCache.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 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 132a019..e1d5c86 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 @@ -317,7 +317,7 @@ public class CruiseSamplingCache implements Closeable { fireSamplingNeeded(event); } - fireResumeUpdated(event); + fireSummaryUpdated(event); } } @@ -394,7 +394,7 @@ public class CruiseSamplingCache implements Closeable { if (cpsDefinitionOpt.isPresent()) { SamplingEvent event = new SamplingEvent(this, lengthStep, gender, maturity, cpsDefinitionOpt.get(), optionalZone, totalSamplingNb, zoneSamplingNb, operationSamplingNb); - fireResumeUpdated(event); + fireSummaryUpdated(event); } addSamplingCode(species.getReferenceTaxonId(), samplingCode); @@ -595,7 +595,7 @@ public class CruiseSamplingCache implements Closeable { if (cpsDefinitionOpt.isPresent()) { SamplingEvent event = new SamplingEvent(this, lengthStep, gender, maturity, cpsDefinitionOpt.get(), optionalZone, totalSamplingNb, zoneSamplingNb, operationSamplingNb); - fireResumeUpdated(event); + fireSummaryUpdated(event); } removeSamplingCode(species.getReferenceTaxonId(), samplingCode); @@ -744,13 +744,13 @@ public class CruiseSamplingCache implements Closeable { } } - protected void fireResumeUpdated(SamplingEvent event) { + protected void fireSummaryUpdated(SamplingEvent event) { SamplingListener[] samplingListeners = listeners.getListeners(SamplingListener.class); if (samplingListeners.length > 0) { for (SamplingListener listener : samplingListeners) { - listener.resumeUpdated(event); + listener.summaryUpdated(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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 985fc5350de81a652c482336f898dcd68712df1f Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 16:20:47 2016 +0200 - on cache le message de prélèvement avant de créer une ligen en rafale - on cache le résumé quand aucune ligne n'est sélectionnée refs #8203 --- .../species/frequency/IndividualObservationUICache.java | 6 ++++-- .../catches/species/frequency/SpeciesFrequencyUIHandler.java | 11 ++++++++--- .../frequency/actions/ApplySpeciesFrequencyRafaleAction.java | 3 +++ 3 files changed, 15 insertions(+), 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 06b07c0..0dddb40 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 @@ -455,10 +455,12 @@ public class IndividualObservationUICache implements Closeable { } - public void updateSelectedRow(IndividualObservationBatchRowModel selectedRow) { + public void updateSelectedRow(Optional<IndividualObservationBatchRowModel> optSelectedRow) { Optional<SamplingEvent> event; - if (samplingCache.isPresent() && selectedRow.withSize()) { + if (samplingCache.isPresent() && optSelectedRow.isPresent() && optSelectedRow.get().withSize()) { + + IndividualObservationBatchRowModel selectedRow = optSelectedRow.get(); Boolean maturity = samplingCache.get().getMaturity(uiModel.getBatch().getSpecies().getReferenceTaxonId(), selectedRow.getMaturityState()); int lengthstep = uiModel.getLengthStepInMm(selectedRow.getSize()); 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 f382c47..9437e3b 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 @@ -1420,14 +1420,19 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci if (!getModel().isInRafaleRowCreation()) { resetSamplingLabel(); } + + Optional<IndividualObservationBatchRowModel> selectedRow; if (obsTable.getSelectedRowCount() == 1) { - IndividualObservationBatchRowModel selectedRow = getObsTableModel().getRows().get(obsTable.getSelectedRow()); - individualObservationUICache.updateSelectedRow(selectedRow); + selectedRow = Optional.of(getObsTableModel().getRows().get(obsTable.getSelectedRow())); + + } else { + selectedRow = Optional.empty(); } + individualObservationUICache.updateSelectedRow(selectedRow); }); } - protected void resetSamplingLabel() { + public void resetSamplingLabel() { if (log.isDebugEnabled()) { log.debug("reset smapling panel"); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java index 7d86e40..299af42 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java @@ -74,6 +74,9 @@ public class ApplySpeciesFrequencyRafaleAction { SpeciesFrequencyUIModel model = ui.getModel(); SpeciesFrequencyUIHandler handler = ui.getHandler(); + + handler.resetSamplingLabel(); + float aroundLengthStep = model.getLengthStep(step); model.setInRafaleRowCreation(true); -- 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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit de6697eaa7701c54dfb016514d34dca6b38dd0c4 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 17:02:34 2016 +0200 flag pour ne pas afficher les notifs quand on charge le lot ou qu'on reset (refs #8203) --- .../frequency/IndividualObservationUICache.java | 70 ++++++++++++---------- .../frequency/SpeciesFrequencyUIHandler.java | 9 ++- .../species/frequency/SpeciesFrequencyUIModel.java | 17 ++++++ .../actions/CancelEditSpeciesFrequencyAction.java | 2 + .../actions/ResetSpeciesFrequencyAction.java | 4 ++ 5 files changed, 69 insertions(+), 33 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 0dddb40..8c2853e 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 @@ -475,48 +475,54 @@ public class IndividualObservationUICache implements Closeable { protected void displaySummary(Optional<SamplingEvent> optEvent) { - String summary = null; + if (isInit()) { + String summary = null; - if (optEvent.isPresent()) { - SamplingEvent event = optEvent.get(); + if (optEvent.isPresent() && uiModel.isCanDisplayNotifications()) { + SamplingEvent event = optEvent.get(); - CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); - if (log.isInfoEnabled()) { - log.info("samplingNeeded for " + cpsDef); - } + CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); + if (log.isInfoEnabled()) { + log.info("samplingNeeded for " + cpsDef); + } - int nbForOperation = event.getNbSamplingForOperation(); - int nbForZone = event.getNbSamplingForZone(); - int nbForCruise = event.getNbSamplingForCruise(); + int nbForOperation = event.getNbSamplingForOperation(); + int nbForZone = event.getNbSamplingForZone(); + int nbForCruise = event.getNbSamplingForCruise(); - String nbForOperationLabel = getLabelForSamplingNumber(nbForOperation, cpsDef.getOperationLimitation()); - String nbForZoneLabel = getLabelForSamplingNumber(nbForZone, cpsDef.getZoneLimitation()); - String nbForCruiseLabel = getLabelForSamplingNumber(nbForCruise, cpsDef.getMaxByLenghtStep()); + String nbForOperationLabel = getLabelForSamplingNumber(nbForOperation, cpsDef.getOperationLimitation()); + String nbForZoneLabel = getLabelForSamplingNumber(nbForZone, cpsDef.getZoneLimitation()); + String nbForCruiseLabel = getLabelForSamplingNumber(nbForCruise, cpsDef.getMaxByLenghtStep()); - Decorator<Species> speciesDecorator = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE); - String key = speciesDecorator.toString(species) - + " " + Numbers.convertFromMm(event.getLengthStep(), uiModel.getLengthStepCaracteristicUnit()) - + " " + uiModel.getLengthStepCaracteristicUnit(); - if (event.getGender() != null) { - key += " " + event.getGender().getDescription(); - } - if (event.getMaturity() != null) { - if (event.getMaturity()) { - key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.mature"); + Decorator<Species> speciesDecorator = ui.getHandler().getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE); + String key = speciesDecorator.toString(species) + + " " + Numbers.convertFromMm(event.getLengthStep(), uiModel.getLengthStepCaracteristicUnit()) + + " " + uiModel.getLengthStepCaracteristicUnit(); + if (event.getGender() != null) { + key += " " + event.getGender().getDescription(); + } + if (event.getMaturity() != null) { + if (event.getMaturity()) { + key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.mature"); + } else { + key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.immature"); + } + } + if (event.getZone().isPresent()) { + Decorator<Zone> zoneDecorator = ui.getHandler().getDecorator(Zone.class, null); + String zone = zoneDecorator.toString(event.getZone().get()); + summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary", key, nbForOperationLabel, zone, nbForZoneLabel, nbForCruiseLabel); } else { - key += " " + t("tutti.editSpeciesFrequencies.samplingNeeded.immature"); + summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary.noZone", key, nbForOperationLabel, nbForZoneLabel, nbForCruiseLabel); } } - if (event.getZone().isPresent()) { - Decorator<Zone> zoneDecorator = ui.getHandler().getDecorator(Zone.class, null); - String zone = zoneDecorator.toString(event.getZone().get()); - summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary", key, nbForOperationLabel, zone, nbForZoneLabel, nbForCruiseLabel); - } else { - summary = t("tutti.editSpeciesFrequencies.samplingNeeded.summary.noZone", key, nbForOperationLabel, nbForZoneLabel, nbForCruiseLabel); - } + + ui.getSamplingResumeLabel().setText(summary); } + } - ui.getSamplingResumeLabel().setText(summary); + private boolean isInit() { + return ui != null; } protected String getLabelForSamplingNumber(int value, Integer max) { 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 9437e3b..0ad49d2 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 @@ -815,6 +815,10 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci log.debug("closing: " + ui); } + SpeciesFrequencyUIModel model = getModel(); + + model.setCanDisplayNotifications(false); + frequenciesHistogramPopup.dispose(); averageWeightsHistogramPopup.dispose(); resetSamplingLabel(); @@ -824,7 +828,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci // evict model from validator ui.getValidator().setBean(null); - SpeciesFrequencyUIModel model = getModel(); // when canceling always invalid model (in that way) model.setValid(false); model.setSimpleCount(null); @@ -875,6 +878,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci model.setInitBatchEdition(true); + model.setCanDisplayNotifications(false); try { // keep batch (will be used to push back editing entry) @@ -945,6 +949,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } finally { model.setInitBatchEdition(false); + model.setCanDisplayNotifications(true); //FIXME Voir si c'est nécessaire ? model.setModify(false); } @@ -1773,6 +1778,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci SpeciesBatchRowModel speciesBatch = model.getBatch(); model.setInitBatchEdition(true); + model.setCanDisplayNotifications(false); try { @@ -1978,6 +1984,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } finally { model.setInitBatchEdition(false); + model.setCanDisplayNotifications(true); } } } 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 21879e8..2b94081 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 @@ -123,6 +123,8 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa public static final String PROPERTY_INIT_BATCH_EDITION = "initBatchEdition"; + public static final String PROPERTY_CAN_DISPLAY_NOTIFICATIONS = "canDisplayNotifications"; + public static final String PROPERTY_NOT_EDITABLE_CARACTERISTIC = "notEditableCaracteristic"; private final SpeciesOrBenthosBatchUISupport speciesOrBenthosBatchUISupport; @@ -308,6 +310,11 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa protected boolean initBatchEdition; /** + * Can smapling notifications or summary be displayed? + */ + protected boolean canDisplayNotifications; + + /** * A row is being created in rafale. Do not remove the sampling warning in this state. */ protected boolean inRafaleRowCreation; @@ -1020,6 +1027,16 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa this.rowComputationInProgress = rowComputationInProgress; } + public boolean isCanDisplayNotifications() { + return canDisplayNotifications; + } + + public void setCanDisplayNotifications(boolean canDisplayNotifications) { + Object oldValue = isCanDisplayNotifications(); + this.canDisplayNotifications = canDisplayNotifications; + firePropertyChange(PROPERTY_CAN_DISPLAY_NOTIFICATIONS, oldValue, canDisplayNotifications); + } + public boolean isInRafaleRowCreation() { return inRafaleRowCreation; } 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 54005b2..4708ec5 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 @@ -68,6 +68,8 @@ public class CancelEditSpeciesFrequencyAction extends LongActionSupport<SpeciesF log.debug("Cancel UI " + getUI()); } + getModel().setCanDisplayNotifications(false); + IndividualObservationUICache individualObservationUICache = handler.getIndividualObservationUICache(); individualObservationUICache.reset(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ResetSpeciesFrequencyAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ResetSpeciesFrequencyAction.java index c3643f2..c230ea2 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ResetSpeciesFrequencyAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ResetSpeciesFrequencyAction.java @@ -91,6 +91,8 @@ public class ResetSpeciesFrequencyAction extends LongActionSupport<SpeciesFreque SpeciesFrequencyUIModel model = getModel(); + model.setCanDisplayNotifications(false); + // remove all frequencies model.setRows(new ArrayList<>()); @@ -100,6 +102,8 @@ public class ResetSpeciesFrequencyAction extends LongActionSupport<SpeciesFreque individualObservationUICache.decrementsAll(); model.setIndividualObservationRows(new ArrayList<>()); + model.setCanDisplayNotifications(true); + } } \ No newline at end of file -- 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/8203 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 780e9e2e49c743f4b6bce3a898ef0ad348fd65d2 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 17:15:21 2016 +0200 on n'affiche pas le bandeau de prélèvement si on ne peut pas afficher les notifs (fixes #8203) --- .../frequency/IndividualObservationUICache.java | 36 ++++++++++++---------- 1 file changed, 19 insertions(+), 17 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 8c2853e..2c3942a 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 @@ -137,28 +137,30 @@ public class IndividualObservationUICache implements Closeable { @Override public void samplingNeeded(SamplingEvent event) { - CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); - if (log.isInfoEnabled()) { - log.info("samplingNeeded for " + cpsDef); - } + if (uiModel.isCanDisplayNotifications()) { + CalcifiedPiecesSamplingDefinition cpsDef = event.getCpsDef(); + if (log.isInfoEnabled()) { + log.info("samplingNeeded for " + cpsDef); + } - int nbForOperation = event.getNbSamplingForOperation(); - int nbForZone = event.getNbSamplingForZone(); - int nbForCruise = event.getNbSamplingForCruise(); + int nbForOperation = event.getNbSamplingForOperation(); + int nbForZone = event.getNbSamplingForZone(); + int nbForCruise = event.getNbSamplingForCruise(); - if (log.isInfoEnabled()) { + if (log.isInfoEnabled()) { - Integer operationLimitation = cpsDef.getOperationLimitation(); - Integer zoneLimitation = cpsDef.getZoneLimitation(); - Integer maxByLenghtStep = cpsDef.getMaxByLenghtStep(); + Integer operationLimitation = cpsDef.getOperationLimitation(); + Integer zoneLimitation = cpsDef.getZoneLimitation(); + Integer maxByLenghtStep = cpsDef.getMaxByLenghtStep(); - log.info(String.format("nbForOperation: %d/%s - nbForZone: %d/%s - nbForCruise: %d/%s", - nbForOperation, operationLimitation == null ? "∞" : operationLimitation, - nbForZone, zoneLimitation == null ? "∞" : zoneLimitation, - nbForCruise, maxByLenghtStep == null ? "∞" : maxByLenghtStep)); - } + log.info(String.format("nbForOperation: %d/%s - nbForZone: %d/%s - nbForCruise: %d/%s", + nbForOperation, operationLimitation == null ? "∞" : operationLimitation, + nbForZone, zoneLimitation == null ? "∞" : zoneLimitation, + nbForCruise, maxByLenghtStep == null ? "∞" : maxByLenghtStep)); + } - ui.getSamplingWarningLabel().setVisible(true); + ui.getSamplingWarningLabel().setVisible(true); + } } @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm