branch feature/8203 updated (6d07c54 -> 9676b81)
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 from 6d07c54 Fix merge new 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 2f55a8d correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) new 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) new 36f362f correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) new 235af28 Merge branch 'feature/8203' of gitlab.nuiton.org:codelutin/tutti into feature/8203 new 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) new 8698a34 Merge branch 'feature/8203' of gitlab.nuiton.org:codelutin/tutti into feature/8203 new 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 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 9676b810ff91900c8bb0b0b8935005a6709103ab 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 8698a34dee0191df91dee1ff1f39dcccbde09c29 Merge: c1877c6 6d07c54 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 16:04:10 2016 +0200 Merge branch 'feature/8203' of gitlab.nuiton.org:codelutin/tutti into feature/8203 commit c1877c6f719bdbc7d1fd21517e1a62eb3fea1879 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 235af28cbf77544c5d5c39fb25514e88c607f9cd Merge: 2f55a8d 36f362f Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 14:12:03 2016 +0200 Merge branch 'feature/8203' of gitlab.nuiton.org:codelutin/tutti into feature/8203 commit 36f362fc8ae942d69b3f41a8218b1030c57ab0d1 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 7cec81f6cb60ab9807e50b5a7bf9d0c954600bf6 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 2f55a8d417fed58518ead68dcd7b6944e5f3299c 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 30f4e683857dde88ea0565823a61c5fb694fd7d8 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: .../species/frequency/IndividualObservationUICache.java | 6 ++++-- .../catches/species/frequency/SpeciesFrequencyUIHandler.java | 11 ++++++++--- .../frequency/actions/ApplySpeciesFrequencyRafaleAction.java | 3 +++ 3 files changed, 15 insertions(+), 5 deletions(-) -- 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 30f4e683857dde88ea0565823a61c5fb694fd7d8 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/SamplingEvent.java | 6 +- .../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 +- 7 files changed, 135 insertions(+), 49 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 dd03eb7..443cfff 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 @@ -650,6 +650,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) { @@ -697,7 +753,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/SamplingEvent.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/sampling/SamplingEvent.java index dc53227..bc4e570 100644 --- 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 @@ -37,7 +37,7 @@ import java.util.Optional; */ public class SamplingEvent extends EventObject { - protected final float lengthStep; + protected final int lengthStep; protected final CaracteristicQualitativeValue gender; @@ -53,7 +53,7 @@ public class SamplingEvent extends EventObject { protected final int nbSamplingForOperation; - public SamplingEvent(CruiseSamplingCache source, float lengthStep, CaracteristicQualitativeValue gender, Boolean maturity, + public SamplingEvent(CruiseSamplingCache source, int lengthStep, CaracteristicQualitativeValue gender, Boolean maturity, CalcifiedPiecesSamplingDefinition cpsDef, Optional<Zone> zone, int nbSamplingForCruise, int nbSamplingForZone, int nbSamplingForOperation) { super(source); this.lengthStep = lengthStep; @@ -66,7 +66,7 @@ public class SamplingEvent extends EventObject { this.nbSamplingForOperation = nbSamplingForOperation; } - public float getLengthStep() { + public int getLengthStep() { return lengthStep; } 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 f6a03ab..b319580 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) + ")"; - } }; } @@ -494,5 +454,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 d19ff4f..4ffb970 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 @@ -1409,6 +1409,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 3a279cf..1b4a00f 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 343d943..4c09b12 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 2f55a8d417fed58518ead68dcd7b6944e5f3299c 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 443cfff..41df6c5 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 @@ -674,7 +674,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; @@ -683,13 +683,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 bb4ff26..16f9043 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 @@ -101,6 +101,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 7cec81f6cb60ab9807e50b5a7bf9d0c954600bf6 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 0420d51..121b5f5 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 36f362fc8ae942d69b3f41a8218b1030c57ab0d1 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 121b5f5..8a8de13 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 9bd9b1a..611ba84 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 @@ -103,6 +103,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 235af28cbf77544c5d5c39fb25514e88c607f9cd Merge: 2f55a8d 36f362f Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 14:12:03 2016 +0200 Merge branch 'feature/8203' of gitlab.nuiton.org:codelutin/tutti into feature/8203 .../cps/CalcifiedPiecesSamplingExportService.java | 85 ++++++++++ .../service/export/cps/SamplingNumberRowModel.java | 65 ++++++++ .../tutti/service/sampling/CacheExtractedKey.java | 75 +++++++++ .../service/sampling/CruiseSamplingCache.java | 143 ++++++++-------- .../sampling/CruiseSamplingCacheLoader.java | 4 +- .../sampling/CruiseSamplingInternalCache.java | 62 ++++++- .../tutti/service/sampling/SamplingCodePrefix.java | 7 +- .../resources/i18n/tutti-service_en_GB.properties | 11 ++ .../resources/i18n/tutti-service_fr_FR.properties | 15 +- .../fr/ifremer/tutti/ui/swing/TuttiUIContext.java | 5 + .../ui/swing/content/home/SelectCruiseUI.jaxx | 1 + .../ui/swing/content/home/SelectCruiseUI.jcss | 10 +- .../CalcifiedPiecesSamplingReportAction.java | 117 ++++++++++++++ .../IndividualObservationBatchTableModel.java | 2 +- .../frequency/IndividualObservationUICache.java | 7 +- .../frequency/SpeciesFrequencyUIHandler.java | 179 +++++++++++---------- .../resources/i18n/tutti-ui-swing_en_GB.properties | 10 ++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 10 ++ 18 files changed, 638 insertions(+), 170 deletions(-) -- 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 c1877c6f719bdbc7d1fd21517e1a62eb3fea1879 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 8698a34dee0191df91dee1ff1f39dcccbde09c29 Merge: c1877c6 6d07c54 Author: Kevin Morin <morin@codelutin.com> Date: Wed Apr 6 16:04:10 2016 +0200 Merge branch 'feature/8203' of gitlab.nuiton.org:codelutin/tutti into feature/8203 .../service/export/cps/SamplingNumberRowModel.java | 1 + .../tutti/service/sampling/CacheExtractedKey.java | 10 ++++++ .../service/sampling/CruiseSamplingCache.java | 8 ++--- .../sampling/CruiseSamplingInternalCache.java | 42 ++++++++++++---------- .../resources/i18n/tutti-service_en_GB.properties | 1 + .../resources/i18n/tutti-service_fr_FR.properties | 1 + 6 files changed, 41 insertions(+), 22 deletions(-) -- 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 9676b810ff91900c8bb0b0b8935005a6709103ab 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>.
participants (1)
-
codelutin.com scm