branch feature/8203 updated (36f362f -> c1877c6)
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 36f362f correction (pas d'incrément, on récupère juste le nombre d'observations) (fixes #8203) 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 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) The 4 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 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 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: .../frequency/IndividualObservationUICache.java | 77 ++++++++++++---------- .../frequency/SpeciesFrequencyUIHandler.java | 11 ++-- .../species/frequency/SpeciesFrequencyUIModel.java | 13 ++++ .../actions/ApplySpeciesFrequencyRafaleAction.java | 8 ++- 4 files changed, 67 insertions(+), 42 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 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>.
participants (1)
-
codelutin.com scm