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 0d540e1f97004a7a22c74b4233a7bfb3c5c638f3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 3 21:00:56 2015 +0200 amélioration du rapport de validation --- .../entities/data/SpeciesAbleBatchs.java | 11 +++ .../tutti/persistence/model/ProgramDataModel.java | 12 ++- .../genericformat/GenericFormatResultSupport.java | 5 ++ .../GenericFormatValidateFileResult.java | 7 ++ .../ftl/genericFormatValidateReport_fr.ftl | 86 +++++++++++++++++----- .../GenericFormatImportServiceValidTest.java | 13 ++++ 6 files changed, 113 insertions(+), 21 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SpeciesAbleBatchs.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SpeciesAbleBatchs.java index 7e9ac01..5277c3d 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SpeciesAbleBatchs.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SpeciesAbleBatchs.java @@ -26,8 +26,11 @@ package fr.ifremer.tutti.persistence.entities.data; import com.google.common.base.Predicate; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import java.util.Collection; import java.util.List; +import java.util.Set; /** * Created on 8/26/14. @@ -95,6 +98,14 @@ public class SpeciesAbleBatchs { } + public static <B extends SpeciesAbleBatch> void grabSpeciesChildBatchs(Collection<B> childs, Set<Species> speciesSet) { + + for (B child : childs) { + speciesSet.add(child.getSpecies()); + } + + } + public static class SpeciesAbleBatchCategoryPredicate implements Predicate<SpeciesAbleBatch> { diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/model/ProgramDataModel.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/model/ProgramDataModel.java index c2b3913..be2ebb6 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/model/ProgramDataModel.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/model/ProgramDataModel.java @@ -43,7 +43,7 @@ public class ProgramDataModel extends DataModelSupport implements Iterable<Cruis private final Set<CruiseDataModel> cruises; public ProgramDataModel(Program program, Set<CruiseDataModel> cruises) { - this(program.getId(), program.getName(),cruises); + this(program.getId(), program.getName(), cruises); } public ProgramDataModel(String id, String label, Set<CruiseDataModel> cruises) { @@ -55,12 +55,20 @@ public class ProgramDataModel extends DataModelSupport implements Iterable<Cruis return cruises.size(); } + public int getNbOperations() { + int result = 0; + for (CruiseDataModel cruise : this) { + result += cruise.size(); + } + return result; + } + @Override public Iterator<CruiseDataModel> iterator() { return cruises.iterator(); } - public CruiseDataModel getCruise(String id) { + public CruiseDataModel getCruise(String id) { CruiseDataModel result = null; for (CruiseDataModel cruise : this) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java index 56087d2..ab85eac 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java @@ -26,6 +26,7 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.collect.ImmutableSet; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; @@ -159,6 +160,10 @@ public abstract class GenericFormatResultSupport implements Serializable { return sampleCategoryFileResult; } + public SampleCategoryModel getSampleCategoryModel() { + return importRequest.getSampleCategoryModel(); + } + public GenericFormatReferentialImportResult<Gear, Integer> getReferentialTemporaryGearFileResult() { return referentialTemporaryGearFileResult; } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java index b8ae551..9ef7e63 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java @@ -39,4 +39,11 @@ public class GenericFormatValidateFileResult extends GenericFormatResultSupport setDataModel(validateFileContext.toDataModel()); } + public int getNbCruises() { + return getDataModel().size(); + } + + public int getNbOperations() { + return getDataModel().getNbOperations(); + } } diff --git a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl index 2c30751..7448808 100644 --- a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl @@ -65,7 +65,7 @@ <@renderErrors errorsEntries=errorsEntries/> </#macro> -<#macro renderImportFile fileResult> +<#macro renderImportFile fileResult showNbLines=true> <#assign errorsEntries = fileResult.errorsEntries> <ul> <li>Nom du fichier : <span class="bold">${fileResult.filename}</span></li> @@ -74,7 +74,9 @@ </ul> <#return> </#if> +<#if showNbLines> <li>Nombre de lignes à importer : ${fileResult.linesCount}</li> +</#if> <#if !fileResult.valid> <li class="error">Fichier non valide</li> </#if> @@ -99,8 +101,12 @@ </#if> <li>Nombre de lignes à importer : ${fileResult.linesCount}</li> <#if fileResult.valid> - <li>Nombre de lignes importées : ${fileResult.entitiesAddedEntries?size}</li> - <li>Nombre de lignes associées : ${fileResult.entitiesLinkedEntries?size}</li> + <#if fileResult.entitiesAddedEntries?size != 0 > + <li>Nombre de référentiels ajoutés : ${fileResult.entitiesAddedEntries?size}</li> + </#if> + <#if fileResult.entitiesLinkedEntries?size != 0 > + <li>Nombre de référentiels associés : ${fileResult.entitiesLinkedEntries?size}</li> + </#if> <#else> <li class="error">Fichier non valide</li> </#if> @@ -316,6 +322,14 @@ background: #fff; } + .operationPadding { + padding-left: 25pt; + } + + .small { + font-size: 11px; + } + </style> </head> <body> @@ -328,8 +342,11 @@ <li>Fichier : ${importConfiguration.importFile.name}</li> <li>Date - heure : ${startingDate?date?string.full} ${startingDate?time?string.short}</li> <li>Série de campagne: ${program.name}</li> + <li>Nombre de campagnes détectées: ${nbCruises}</li> + <li>Nombre de traits détectés: ${nbOperations}</li> </ul> +<h3>Fichiers détectés <a name="summary_files"></a></h3> <table align="center"> <thead> <tr> @@ -361,54 +378,84 @@ </table> <h2 class="nextPage"></h2> +<h2>Résumé des données détéctées <a name="summary_data_imported"></a> </h2> +<table> + <thead> + <tr> + <th class="small">Campagne - Trait</th> + </tr> + </thead> + <tbody> + <#list dataModel.iterator() as cruise> + <tr> + <td class="small">${cruise.label} (${cruise.size()} traits)</td> + </tr> + <#list cruise.iterator() as operation> + <tr> + <td class="small operationPadding">Trait ${operation.label}</td> + </tr> + </#list> + </#list> + </tbody> +</table> + +<h2 class="nextPage"></h2> <h2>Modèle de catégorisation <a name="sampleCategoryFileResult"></a></h2> -<@renderImportFile fileResult=sampleCategoryFileResult/> +<@renderImportFile fileResult=sampleCategoryFileResult showNbLines=false/> +<p>Nombre de catégories : ${sampleCategoryModel.nbSampling}</p> +<ul> +<#list sampleCategoryModel.category as category> + <li>Catégorie ${category.code} (identifiant ${category.categoryId})</li> +</#list> +</ul> + + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Engin <a name="referentialTemporaryGearFileResult"></a></h2> <#assign fileResult = referentialTemporaryGearFileResult> <@renderReferentialImportFile fileResult=fileResult/> <#if fileResult.imported && fileResult.valid> -<p>Des engins temporaires ont été importés.</p> <@renderReferentialGearList title="Engins ajoutés" entries=fileResult.entitiesAddedEntries/> <@renderReferentialGearList title="Engins associés" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage" style="width: 100%"></h2> <h2>Référentiel temporaire Personne <a name="referentialTemporaryPersonFileResult"></a></h2> <#assign fileResult = referentialTemporaryPersonFileResult> <@renderReferentialImportFile fileResult=fileResult/> <#if fileResult.imported && fileResult.valid> -<p>Des personnes temporaires ont été importées.</p> <@renderReferentialPersonList title="Personnes ajoutées" entries=fileResult.entitiesAddedEntries/> <@renderReferentialPersonList title="Personnes associées" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Taxon <a name="referentialTemporarySpeciesFileResult"></a></h2> <#assign fileResult = referentialTemporarySpeciesFileResult> <@renderReferentialImportFile fileResult=fileResult/> <#if fileResult.imported && fileResult.valid> -<p>Des taxons temporaires ont été importées.</p> <@renderReferentialSpeciesList title="Taxons ajoutés" entries=fileResult.entitiesAddedEntries/> <@renderReferentialSpeciesList title="Taxons associés" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Référentiel temporaire Navire <a name="referentialTemporaryVesselFileResult"></a></h2> <#assign fileResult = referentialTemporaryVesselFileResult> <@renderReferentialImportFile fileResult=fileResult/> <#if fileResult.imported && fileResult.valid> -<p>Des navires temporaires ont été importés.</p> <@renderReferentialVesselList title="Navires ajoutés" entries=fileResult.entitiesAddedEntries/> <@renderReferentialVesselList title="Navires associés" entries=fileResult.entitiesLinkedEntries/> </#if> +<p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Protocole <a name="protocolFileResult"></a></h2> @@ -419,6 +466,7 @@ <p>Un protocol nommé ${protocol.name} a été importé et sélectionné pour l'import.</p> </#if> + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des campagnes <a name="surveyFileResult"></a></h2> @@ -427,7 +475,7 @@ <#if fileResult.valid> <p>Des campagnes ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des mises en oeuvre d'engin <a name="gearCaracteristicFileResult"></a></h2> @@ -436,7 +484,7 @@ <#if fileResult.valid> <p>Des mises en oeuvre d'engin ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des traits <a name="operationFileResult"></a></h2> @@ -445,7 +493,7 @@ <#if fileResult.valid> <p>Des traits ont été validés.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des caractéristiques de trait <a name="parameterFileResult"></a></h2> @@ -454,16 +502,16 @@ <#if fileResult.valid> <p>Des caractéristiques de trait ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> -<h2>Fichier des lôts capture <a name="catchFileResult"></a></h2> +<h2>Fichier des lots capture <a name="catchFileResult"></a></h2> <#assign fileResult = catchFileResult> <@renderImportFile fileResult=fileResult/> <#if fileResult.valid> -<p>Des lôts capture ont été validées.</p> +<p>Des lots capture ont été validés.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des macro déchets <a name="marineLitterFileResult"></a></h2> @@ -472,7 +520,7 @@ <#if fileResult.valid> <p>Des macro déchets ont été validés.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des captures accidentelles <a name="accidentalCatchFileResult"></a></h2> @@ -481,7 +529,7 @@ <#if fileResult.valid> <p>Des captures accidentelles ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des observations individuelles <a name="individualObservationFileResult"></a></h2> @@ -490,7 +538,7 @@ <#if fileResult.valid> <p>Des observations individuelles ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> <h2 class="nextPage"></h2> <h2>Fichier des pièces jointes<a name="attachmentsFileResult"></a></h2> <#assign fileResult = attachmentsFileResult> @@ -498,6 +546,6 @@ <#if fileResult.valid> <p>Des pièces-jointes ont été validées.</p> </#if> - + <p><a href="#summary_files">Remonter au résumé des fichiers détectés</a></p> </body> </html> diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java index 50eb7d0..12a8ff2 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceValidTest.java @@ -73,6 +73,19 @@ public class GenericFormatImportServiceValidTest extends GenericFormatImportServ } @Test + public void testValidate() throws IOException { + + dbResource.setDestroyResources(false); + + doValidate("testImport", PROGRAM_ID, "referentials", "sampleCategory", "protocol", "default"); + + if (log.isInfoEnabled()) { + log.info("Report files:" + builder.toString()); + } + + } + + @Test public void testArchiveLayoutNotValid() throws IOException { GenericFormatValidateFileResult result = doValidate("ArchiveLayoutNotValid", PROGRAM_ID); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.