branch develop updated (b456d51 -> 99c0502)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from b456d51 ne pas exploser si fichier non trouvé dans l'archive new 99c0502 fixes #6794: [IMPORT GENERIQUE] Améliorer les messages de validation lorsque les catégories ne sont pas valides 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 99c0502d038e43732a3b33ba1ab15359ed88407e Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Mar 24 19:57:41 2015 +0100 fixes #6794: [IMPORT GENERIQUE] Améliorer les messages de validation lorsque les catégories ne sont pas valides Summary of changes: .../consumer/CsvConsumerForSampleCategory.java | 17 ++++----- .../ValidateSampleCategoryAction.java | 41 ++++++++++++++++++---- .../resources/i18n/tutti-service_fr_FR.properties | 4 +-- 3 files changed, 44 insertions(+), 18 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 develop in repository tutti. See http://git.codelutin.com/tutti.git commit 99c0502d038e43732a3b33ba1ab15359ed88407e Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Mar 24 19:57:41 2015 +0100 fixes #6794: [IMPORT GENERIQUE] Améliorer les messages de validation lorsque les catégories ne sont pas valides --- .../consumer/CsvConsumerForSampleCategory.java | 17 ++++----- .../ValidateSampleCategoryAction.java | 41 ++++++++++++++++++---- .../resources/i18n/tutti-service_fr_FR.properties | 4 +-- 3 files changed, 44 insertions(+), 18 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java index 062b924..8832e58 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/consumer/CsvConsumerForSampleCategory.java @@ -59,12 +59,7 @@ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel sampleCategoryModel = importContext.getImportRequest().getSampleCategoryModel(); int nbSampling = sampleCategoryModel.getNbSampling(); - if (nbSampling < categoryIndex) { - - // too much categories - addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.tooMuchCategories"))); - - } else { + if (nbSampling >= categoryIndex) { SampleCategoryRow bean = row.getBean(); SampleCategoryModelEntry categoryEntry = sampleCategoryModel.getCategoryByIndex(categoryIndex); @@ -77,6 +72,12 @@ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, } else { + if (!Objects.equals(categoryEntry.getCode(), code)) { + + addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.codeNotMatching", categoryEntry.getCode(), code))); + + } + Caracteristic caracteristic = bean.getCaracteristic(); if (caracteristic == null) { @@ -86,10 +87,6 @@ public class CsvConsumerForSampleCategory extends CsvComsumer<SampleCategoryRow, addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching", categoryEntry.getCategoryId(), caracteristic.getIdAsInt()))); - } else if (!Objects.equals(categoryEntry.getCode(), code)) { - - addCheckError(row, new IllegalStateException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.codeNotMatching", categoryEntry.getCode(), code))); - } } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSampleCategoryAction.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSampleCategoryAction.java index f421145..2c33ae6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSampleCategoryAction.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/importactions/ValidateSampleCategoryAction.java @@ -24,6 +24,8 @@ package fr.ifremer.tutti.service.genericformat.importactions; * #L% */ +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.service.genericformat.GenericFormatCsvFileResult; import fr.ifremer.tutti.service.genericformat.GenericFormatImportContext; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForSampleCategory; @@ -35,6 +37,8 @@ import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.IOException; +import java.util.LinkedHashSet; +import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -70,19 +74,44 @@ public class ValidateSampleCategoryAction extends ImportActionSupport { GenericFormatCsvFileResult importFileResult = importContext.getSampleCategoryFileResult(); try (CsvConsumerForSampleCategory consumer = importContext.loadSampleCategories(false)) { - int nbCategories = 0; + SampleCategoryModel sampleCategoryModel = importContext.getImportRequest().getSampleCategoryModel(); + + int nbExpectedSampling = sampleCategoryModel.getNbSampling(); + + Set<String> categoryCodesFromApplication = new LinkedHashSet<>(); + for (SampleCategoryModelEntry sampleCategoryModelEntry : sampleCategoryModel.getCategory()) { + categoryCodesFromApplication.add(sampleCategoryModelEntry.getCode()); + } + + Set<String> categoryCodesFromImport = new LinkedHashSet<>(); for (ImportRow<SampleCategoryRow> row : consumer) { consumer.validateRow(row, importContext); - nbCategories++; + SampleCategoryRow bean = row.getBean(); + categoryCodesFromImport.add(bean.getCode()); } - if (nbCategories != importContext.getImportRequest().getSampleCategoryModel().getNbSampling()) { + importFileResult.flushErrors(consumer); - throw new ImportRuntimeException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.missingCategories")); + int nbActualSampling = categoryCodesFromImport.size(); - } + if (nbActualSampling < nbExpectedSampling) { - importFileResult.flushErrors(consumer); + // Il manque des catégories dans l'import + Set<String> missingCodes = new LinkedHashSet<>(categoryCodesFromApplication); + missingCodes.removeAll(categoryCodesFromImport); + + throw new ImportRuntimeException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.missingCategories", missingCodes)); + + } else if (nbActualSampling > nbExpectedSampling) { + + // Il manque des catégories dans l'application + + Set<String> missingCodes = new LinkedHashSet<>(categoryCodesFromImport); + missingCodes.removeAll(categoryCodesFromApplication); + + throw new ImportRuntimeException(t("tutti.service.genericFormat.import.sampleCategoryModel.error.tooMuchCategories", missingCodes)); + + } } catch (IOException e) { throw new ApplicationTechnicalException("Could not close sampleCategory.csv file", e); diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index 1bc9bca..ce8e8b6 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -157,10 +157,10 @@ tutti.service.genericFormat.import.protocol.notValid=Import d'un nouveau protoco tutti.service.genericFormat.import.sampleCategoryModel=Import du modèle de catégorisation tutti.service.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching=L'identifiant de la caractéristique devrait être %s, mais vaut %s tutti.service.genericFormat.import.sampleCategoryModel.error.codeNotMatching=Le code devrait être %s, mais vaut %s -tutti.service.genericFormat.import.sampleCategoryModel.error.missingCategories=Il manque des catégories +tutti.service.genericFormat.import.sampleCategoryModel.error.missingCategories=Dans le fichier d'import, il manque les catégorisations avec les codes suivants %s. Vous devez les supprimer dans l'application (Menu Administration > Configurer les catégorisations). tutti.service.genericFormat.import.sampleCategoryModel.error.noCaracteristic=La catactéristique est obligatoire tutti.service.genericFormat.import.sampleCategoryModel.error.noCode=Le code est obligatoire -tutti.service.genericFormat.import.sampleCategoryModel.error.tooMuchCategories=Trop de catégorisation +tutti.service.genericFormat.import.sampleCategoryModel.error.tooMuchCategories=Dans l'application, il manque les catégories avec les codes suivants %s. Vous devez les ajouter dans l'application (Menu Administration > Configurer les catégorisations). tutti.service.genericFormat.import.temporaryGears=Import des références temporaires d'engins tutti.service.genericFormat.import.temporaryPersons=Import des références temporaires de personnes tutti.service.genericFormat.import.temporarySpecies=Import des références temporaires de Taxons -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm