Author: kmorin Date: 2013-05-31 18:16:35 +0200 (Fri, 31 May 2013) New Revision: 1065 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1065 Log: refs #2487 [VALIDATION] alertes r?\195?\169p?\195?\169t?\195?\169es et pas d'identification des donn?\195?\169es / lots concern?\195?\169s Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java 2013-05-31 16:16:35 UTC (rev 1065) @@ -40,6 +40,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; +import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.AbstractTuttiService; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; @@ -282,16 +283,27 @@ TuttiProtocol protocol = dataContext.getProtocol(); Map<String, List<String>> warningMap = Maps.newHashMap(); + Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class); for (SpeciesBatch batch : rootSpeciesBatch.getChildren()) { if (isSpeciesBatchInvalid(batch, protocol)) { - warningMap.put("species", Lists.newArrayList(_("tutti.validator.warning.species.protocolNotRespected"))); + String species = speciesDecorator.toString(batch.getSpecies()); + String categoryValue = decoratorService.getDecorator(batch.getSampleCategoryValue()) + .toString(batch.getSampleCategoryValue()); + warningMap.put("species", + Lists.newArrayList(_("tutti.validator.warning.species.protocolNotRespected", + species, categoryValue))); break; } } for (BenthosBatch batch : rootBenthosBatch.getChildren()) { if (isBenthosBatchInvalid(batch, protocol)) { - warningMap.put("benthos", Lists.newArrayList(_("tutti.validator.warning.benthos.protocolNotRespected"))); + String species = speciesDecorator.toString(batch.getSpecies()); + String categoryValue = decoratorService.getDecorator(batch.getSampleCategoryValue()) + .toString(batch.getSampleCategoryValue()); + warningMap.put("benthos", + Lists.newArrayList(_("tutti.validator.warning.benthos.protocolNotRespected", + species, categoryValue))); break; } } Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-31 16:16:35 UTC (rev 1065) @@ -206,10 +206,10 @@ tutti.validator.export.message.error=\t- [ERREUR] %s tutti.validator.export.message.warning=\t- [WARNING] %s tutti.validator.export.operation=* %s \: -tutti.validator.warning.benthos.protocolNotRespected=Un lot du benthos ne suit pas les recommandations du protocole +tutti.validator.warning.benthos.protocolNotRespected=[Benthos] le lot de %s / %s ne suit pas les recommandations du protocole tutti.validator.warning.fishingOperation.batch.notFound=Pas d'arbre d’échantillonnage trouvé tutti.validator.warning.fishingOperation.invalid.batch.model=Arbre d’échantillonnage non compatible avec l'application tutti.validator.warning.latitude.outOfBounds=La Latitude doit être comprise entre -90.0 et 90.0 tutti.validator.warning.longitude.outOfBounds=La longitude doit être comprise entre -180.0 et 180.0 tutti.validator.warning.marineLitter.weight.required=Vous devez saisir la valeur du poids total des déchets<br/>ou le poids de chacune des catégories observées. -tutti.validator.warning.species.protocolNotRespected=Un lot des espèces ne suit pas les recommandations du protocole +tutti.validator.warning.species.protocolNotRespected=[Espèces] le lot de %s / %s ne suit pas les recommandations du protocole Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java 2013-05-31 16:16:35 UTC (rev 1065) @@ -67,14 +67,16 @@ protected FishingOperation fishingOperation; protected final PropertyChangeListener editFishingOperationModelListener = new PropertyChangeListener() { + + protected final List<String> propertiesToIgnore = Lists.newArrayList( + EditFishingOperationUIModel.PROPERTY_MODIFY, + EditFishingOperationUIModel.PROPERTY_VALID, + EditFishingOperationUIModel.PROPERTY_PERSISTED + ); + @Override public void propertyChange(PropertyChangeEvent evt) { - List<String> propertiesToIgnore = Lists.newArrayList( - EditFishingOperationUIModel.PROPERTY_MODIFY, - EditFishingOperationUIModel.PROPERTY_VALID, - EditFishingOperationUIModel.PROPERTY_PERSISTED - ); EditFishingOperationUIModel model = (EditFishingOperationUIModel) evt.getSource(); if (!model.isLoadingData() @@ -98,29 +100,30 @@ }; protected final PropertyChangeListener editCatchesModelListener = new PropertyChangeListener() { + + protected final List<String> propertiesToIgnore = Lists.newArrayList( + EditCatchesUIModel.PROPERTY_MODIFY, + EditCatchesUIModel.PROPERTY_VALID, + EditCatchesUIModel.PROPERTY_CATCH_TOTAL_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_CATCH_TOTAL_SORTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_CATCH_TOTAL_UNSORTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_CATCH_TOTAL_REJECTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SORTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_UNSORTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_INERT_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_SORTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_UNSORTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_INERT_COMPUTED_WEIGHT, + EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_COMPUTED_WEIGHT + ); + @Override public void propertyChange(PropertyChangeEvent evt) { - - List<String> propertiesToIgnore = Lists.newArrayList( - EditCatchesUIModel.PROPERTY_MODIFY, - EditCatchesUIModel.PROPERTY_VALID, - EditCatchesUIModel.PROPERTY_CATCH_TOTAL_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_CATCH_TOTAL_SORTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_CATCH_TOTAL_UNSORTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_CATCH_TOTAL_REJECTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SORTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_UNSORTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_INERT_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_SORTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_UNSORTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_INERT_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_COMPUTED_WEIGHT - ); EditCatchesUIModel model = (EditCatchesUIModel) evt.getSource(); if (!model.isLoadingData() @@ -134,7 +137,6 @@ uiModel.getValidator().put(uiModel.getSelectedFishingOperation(), validationResult); getHandler().updateCurrentOperatonNode(validationResult); - } } }; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java 2013-05-31 16:16:35 UTC (rev 1065) @@ -27,6 +27,7 @@ import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; @@ -81,4 +82,10 @@ protected FishingOperation newEntity() { return null; } + + public void fireBatchUpdated(SpeciesBatchRowModel row) { + if (catchesUIModel != null) { + catchesUIModel.firePropertyChanged(EditCatchesUIModel.PROPERTY_BATCH_UPDATED, null, row); + } + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-05-31 16:16:35 UTC (rev 1065) @@ -172,7 +172,8 @@ EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_SAMPLE_SORTED_COMPUTED_WEIGHT, EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_INERT_COMPUTED_WEIGHT, EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_COMPUTED_WEIGHT, - EditCatchesUIModel.PROPERTY_ATTACHMENT + EditCatchesUIModel.PROPERTY_ATTACHMENT, + EditCatchesUIModel.PROPERTY_BATCH_UPDATED )); return result; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-05-31 16:16:35 UTC (rev 1065) @@ -56,6 +56,8 @@ public static final String PROPERTY_CATCH_BATCH = "catchBatch"; + public static final String PROPERTY_BATCH_UPDATED = "batchUpdated"; + protected static final Binder<CatchBatch, EditCatchesUIModel> fromBeanBinder = BinderFactory.newBinder(CatchBatch.class, EditCatchesUIModel.class); protected static final Binder<EditCatchesUIModel, CatchBatch> toBeanBinder = BinderFactory.newBinder(EditCatchesUIModel.class, CatchBatch.class); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-05-31 16:16:35 UTC (rev 1065) @@ -934,6 +934,8 @@ // push it back to row model frequencyRows = SpeciesFrequencyRowModel.fromBeans(frequency); row.setFrequency(frequencyRows); + + getModel().fireBatchUpdated(row); } public String getFilterSpeciesBatchRootButtonText(int rootNumber) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-05-31 16:16:35 UTC (rev 1065) @@ -140,7 +140,8 @@ EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_UNSORTED_COMPUTED_WEIGHT, EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_COMPUTED_WEIGHT, EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT, - EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, + EditCatchesUIModel.PROPERTY_BATCH_UPDATED); } public Float getSpeciesTotalComputedWeight() { Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-31 16:12:18 UTC (rev 1064) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-31 16:16:35 UTC (rev 1065) @@ -1273,12 +1273,12 @@ tutti.updateApplication.message.success=La mise à jour nécessite le redémarrage du l'application tutti.updateApplication.noUpdate=Aucune mise à jour de l'application détectée. tutti.updateApplication.title.success=Redémarrage de l'application nécessaire... -tutti.validateCruise.action.export.all.chooseFile.defaultFile=validation_%s +tutti.validateCruise.action.export.all.chooseFile.defaultFile=validation_%s.txt tutti.validateCruise.action.export.all.chooseFile.label=Choisir le fichier d'export tutti.validateCruise.action.export.all.chooseFile.title=Exporter les messages de validation de la campagne tutti.validateCruise.action.export.all.success=Les messages de validation des captures ont correctement été exporté dans le fichier %s tutti.validateCruise.action.export.all.tip=Exporter les messages de validation de la campagne -tutti.validateCruise.action.export.operation.chooseFile.defaultFile=validation_%s +tutti.validateCruise.action.export.operation.chooseFile.defaultFile=validation_%s.txt tutti.validateCruise.action.export.operation.chooseFile.label=Choisir le fichier d'export tutti.validateCruise.action.export.operation.chooseFile.title=Exporter les messages de validation de l'opération tutti.validateCruise.action.export.operation.success=Les messages de validation de l'opération ont correctement été exporté dans le fichier %s