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 0bb341dc72320b4fb576af1fe5cb0dda685af325 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Aug 30 12:22:58 2014 +0200 fixes #5695: [IMPORT] psion blocage fenettre suite message erreur --- .../service/psionimport/PsionImportModel.java | 48 +++++++++++++++++++++- .../service/psionimport/PsionImportService.java | 2 +- .../resources/i18n/tutti-service_en_GB.properties | 2 + .../resources/i18n/tutti-service_fr_FR.properties | 20 +++++---- 4 files changed, 60 insertions(+), 12 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java index 3c5f6f1..10608b7 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportModel.java @@ -28,8 +28,10 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; -import fr.ifremer.tutti.util.Weights; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.util.Weights; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -243,7 +245,7 @@ public class PsionImportModel { } } - void checkSortedBatches() throws IOException { + void checkSortedBatches(SampleCategoryModel sampleCategoryModel) throws IOException { for (Species species : sortedBatchsBySpecies.keySet()) { @@ -273,6 +275,8 @@ public class PsionImportModel { } + checkSampleCategoryModel(sampleCategoryModel, batchModel); + } if (!speciesBatchesWithDoubleWeight.isEmpty()) { @@ -300,4 +304,44 @@ public class PsionImportModel { } } + + protected void checkSampleCategoryModel(SampleCategoryModel sampleCategoryModel, PsionImportBatchModel batchModel) throws IOException { + + if (batchModel.withCategories()) { + + Iterator<SampleCategoryModelEntry> samplingOrderIterator = sampleCategoryModel.getCategory().iterator(); + Iterator<PsionImportBatchModel.SampleCategory> categoryIterator = batchModel.getCategoryIterator(); + while (categoryIterator.hasNext()) { + PsionImportBatchModel.SampleCategory nextCategory = categoryIterator.next(); + + Integer nextCategoryCategoryId = nextCategory.getCategoryId(); + if (!samplingOrderIterator.hasNext()) { + + // not an existing category (should never happend) + throw new IOException(t("tutti.service.psionimport.error.unkonwSampleCategory.message", batchModel.getSpecies().getSurveyCode(), nextCategoryCategoryId)); + + } + + if (!sampleCategoryModel.containsCategoryId(nextCategoryCategoryId)) { + + // not an existing category (should never happend) + throw new IOException(t("tutti.service.psionimport.error.unkonwSampleCategory.message", batchModel.getSpecies().getSurveyCode(), nextCategoryCategoryId)); + + } + + SampleCategoryModelEntry nextSampleCategory = samplingOrderIterator.next(); + + if (!nextSampleCategory.getCategoryId().equals(nextCategoryCategoryId)) { + + // mismatch sample category + SampleCategoryModelEntry foundSampleCategory = sampleCategoryModel.getCategoryById(nextCategoryCategoryId); + throw new IOException(t("tutti.service.psionimport.error.mismatchSampleCategory.message", batchModel.getSpecies().getSurveyCode(), foundSampleCategory, nextSampleCategory)); + + } + } + + + } + + } } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java index 6f955dd..e22428e 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/psionimport/PsionImportService.java @@ -281,7 +281,7 @@ public class PsionImportService extends AbstractTuttiService { // --- Check sorted batches --- // try { - importModel.checkSortedBatches(); + importModel.checkSortedBatches(context.getSampleCategoryModel()); } catch (IOException e) { result.addError(e.getMessage()); return result; diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index c22425a..e810af7 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -185,10 +185,12 @@ tutti.service.psionimport.error.invalid.firstLine= tutti.service.psionimport.error.invalid.line.syntax= tutti.service.psionimport.error.invalid.operation= tutti.service.psionimport.error.invalidSampleCategoryModel.message= +tutti.service.psionimport.error.mismatchSampleCategory.message= tutti.service.psionimport.error.no.lengthClass.caracteristic= tutti.service.psionimport.error.no.protocol= tutti.service.psionimport.error.species.already.used= tutti.service.psionimport.error.species.not.found= +tutti.service.psionimport.error.unkonwSampleCategory.message= tutti.service.pupitri.export.species.error= tutti.service.pupitri.import.attachment.comment= tutti.service.pupitri.import.carrousel.error= 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 1a8b8eb..c25fa3d 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 @@ -161,19 +161,21 @@ tutti.service.protocol.import.benthos.error=Erreur lors de l'import du benthos d tutti.service.protocol.import.species.error=Erreur lors de l'import des espèces du protocole %1s du fichier %2s tutti.service.protocol.import.taxonUsed.error=Le taxon référent d'id %s est déjà utilisé tutti.service.psion.import.attachment.comment=Import Psion du %s -tutti.service.psionimport.error.inconsistentVracCategory.message=Pour l'espèce '%s', la cétégorisation des lots vrac n'est pas cohérente (POID \!\= 0 et TAIL > 0) (on autorise uniquement que tous les lots soient catégorisés ou un seul lot non catégorisé) -tutti.service.psionimport.error.inconsistentVracWeight.message=Pour l'espèce '%s', il existe deux enregistrements de lot vrac avec le champs 'POID' différent, ce qui est interdit -tutti.service.psionimport.error.invalid.category.syntax=Ligne %s, catégorisation '%s' inconnue, l'espèce %s sera ignorée -tutti.service.psionimport.error.invalid.command.syntax=Ligne %s, la commande '%s' n'est pas reconnue +tutti.service.psionimport.error.inconsistentVracCategory.message=Pour l'espèce '<strong>%s</strong>', la catégorisation des lots vrac n'est pas cohérente (POID \!\= 0 et TAIL > 0) (on autorise uniquement que tous les lots soient catégorisés ou un seul lot non catégorisé) +tutti.service.psionimport.error.inconsistentVracWeight.message=Pour l'espèce '<strong>%s</strong>', il existe deux enregistrements de lot vrac avec le champs 'POID' différent, ce qui est interdit +tutti.service.psionimport.error.invalid.category.syntax=Ligne <i>%s</i>, catégorisation '<strong>%s</strong>' inconnue, l'espèce <strong>%s</strong> sera ignorée +tutti.service.psionimport.error.invalid.command.syntax=Ligne <i>%s</i>, la commande '<strong>%s</strong>' n'est pas reconnue tutti.service.psionimport.error.invalid.date.format=Format de la date du trait incorrecte (mm-dd-aaaa) -tutti.service.psionimport.error.invalid.firstLine=La ligne %s (%s) n'est pas valide, elle doit être précédée par une ligne ESPE -tutti.service.psionimport.error.invalid.line.syntax=Ligne %s, format incorrecte (%s) +tutti.service.psionimport.error.invalid.firstLine=La ligne <i>%s</i> (<strong>%s</strong>) n'est pas valide, elle doit être précédée par une ligne <strong>ESPE</strong> +tutti.service.psionimport.error.invalid.line.syntax=Ligne <i>%s</i>, format incorrecte (<strong>%s</strong>) tutti.service.psionimport.error.invalid.operation=Code station ou date du trait incorrect tutti.service.psionimport.error.invalidSampleCategoryModel.message=<html><body>Le modèle de catégorisation n'est pas compatible pour un import psion.<br> Il manque les catégories suivantes \: <ul>%s</ul><hr/>Veuillez ajouter cette catégorie dans la configuration de catégorisation (menu administration).</body></html> -tutti.service.psionimport.error.no.lengthClass.caracteristic=Ligne %s espèce '%s' ignorée car pas de caractéristique de classe de taille renseignée dans le protocole. +tutti.service.psionimport.error.mismatchSampleCategory.message=Pour l'espèce '<strong>%s</strong>', la catégorisation ne respecte pas le modèle des catégorisation, la catégorie '<strong>%s</strong>' a été trouvé à la place de '<i>%s</i>' +tutti.service.psionimport.error.no.lengthClass.caracteristic=Ligne <i>%s</i> espèce '<strong>%s</strong>' ignorée car pas de caractéristique de classe de taille renseignée dans le protocole. tutti.service.psionimport.error.no.protocol=Impossible de faire un import Psion sans protocol. -tutti.service.psionimport.error.species.already.used="Ligne %s, espèce '%s' déjà utilisée -tutti.service.psionimport.error.species.not.found=Ligne %s, espèce '%s' inconnue +tutti.service.psionimport.error.species.already.used="Ligne <i>%s</i>, espèce '<strong>%s</strong>' déjà utilisée +tutti.service.psionimport.error.species.not.found=Ligne <i>%s</i>, espèce '<strong>%s</strong>' inconnue +tutti.service.psionimport.error.unkonwSampleCategory.message=Pour l'espèce '<strong>%s</strong>', la catégorisation '<strong>%s</strong>' n'est pas connue dans le modèle de catégorisation. tutti.service.pupitri.export.species.error=Erreur lors de l'export des espèces pour Pupitri dans le fichier %s tutti.service.pupitri.import.attachment.comment=Import Pupitri du %s tutti.service.pupitri.import.carrousel.error=Erreur lors de l'import du fichier de carrousel %2s pour le trait %1s -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.