Author: tchemit Date: 2013-09-19 10:52:54 +0200 (Thu, 19 Sep 2013) New Revision: 1189 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1189 Log: fixes #3265: [TRAIT] V?\195?\169rifier que l'ordre de saisie des captures est bien celui de la configuration de cat?\195?\169gorisation Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/ScientificCruiseCatchBatchValidator.java trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/ScientificCruiseCatchBatchValidator.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/ScientificCruiseCatchBatchValidator.java 2013-09-18 16:47:50 UTC (rev 1188) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/ScientificCruiseCatchBatchValidator.java 2013-09-19 08:52:54 UTC (rev 1189) @@ -45,6 +45,7 @@ import java.util.Collection; import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n._; import static org.nuiton.i18n.I18n.n_; @@ -95,8 +96,8 @@ List<CatchBatchValidationError> errors = Lists.newArrayList(); - Integer[] categoryIds = - sampleCategoryModel.getSamplingOrder().toArray(new Integer[sampleCategoryModel.getSamplingOrder().size()]); + Map<Integer, SampleCategoryModelEntry> categoriesById = + sampleCategoryModel.getCategoryMap(); for (SpeciesBatch speciesBatch : species.getChildren()) { @@ -113,11 +114,10 @@ // check sample categories order is ok validateSampleCategoriesOrder( - sampleCategoryModel, + categoriesById, errors, speciesBatch, - categoryIds, - 0, + null, n_("tutti.persistence.batch.validation.invalid.species.sampleCategoryId.order")); } } @@ -130,8 +130,8 @@ List<CatchBatchValidationError> errors = Lists.newArrayList(); - Integer[] categoryIds = - sampleCategoryModel.getSamplingOrder().toArray(new Integer[sampleCategoryModel.getSamplingOrder().size()]); + Map<Integer, SampleCategoryModelEntry> categoriesById = + sampleCategoryModel.getCategoryMap(); for (BenthosBatch benthosBatch : benthos.getChildren()) { @@ -147,11 +147,10 @@ // check sample categories order is ok validateSampleCategoriesOrder( - sampleCategoryModel, + categoriesById, errors, benthosBatch, - categoryIds, - 0, + null, n_("tutti.persistence.batch.validation.invalid.benthos.sampleCategoryId.order")); } } @@ -355,46 +354,50 @@ } } - protected void validateSampleCategoriesOrder(SampleCategoryModel sampleCategoryModel, + protected void validateSampleCategoriesOrder(Map<Integer, SampleCategoryModelEntry> categoriesById, List<CatchBatchValidationError> errors, SpeciesAbleBatch aBatch, - Integer[] categoryIds, - int level, + SampleCategoryModelEntry lastSampleCategory, String messageKey) { Integer sampleCategoryId = aBatch.getSampleCategoryId(); - Integer exceptedCategoryId = categoryIds[level]; + SampleCategoryModelEntry actualCategory = + categoriesById.get(sampleCategoryId); + if (lastSampleCategory != null) { - if (!exceptedCategoryId.equals(sampleCategoryId)) { + // check the category is after the last one - // bad sample category id + if (actualCategory.getOrder() < lastSampleCategory.getOrder()) { - SampleCategoryModelEntry actualCategory = sampleCategoryModel.getCategoryById(sampleCategoryId); - SampleCategoryModelEntry exceptedCategory = sampleCategoryModel.getCategoryById(exceptedCategoryId); + // bad order - addError(errors, - messageKey, - aBatch.getId(), - aBatch.getSpecies().getName(), - actualCategory.getLabel(), - exceptedCategory.getLabel()); + addError(errors, + messageKey, + aBatch.getId(), + aBatch.getSpecies().getName(), + actualCategory.getLabel(), + lastSampleCategory.getLabel()); - // no need to continue, we got a bad order - return; + // no need to continue, we got a bad order + return; + } + } + // keep the last sample category + lastSampleCategory = actualCategory; + if (!aBatch.isChildBatchsEmpty()) { for (SpeciesAbleBatch speciesAbleBatch : aBatch.getChildBatchs()) { validateSampleCategoriesOrder( - sampleCategoryModel, + categoriesById, errors, speciesAbleBatch, - categoryIds, - level + 1, + lastSampleCategory, messageKey); } } Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-09-18 16:47:50 UTC (rev 1188) +++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-09-19 08:52:54 UTC (rev 1189) @@ -27,9 +27,9 @@ tutti.persistence.batch.validation.horsVracNotFound=Lot 'Hors Vrac' non trouvé ou configuré avec d'autres critères de classement. tutti.persistence.batch.validation.horsVracSpeciesNotFound=Lot 'Hors Vrac > Espèces' non trouvé ou configuré avec d'autres critères de classement. tutti.persistence.batch.validation.invalid.benthos.sampleCategoryId=Le lot benthos %s (espèce %s) utilise une catégorie (id %s) non reconnue -tutti.persistence.batch.validation.invalid.benthos.sampleCategoryId.order=Le lot benthos %s (espèce %s) ne respecte pas l'ordre des catégories, utilisation de la catégorie <strong>%s</strong> au lieu de <strong>%s</strong> +tutti.persistence.batch.validation.invalid.benthos.sampleCategoryId.order=Le lot benthos %s (espèce %s) ne respecte pas l'ordre des catégories, utilisation de la catégorie <strong>%s</strong> après la catégories <strong>%s</strong> tutti.persistence.batch.validation.invalid.species.sampleCategoryId=Le lot espèce %s (espèce %s) utilise une catégorise (id %s) non reconnue -tutti.persistence.batch.validation.invalid.species.sampleCategoryId.order=Le lot espèce %s (espèce %s) ne respecte pas l'ordre des catégories, utilisation de la catégorie <strong>%s</strong> au lieu de <strong>%s</strong> +tutti.persistence.batch.validation.invalid.species.sampleCategoryId.order=Le lot espèce %s (espèce %s) ne respecte pas l'ordre des catégories, utilisation de la catégorie <strong>%s</strong> après la catégorie <strong>%s</strong> tutti.persistence.batch.validation.unkonwn.taxon=Le lot (%s) utilise une espèce de code inconnu (%s). tutti.persistence.batch.validation.unsortedNotFound=Lot 'Hors Vrac > Espèces' non trouvé ou configuré avec d'autres critères de classement. tutti.persistence.batch.validation.vracBenthosAliveItemizedNotFound=Lot 'Vrac > Benthos > Vivant Trié' non trouvé, ou configuré avec d'autres critères de classement.