branch feature/8113-v2 created (now 68c21b7)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8113-v2 in repository tutti. See http://git.codelutin.com/tutti.git at 68c21b7 le modele n'est valide que si les poids sont tous saisis en mode de recopie "tout" (fixes #8113) This branch includes the following new commits: new 68c21b7 le modele n'est valide que si les poids sont tous saisis en mode de recopie "tout" (fixes #8113) The 1 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 68c21b763088199c9f9c89dcd2a6d8aa8c4ced10 Author: Kevin Morin <morin@codelutin.com> Date: Mon Mar 14 18:23:08 2016 +0100 le modele n'est valide que si les poids sont tous saisis en mode de recopie "tout" (fixes #8113) -- 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/8113-v2 in repository tutti. See http://git.codelutin.com/tutti.git commit 68c21b763088199c9f9c89dcd2a6d8aa8c4ced10 Author: Kevin Morin <morin@codelutin.com> Date: Mon Mar 14 18:23:08 2016 +0100 le modele n'est valide que si les poids sont tous saisis en mode de recopie "tout" (fixes #8113) --- .../species/frequency/SpeciesFrequencyUI.jaxx | 1 + .../frequency/SpeciesFrequencyUIHandler.java | 13 ------------- .../species/frequency/SpeciesFrequencyUIModel.java | 21 +++++++++++++++++++++ .../SpeciesFrequencyUIModel-error-validation.xml | 9 +++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 1 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 2 +- 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx index d43e850..9bbb08f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx @@ -69,6 +69,7 @@ public SpeciesFrequencyUI(TuttiUI parentUI) { <field name='step' component='stepField'/> <field name='rows' component='tableScrollPane'/> <field name='totalWeight' component='totalWeightField'/> + <field name='nonEmptyIndividualObservationRowsInError' component='obsPanel'/> </BeanValidator> <TuttiHelpBroker id='broker' constructorParams='"tutti.editSpeciesFrequencies.help"'/> 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 bf798b1..bd221a5 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 @@ -522,19 +522,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci getObsTableModel().setRows((List<IndividualObservationBatchRowModel>) evt.getNewValue()); }); -// model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, evt -> { -// Set<IndividualObservationBatchRowModel> obsRowsInError = -// (Set<IndividualObservationBatchRowModel>) evt.getNewValue(); -// -// model.getRows().clear(); -// model.getRowsInError().clear(); -// model.reloadRows(); -// -// reloadRowsFromIndividualObservations(); -// -// getTableModel().fireTableDataChanged(); -// }); - model.addVetoableChangeListener(SpeciesFrequencyUIModel.PROPERTY_COPY_INDIVIDUAL_OBSERVATION_MODE, evt -> { CopyIndividualObservationMode oldCopyMode = (CopyIndividualObservationMode) evt.getOldValue(); 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 3ddc475..1c1995c 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 @@ -118,6 +118,8 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa public static final String PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR = "individualObservationRowsInError"; + public static final String PROPERTY_NON_EMPTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR = "nonEmptyIndividualObservationRowsInError"; + /** * Fill mode. * @@ -860,22 +862,41 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa } public void setIndividualObservationRowsInError(Set<IndividualObservationBatchRowModel> individualObservationRowsInError) { + Object nonEmptyIndividualObservationInError = isNonEmptyIndividualObservationRowsInError(); this.individualObservationRowsInError = individualObservationRowsInError; firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, null, individualObservationRowsInError); + firePropertyChange(PROPERTY_NON_EMPTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, + nonEmptyIndividualObservationInError, + isNonEmptyIndividualObservationRowsInError()); } public void addIndividualObservationRowInError(IndividualObservationBatchRowModel row) { + Object nonEmptyIndividualObservationInError = isNonEmptyIndividualObservationRowsInError(); Object oldValue = new HashSet<>(individualObservationRowsInError); individualObservationRowsInError.add(row); firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, oldValue, individualObservationRowsInError); + firePropertyChange(PROPERTY_NON_EMPTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, + nonEmptyIndividualObservationInError, + isNonEmptyIndividualObservationRowsInError()); } public void removeIndividualObservationRowInError(IndividualObservationBatchRowModel row) { + Object nonEmptyIndividualObservationInError = isNonEmptyIndividualObservationRowsInError(); Object oldValue = new HashSet<>(individualObservationRowsInError); individualObservationRowsInError.remove(row); firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, oldValue, individualObservationRowsInError); + firePropertyChange(PROPERTY_NON_EMPTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, + nonEmptyIndividualObservationInError, + isNonEmptyIndividualObservationRowsInError()); + } + + public boolean isNonEmptyIndividualObservationRowsInError() { + return individualObservationRowsInError != null && + individualObservationRowsInError.stream().anyMatch(row -> !row.isEmpty()); } + public void setNonEmptyIndividualObservationRowsInError(boolean nonEmptyIndividualObservationInError) { } + public void recomputeRowsValidateState() { if (log.isInfoEnabled()) { diff --git a/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml index 040977d..de1d3fb 100644 --- a/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml +++ b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml @@ -70,4 +70,13 @@ </field-validator> </field> + <field name="nonEmptyIndividualObservationRowsInError"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ !mustCopyIndividualObservationWeight() || !isNonEmptyIndividualObservationRowsInError() ]]> + </param> + <message>tutti.validator.error.speciesFrequency.individualObservationsWithoutWeights</message> + </field-validator> + </field> + </validators> 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 28567e9..bb309af 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 @@ -2541,6 +2541,7 @@ tutti.validator.error.rtpEditor.rtpMaleB.required= tutti.validator.error.rtpEditor.rtpUndefinedA.required= tutti.validator.error.rtpEditor.rtpUndefinedB.required= tutti.validator.error.speciesFrequency.incoherentTotalWeights= +tutti.validator.error.speciesFrequency.individualObservationsWithoutWeights= tutti.validator.error.speciesFrequency.lengthStepCaracteristic.required= tutti.validator.error.speciesFrequency.oneRowRequired= tutti.validator.error.speciesFrequency.step.positiveValue= 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 e016f5b..546aab6 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 @@ -1,4 +1,3 @@ -Pr\\u00e9l\\u00e8vement= application.action.create.error= application.error.ui.business.warning= jaxx.application.action.create.error= @@ -2332,6 +2331,7 @@ tutti.validator.error.rtpEditor.rtpMaleB.required= tutti.validator.error.rtpEditor.rtpUndefinedA.required= tutti.validator.error.rtpEditor.rtpUndefinedB.required= tutti.validator.error.speciesFrequency.incoherentTotalWeights=Le poids total est différent de la somme des poids des poids observés +tutti.validator.error.speciesFrequency.individualObservationsWithoutWeights=Tous les poids des observations individuelles nes ont pas renseignés tutti.validator.error.speciesFrequency.lengthStepCaracteristic.required=La classe de taille est obligatoire tutti.validator.error.speciesFrequency.oneRowRequired=Au moins une classe de taille doit être observée tutti.validator.error.speciesFrequency.step.positiveValue=Le pas de la classe de taille doit être strictement positif -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm