This is an automated email from the git hooks/post-receive script. New commit to branch feature/6688 in repository tutti. See http://git.codelutin.com/tutti.git commit 88ebc3e23440efea527290a0794e598b5152deb0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Mar 3 19:13:11 2015 +0100 continue report + i18n --- .../resources/ftl/genericFormatImportReport_fr.ftl | 299 ++++++++++++++------- .../ftl/genericFormatValidateReport_fr.ftl | 76 +++--- .../resources/i18n/tutti-service_en_GB.properties | 17 ++ .../resources/i18n/tutti-service_fr_FR.properties | 28 +- 4 files changed, 265 insertions(+), 155 deletions(-) diff --git a/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl index 9b6aff9..5e60578 100644 --- a/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/genericFormatImportReport_fr.ftl @@ -20,16 +20,64 @@ #L% --> +<#macro renderErrors errorsEntries> +<table> + <tr> + <th>Ligne</th> + <th>Erreur</th> + </tr> + <#list errorsEntries as entry> + <tr> + <td>${entry.key}</td> + <td> + <ul> + <#list entry.value as error> + <li class="error"> + ${error} + </li> + </#list> + </ul> + </td> + </tr> + </#list> +</table> +</#macro> + +<#macro renderSimpleImportFile fileResult> + <#assign errorsEntries = fileResult.errorsEntries> +<ul> + <li>Nom du fichier : <span class="bold">${fileResult.filename}</span></li> + <#if !fileResult.imported> + <li class="error">Fichier non importé</li> + </ul> + <#return> + </#if> + <#if !fileResult.valid> + <li class="error">Fichier non valide</li> + </#if> + <#if errorsEntries?size != 0> + <li class="error">Nombre de lignes en erreurs : ${errorsEntries?size}</li> + </#if> +</ul> + <#if errorsEntries?size == 0> + <#return> + </#if> + <@renderErrors errorsEntries=errorsEntries/> +</#macro> + <#macro renderImportFile fileResult> <#assign errorsEntries = fileResult.errorsEntries> <ul> - <li>Nom du fichier : ${fileResult.filename}</li> - <#if !fileResult.imported??> + <li>Nom du fichier : <span class="bold">${fileResult.filename}</span></li> + <#if !fileResult.imported> <li class="error">Fichier non importé</li> </ul> <#return> </#if> <li>Nombre de lignes à importer : ${fileResult.linesCount}</li> + <#if !fileResult.valid> + <li class="error">Fichier non valide</li> + </#if> <#if errorsEntries?size != 0> <li class="error">Nombre de lignes en erreurs : ${errorsEntries?size}</li> </#if> @@ -37,50 +85,33 @@ <#if errorsEntries?size == 0> <#return> </#if> -<table> - <tr> - <th>Ligne</th> - <th>Erreur</th> - </tr> - <#list errorsEntries as entry> - <tr> - <td>${entry.key}</td> - <td> - <pre>${entry.value}</pre> - </td> - </tr> - </#list> -</table> + <@renderErrors errorsEntries=errorsEntries/> </#macro> <#macro renderReferentialImportFile fileResult> <#assign errorsEntries = fileResult.errorsEntries> <ul> <li>Nom du fichier : <span class="bold">${fileResult.filename}</span></li> - <li>Nombre de lignes à importer : ${fileResult.linesCount}</li> - <li>Nombre de lignes importées : ${fileResult.entitiesAddedEntries?size}</li> - <li>Nombre de lignes associées : ${fileResult.entitiesLinkedEntries?size}</li> + <#if !fileResult.imported> + <li>Fichier non importé</li> + </ul> + <#return> + </#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> + <#else> + <li class="error">Fichier non valide</li> + </#if> <#if errorsEntries?size != 0> - <li class="error">Nombre de lignes en erreurs : ${errorsEntries?size}</li> + <li class="error">Nombre de lignes en erreurs : ${errorsEntries?size}</li> </#if> </ul> <#if errorsEntries?size == 0> <#return> </#if> -<table> - <tr> - <th>Ligne</th> - <th>Erreur</th> - </tr> - <#list errorsEntries as entry> - <tr> - <td>${entry.key}</td> - <td> - <pre>${entry.value}</pre> - </td> - </tr> - </#list> -</table> + <@renderErrors errorsEntries=errorsEntries/> </#macro> <#macro renderReferentialGearList title entries> @@ -178,6 +209,32 @@ </table> </#macro> +<#macro renderImportFileResult fileResult anchorName> +<tr> + <td>${fileResult.filename}</td> + <td>${fileResult.mandatory?string('Oui', 'Non')}</td> + <#if fileResult.found> + <td class="valid"></td> + <#if fileResult.imported> + <td class="valid"></td> + <#if fileResult.valid> + <td class="valid"></td> + <#else> + <td class="notValid"></td> + </#if> + <#else> + <td class="notValid"></td> + <td class="unkwon"></td> + </#if> + <#else> + <td class="notValid"></td> + <td class="unkwon"></td> + <td class="unkwon"></td> + </#if> + <td><a href="#${anchorName}">Détails</a></td> +</tr> +</#macro> + <html> <head> <style type="text/css"> @@ -190,10 +247,23 @@ size: A4 landscape; } - h1 { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAAeCAYAAABEzX4WAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gsYESwznZhaYQAAC8VJREFUeNrtnHmQHPV1xz+vu+fanZm9b2l1YFlCSGBkkI3DYQpwqrI7rFwuK44ph8QmcQyuUCQYl3EO4xg7wQaDBSZCMahQIiiBjXZWoiiIywIZZbkMiAAxhyWxOliJPbTH3N0vf/x6tKPdjQMY5BGaV9PVU7/+Xb2/7+/73vd1zwrHmW3ZsoXu7m6SyeRFIhIHxgBUNSsiu4GDIpLv7u52i20eeeQRLrroonc95ubNm1m1ahUVe39MjkMQ1qtqN3CBqp4sIiuAw0BaVV8BBkTkGeBRVd0nIqOJRKKQTCarLMuyuru7JwCSyWRMRCw [...] - width: 100%; - text-align: center; + .valid { + width: 100px; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGrSURBVDjLvZPZLkNhFIV75zjvYm7VGFNCqoZUJ+roKUUpjRuqp61Wq0NKDMelGGqOxBSUIBKXWtWGZxAvobr8lWjChRgSF//dv9be+9trCwAI/vIE/26gXmviW5bqnb8yUK028qZjPfoPWEj4Ku5HBspgAz941IXZeze8N1bottSo8BTZviVWrEh546EO03EXpuJOdG63otJbjBKHkEp/Ml6yNYYzpuezWL4s5VMtT8acCMQcb5XL3eJE8VgBlR7BeMGW9Z4yT9y1CeyucuhdTGDxfftaBO7G4L+zg91UocxVmCiy51NpiP3n2treUPujL8x [...] + } + + .notValid { + width: 100px; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHdSURBVDjLpZNraxpBFIb3a0ggISmmNISWXmOboKihxpgUNGWNSpvaS6RpKL3Ry//Mh1wgf6PElaCyzq67O09nVjdVlJbSDy8Lw77PmfecMwZg/I/GDw3DCo8HCkZl/RlgGA0e3Yfv7+DbAfLrW+SXOvLTG+SHV/gPbuMZRnsyIDL/OASziMxkkKkUQTJJsLaGn8/iHz6nd+8mQv87Ahg2H9Th/BxZqxEkEgSrq/iVCvLsDK9awtvfxb2zjD2ARID+lVVlbabTgWYTv1rFL5fBUtHbbeTJCb3EQ3ovCnRC6xAgzJtOE+ztheYIEkqbFaS3vY2 [...] + } + + .unkwon { + width: 100px; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKkSURBVDjLpZPdT5JhGMb9W+BPaK3matVqndXWOOigA6fmJ9DUcrUMlrN0mNMsKTUznQpq6pyKAm8CIogmypcg8GIiX8rHRHjhVbPt6o01nMvZWge/k3vP9duuZ/edAyDnf/hjoCMP2Vr3gUDj3CdV6zT1xZ6iFDaKnLEkBFOmPfaZArWT5sw60iFP+BAbOzTcQSqDZzsNRyCNkcVoaGghzDlVQKylOHJrMrUZ2Yf52y6kc36IxpyoH1lHF7EBgyMKV4jCJ5U/1UVscU4IZOYEa3I1HtwI01hwxlDLhDoJD/wxGr5YGmOLAdRIrVCuhmD3JdA [...] + } + + .nextPage { + page-break-after: always; } .bold { @@ -205,6 +275,12 @@ font-weight: bold; } + h1 { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAAeCAYAAABEzX4WAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gsYESwznZhaYQAAC8VJREFUeNrtnHmQHPV1xz+vu+fanZm9b2l1YFlCSGBkkI3DYQpwqrI7rFwuK44ph8QmcQyuUCQYl3EO4xg7wQaDBSZCMahQIiiBjXZWoiiIywIZZbkMiAAxhyWxOliJPbTH3N0vf/x6tKPdjQMY5BGaV9PVU7/+Xb2/7+/73vd1zwrHmW3ZsoXu7m6SyeRFIhIHxgBUNSsiu4GDIpLv7u52i20eeeQRLrroonc95ubNm1m1ahUVe39MjkMQ1qtqN3CBqp4sIiuAw0BaVV8BBkTkGeBRVd0nIqOJRKKQTCarLMuyuru7JwCSyWRMRCw [...] + width: 100%; + text-align: center; + } + h1, h4 { color: ${blueColor}; font-weight: bold; @@ -227,7 +303,7 @@ } td, th { - padding: 1pt 5pt; + /*padding: 1pt 5pt;*/ border-left: 1px solid #ccc; border-right: 1px solid #ccc; } @@ -246,7 +322,7 @@ <h1>Rapport de d'import générique</h1> -<h2>Méta-données</h2> +<h2>Informations générales</h2> <ul> <li>Fichier: ${importConfiguration.importFile.name}</li> @@ -254,156 +330,173 @@ <li>Série de campagne: ${program.name}</li> </ul> -<h2>Format de l'archive</h2> - -<#if archiveLayoutValid> -<p>Le format de l'archive est correcte.</p> +<table align="center"> + <thead> + <tr> + <th>Fichier</th> + <th>Obligatoire</th> + <th>Présent</th> + <th>Importé</th> + <th>Valide</th> + <th>Détail</th> + </tr> + </thead> + <tbody> + <@renderImportFileResult fileResult=sampleCategoryFileResult anchorName="sampleCategoryFileResult"/> + <@renderImportFileResult fileResult=referentialTemporaryGearFileResult anchorName="referentialTemporaryGearFileResult"/> + <@renderImportFileResult fileResult=referentialTemporaryPersonFileResult anchorName="referentialTemporaryPersonFileResult"/> + <@renderImportFileResult fileResult=referentialTemporarySpeciesFileResult anchorName="referentialTemporarySpeciesFileResult"/> + <@renderImportFileResult fileResult=referentialTemporaryVesselFileResult anchorName="referentialTemporaryVesselFileResult"/> + <@renderImportFileResult fileResult=protocolFileResult anchorName="protocolFileResult"/> + <@renderImportFileResult fileResult=surveyFileResult anchorName="surveyFileResult"/> + <@renderImportFileResult fileResult=gearCaracteristicFileResult anchorName="gearCaracteristicFileResult"/> + <@renderImportFileResult fileResult=operationFileResult anchorName="operationFileResult"/> + <@renderImportFileResult fileResult=parameterFileResult anchorName="parameterFileResult"/> + <@renderImportFileResult fileResult=catchFileResult anchorName="catchFileResult"/> + <@renderImportFileResult fileResult=marineLitterFileResult anchorName="marineLitterFileResult"/> + <@renderImportFileResult fileResult=accidentalCatchFileResult anchorName="accidentalCatchFileResult"/> + <@renderImportFileResult fileResult=individualObservationFileResult anchorName="individualObservationFileResult"/> + </tbody> +</table> -<p>Liste des fichiers à valider:</p> -<ul> - <#list archiveFiles as file> - <li>${file}</li> - </#list> -</ul> -<#else> -<p>Le format de l'archive n'est pas valide.</p> +<h2 class="nextPage"></h2> -<p>Liste des erreurs détectées:</p> -<ul> - <#list archiveLayoutErrors as error> - <li class="error">${error}</li> - </#list> -</ul> -</#if> +<h2>Modèle de catégorisation <a name="sampleCategoryFileResult"></a></h2> +<@renderImportFile fileResult=sampleCategoryFileResult/> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Référentiel temporaire Engin</h2> +<h2>Référentiel temporaire Engin <a name="referentialTemporaryGearFileResult"></a></h2> <#assign fileResult = referentialTemporaryGearFileResult> <@renderReferentialImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> +<#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> -<h2 style="page-break-after:always"/> +<h2 class="nextPage" style="width: 100%"></h2> -<h2>Référentiel temporaire Personne</h2> +<h2>Référentiel temporaire Personne <a name="referentialTemporaryPersonFileResult"></a></h2> <#assign fileResult = referentialTemporaryPersonFileResult> <@renderReferentialImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0><p>Des personnes temporaires ont été importées.</p> +<#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> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Référentiel temporaire Espèce</h2> +<h2>Référentiel temporaire Taxon <a name="referentialTemporarySpeciesFileResult"></a></h2> <#assign fileResult = referentialTemporarySpeciesFileResult> <@renderReferentialImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0><p>Des espèces temporaires ont été importées.</p> - <@renderReferentialSpeciesList title="Espèces ajoutées" entries=fileResult.entitiesAddedEntries/> - <@renderReferentialSpeciesList title="Espèces associées" entries=fileResult.entitiesLinkedEntries/> +<#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> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Référentiel temporaire Navire</h2> +<h2>Référentiel temporaire Navire <a name="referentialTemporaryVesselFileResult"></a></h2> <#assign fileResult = referentialTemporaryVesselFileResult> <@renderReferentialImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0><p>Des navires temporaires ont été importés.</p> +<#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> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> + +<h2>Protocole <a name="protocolFileResult"></a></h2> +<#assign fileResult = protocolFileResult> +<@renderSimpleImportFile fileResult=fileResult/> -<h2>Protocole</h2> -<#if protocolImported> +<#if fileResult.imported && fileResult.valid> <p>Un protocol nommé ${protocol.name} a été importé et sélectionné pour l'import.</p> -<#else> -<p>Pas de protocole utilisé.</p> </#if> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Fichier des campagnes</h2> +<h2>Fichier des campagnes <a name="surveyFileResult"></a></h2> <#assign fileResult = surveyFileResult> <@renderImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> +<#if fileResult.valid> <p>Des campagnes ont été importées.</p> <strong>TODO</strong> </#if> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Fichier des mises en oeuvre d'engin</h2> +<h2>Fichier des mises en oeuvre d'engin <a name="gearCaracteristicFileResult"></a></h2> <#assign fileResult = gearCaracteristicFileResult> <@renderImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> +<#if fileResult.valid> <p>Des mises en oeuvre d'engin ont été importées.</p> <strong>TODO</strong> </#if> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Fichier des traits</h2> +<h2>Fichier des traits <a name="operationFileResult"></a></h2> <#assign fileResult = operationFileResult> <@renderImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> +<#if fileResult.valid> <p>Des traits ont été importés.</p> <strong>TODO</strong> </#if> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Fichier des caractéristiques de trait</h2> +<h2>Fichier des caractéristiques de trait <a name="parameterFileResult"></a></h2> <#assign fileResult = parameterFileResult> <@renderImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> +<#if fileResult.valid> <p>Des caractéristiques de trait ont été importées.</p> <strong>TODO</strong> </#if> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Fichier des lôts capture</h2> +<h2>Fichier des lôts capture <a name="catchFileResult"></a></h2> <#assign fileResult = catchFileResult> <@renderImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> +<#if fileResult.valid> <p>Des lôts capture ont été importées.</p> <strong>TODO</strong> </#if> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Fichier des macro déchets</h2> +<h2>Fichier des macro déchets <a name="marineLitterFileResult"></a></h2> <#assign fileResult = marineLitterFileResult> <@renderImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> +<#if fileResult.valid> <p>Des macro déchets ont été importés.</p> <strong>TODO</strong> </#if> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Fichier des captures accidentelles</h2> +<h2>Fichier des captures accidentelles <a name="accidentalCatchFileResult"></a></h2> <#assign fileResult = accidentalCatchFileResult> <@renderImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> +<#if fileResult.valid> <p>Des captures accidentelles ont été importées.</p> <strong>TODO</strong> </#if> -<h2 style="page-break-after:always"/> +<h2 class="nextPage"></h2> -<h2>Fichier des observations individuelles</h2> +<h2>Fichier des observations individuelles <a name="individualObservationFileResult"></a></h2> <#assign fileResult = individualObservationFileResult> <@renderImportFile fileResult=fileResult/> -<#if fileResult.linesCount != 0> -<p>Des observations individuelles ont été importés.</p> +<#if fileResult.valid> +<p>Des observations individuelles ont été importées.</p> <strong>TODO</strong> </#if> + </body> </html> diff --git a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl index 7fb07af..6147716 100644 --- a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl @@ -209,6 +209,32 @@ </table> </#macro> +<#macro renderImportFileResult fileResult anchorName> +<tr> + <td>${fileResult.filename}</td> + <td>${fileResult.mandatory?string('Oui', 'Non')}</td> + <#if fileResult.found> + <td class="valid"></td> + <#if fileResult.imported> + <td class="valid"></td> + <#if fileResult.valid> + <td class="valid"></td> + <#else> + <td class="notValid"></td> + </#if> + <#else> + <td class="notValid"></td> + <td class="unkwon"></td> + </#if> + <#else> + <td class="notValid"></td> + <td class="unkwon"></td> + <td class="unkwon"></td> + </#if> + <td><a href="#${anchorName}">Détails</a></td> +</tr> +</#macro> + <html> <head> <style type="text/css"> @@ -221,16 +247,6 @@ size: A4 landscape; } - .center { - text-align: center; - } - - h1 { - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAAeCAYAAABEzX4WAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gsYESwznZhaYQAAC8VJREFUeNrtnHmQHPV1xz+vu+fanZm9b2l1YFlCSGBkkI3DYQpwqrI7rFwuK44ph8QmcQyuUCQYl3EO4xg7wQaDBSZCMahQIiiBjXZWoiiIywIZZbkMiAAxhyWxOliJPbTH3N0vf/x6tKPdjQMY5BGaV9PVU7/+Xb2/7+/73vd1zwrHmW3ZsoXu7m6SyeRFIhIHxgBUNSsiu4GDIpLv7u52i20eeeQRLrroonc95ubNm1m1ahUVe39MjkMQ1qtqN3CBqp4sIiuAw0BaVV8BBkTkGeBRVd0nIqOJRKKQTCarLMuyuru7JwCSyWRMRCw [...] - width: 100%; - text-align: center; - } - .valid { width: 100px; background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGrSURBVDjLvZPZLkNhFIV75zjvYm7VGFNCqoZUJ+roKUUpjRuqp61Wq0NKDMelGGqOxBSUIBKXWtWGZxAvobr8lWjChRgSF//dv9be+9trCwAI/vIE/26gXmviW5bqnb8yUK028qZjPfoPWEj4Ku5HBspgAz941IXZeze8N1bottSo8BTZviVWrEh546EO03EXpuJOdG63otJbjBKHkEp/Ml6yNYYzpuezWL4s5VMtT8acCMQcb5XL3eJE8VgBlR7BeMGW9Z4yT9y1CeyucuhdTGDxfftaBO7G4L+zg91UocxVmCiy51NpiP3n2treUPujL8x [...] @@ -255,6 +271,16 @@ font-weight: bold; } + .nextPage { + page-break-after: always; + } + + h1 { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAAeCAYAAABEzX4WAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gsYESwznZhaYQAAC8VJREFUeNrtnHmQHPV1xz+vu+fanZm9b2l1YFlCSGBkkI3DYQpwqrI7rFwuK44ph8QmcQyuUCQYl3EO4xg7wQaDBSZCMahQIiiBjXZWoiiIywIZZbkMiAAxhyWxOliJPbTH3N0vf/x6tKPdjQMY5BGaV9PVU7/+Xb2/7+/73vd1zwrHmW3ZsoXu7m6SyeRFIhIHxgBUNSsiu4GDIpLv7u52i20eeeQRLrroonc95ubNm1m1ahUVe39MjkMQ1qtqN3CBqp4sIiuAw0BaVV8BBkTkGeBRVd0nIqOJRKKQTCarLMuyuru7JwCSyWRMRCw [...] + width: 100%; + text-align: center; + } + h1, h4 { color: ${blueColor}; font-weight: bold; @@ -290,10 +316,6 @@ background: #fff; } - .nextPage { - page-break-after: always; - } - </style> </head> <body> @@ -308,32 +330,6 @@ <li>Série de campagne: ${program.name}</li> </ul> -<#macro renderImportFileResult fileResult anchorName> -<tr> - <td>${fileResult.filename}</td> - <td>${fileResult.mandatory?string('Oui', 'Non')}</td> - <#if fileResult.found> - <td class="valid"></td> - <#if fileResult.imported> - <td class="valid"></td> - <#if fileResult.valid> - <td class="valid"></td> - <#else> - <td class="notValid"></td> - </#if> - <#else> - <td class="notValid"></td> - <td class="unkwon"></td> - </#if> - <#else> - <td class="notValid"></td> - <td class="unkwon"></td> - <td class="unkwon"></td> - </#if> - <td><a href="#${anchorName}">Détails</a></td> -</tr> -</#macro> - <table align="center"> <thead> <tr> 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 7009559..ed06934 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 @@ -172,20 +172,25 @@ tutti.service.genericFormat.import.accidentalCatches= tutti.service.genericFormat.import.catches= tutti.service.genericFormat.import.computeReport= tutti.service.genericFormat.import.cruises= +tutti.service.genericFormat.import.error.beginDateNotDefined= tutti.service.genericFormat.import.error.cruiseAlreadyExist= tutti.service.genericFormat.import.error.cruiseAlreadyImported= +tutti.service.genericFormat.import.error.cruiseNotDefined= tutti.service.genericFormat.import.error.cruiseNotFound= tutti.service.genericFormat.import.error.cruiseNotValid= tutti.service.genericFormat.import.error.fishingOperationAlreadyImported= tutti.service.genericFormat.import.error.fishingOperationNotFoundInCruise= tutti.service.genericFormat.import.error.fishingOperationNotValid= tutti.service.genericFormat.import.error.gearNotFoundInCruise= +tutti.service.genericFormat.import.error.mismatchProgram= +tutti.service.genericFormat.import.error.programNotDefined= tutti.service.genericFormat.import.gearCaracteristics= tutti.service.genericFormat.import.individualObservations= tutti.service.genericFormat.import.marineLitters= tutti.service.genericFormat.import.operations= tutti.service.genericFormat.import.parameters= tutti.service.genericFormat.import.protocol= +tutti.service.genericFormat.import.protocol.notValid= tutti.service.genericFormat.import.sampleCategoryModel= tutti.service.genericFormat.import.sampleCategoryModel.error.caracteristicNotMatching= tutti.service.genericFormat.import.sampleCategoryModel.error.codeNotMatching= @@ -214,6 +219,10 @@ tutti.service.genericFormat.persist.operation.speciesBatches= tutti.service.genericFormat.remove.existingCruise.fishingOperation= tutti.service.genericFormat.reuse.protocol= tutti.service.genericFormat.skip.import.protocol= +tutti.service.genericFormat.skip.import.temporaryGears= +tutti.service.genericFormat.skip.import.temporaryPersons= +tutti.service.genericFormat.skip.import.temporarySpecies= +tutti.service.genericFormat.skip.import.temporaryVessels= tutti.service.genericFormat.validate.accidentalCatches= tutti.service.genericFormat.validate.catches= tutti.service.genericFormat.validate.computeReport= @@ -322,8 +331,10 @@ tutti.service.referential.import.gear.cannotDeleteNotExisting.error= tutti.service.referential.import.gear.error.cannotDeleteWithoutId= tutti.service.referential.import.gear.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.gear.error.existingName= +tutti.service.referential.import.gear.error.id.alreaydAdded= tutti.service.referential.import.gear.error.idNotNegative= tutti.service.referential.import.gear.error.idNotTemporary= +tutti.service.referential.import.gear.error.name.alreaydAdded= tutti.service.referential.import.gear.error.noId= tutti.service.referential.import.gear.error.noName= tutti.service.referential.import.gear.error.notExistingId= @@ -335,8 +346,10 @@ tutti.service.referential.import.person.cannotDeleteNotExisting.error= tutti.service.referential.import.person.error.cannotDeleteWithoutId= tutti.service.referential.import.person.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.person.error.existingName= +tutti.service.referential.import.person.error.id.alreaydAdded= tutti.service.referential.import.person.error.idNotNegative= tutti.service.referential.import.person.error.idNotTemporary= +tutti.service.referential.import.person.error.name.alreaydAdded= tutti.service.referential.import.person.error.noId= tutti.service.referential.import.person.error.noName= tutti.service.referential.import.person.error.notExistingId= @@ -349,8 +362,10 @@ tutti.service.referential.import.species.error= tutti.service.referential.import.species.error.cannotDeleteWithoutId= tutti.service.referential.import.species.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.species.error.existingName= +tutti.service.referential.import.species.error.id.alreaydAdded= tutti.service.referential.import.species.error.idNotNegative= tutti.service.referential.import.species.error.idNotTemporary= +tutti.service.referential.import.species.error.name.alreaydAdded= tutti.service.referential.import.species.error.noId= tutti.service.referential.import.species.error.noName= tutti.service.referential.import.species.error.notExistingId= @@ -362,7 +377,9 @@ tutti.service.referential.import.vessel.codePrefixMissing.error= tutti.service.referential.import.vessel.error.cannotDeleteWithoutId= tutti.service.referential.import.vessel.error.cannotUpdateOrDeleteForGenericFormatImport= tutti.service.referential.import.vessel.error.existingRegistrationCode= +tutti.service.referential.import.vessel.error.id.alreaydAdded= tutti.service.referential.import.vessel.error.idNotTemporary= +tutti.service.referential.import.vessel.error.name.alreaydAdded= tutti.service.referential.import.vessel.error.noId= tutti.service.referential.import.vessel.error.noRegistrationCode= tutti.service.referential.import.vessel.error.notExistingId= 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 1b27464..aeb13b0 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 @@ -11,17 +11,6 @@ tutti.io.mkDir.error=Erreur à la création du dossier %s tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. tutti.property.attachment=Pièce jointe tutti.property.caracteristic=Caractéristique -tutti.service.genericFormat.import.error.programNotDefined=La série de campagne n'est pas renseignée -tutti.service.genericFormat.import.error.cruiseNotDefined=La campagne n'est pas définie -tutti.service.genericFormat.import.error.beginDateNotDefined=La date de début de campagne n'est pas définie -tutti.service.referential.import.gear.error.name.alreaydAdded=Un engin a déjà été importé avec ce nom %s -tutti.service.referential.import.gear.error.id.alreaydAdded=Un engin a déjà été importé avec cet identifiant %s -tutti.service.referential.import.person.error.id.alreaydAdded=Une personne a déjà été importée avec cet identifiant %s -tutti.service.referential.import.person.error.name.alreaydAdded=Une personne a déjà été importée avec ce prénom - nom %s -tutti.service.referential.import.species.error.name.alreaydAdded=Un taxon a déjà été importé avec ce nom %s -tutti.service.referential.import.species.error.id.alreaydAdded=Un taxon a déjà été importé avec cet identifiant %s -tutti.service.referential.import.vessel.error.id.alreaydAdded=Un navire a déjà été importé avec cet identifiant %s -tutti.service.referential.import.vessel.error.name.alreaydAdded=Un navire a déjà été importé avec cette immatriculation %s tutti.property.country=Pays tutti.property.cruise=Campagne tutti.property.date=Date @@ -146,15 +135,18 @@ tutti.service.genericFormat.import.accidentalCatches=Import des captures acciden tutti.service.genericFormat.import.catches=Import des captures tutti.service.genericFormat.import.computeReport=Génération du rapport d'import tutti.service.genericFormat.import.cruises=Import des campagnes +tutti.service.genericFormat.import.error.beginDateNotDefined=La date de début de campagne n'est pas définie tutti.service.genericFormat.import.error.cruiseAlreadyExist=Il existe déjà une campagne avec ce nom %s tutti.service.genericFormat.import.error.cruiseAlreadyImported=La campagne avec ce nom %s a déjà été importée +tutti.service.genericFormat.import.error.cruiseNotDefined=La campagne n'est pas définie tutti.service.genericFormat.import.error.cruiseNotFound=La campagne (année\: %s, série\: %s, série partielle %s) n'existe pas -tutti.service.genericFormat.import.error.mismatchProgram=La campagne (année\: %s, série\: %s, série partielle %s) devrait utiliser la série %s (code %s) tutti.service.genericFormat.import.error.cruiseNotValid=La campagne n'est pas valide \: <ul>%s</ul> tutti.service.genericFormat.import.error.fishingOperationAlreadyImported=Un trait %s - %s - %s -%s a déjà été importé dans la campagne %s tutti.service.genericFormat.import.error.fishingOperationNotFoundInCruise=Le trait %s - %s - %s -%s n'existe pas dans la campagne %s tutti.service.genericFormat.import.error.fishingOperationNotValid=Le trait n'est pas valide \:\n%s tutti.service.genericFormat.import.error.gearNotFoundInCruise=L'engin %s (position %s) non trouvé dans la campagne %s +tutti.service.genericFormat.import.error.mismatchProgram=La campagne (année\: %s, série\: %s, série partielle %s) devrait utiliser la série %s (code %s) +tutti.service.genericFormat.import.error.programNotDefined=La série de campagne n'est pas renseignée tutti.service.genericFormat.import.gearCaracteristics=Import des caractéristiques d'engin tutti.service.genericFormat.import.individualObservations=Import des observations individuelles tutti.service.genericFormat.import.marineLitters=Import des macro-déchets @@ -190,6 +182,10 @@ tutti.service.genericFormat.persist.operation.speciesBatches=Sauvegarde des lots tutti.service.genericFormat.remove.existingCruise.fishingOperation=Suppression du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.reuse.protocol=Réutilisation du protocol existant %s tutti.service.genericFormat.skip.import.protocol=Pas de protocole à importer +tutti.service.genericFormat.skip.import.temporaryGears= +tutti.service.genericFormat.skip.import.temporaryPersons= +tutti.service.genericFormat.skip.import.temporarySpecies= +tutti.service.genericFormat.skip.import.temporaryVessels= tutti.service.genericFormat.validate.accidentalCatches=Validation du fichier <strong>accidentalCatch.csv</strong> - ligne %s tutti.service.genericFormat.validate.catches=Validation du fichier <strong>catch.csv</strong> - ligne %s tutti.service.genericFormat.validate.computeReport=Générigation du rapport de validation @@ -297,8 +293,10 @@ tutti.service.referential.import.error.vessel.used=Le navire temporaire '%s' est tutti.service.referential.import.gear.cannotDeleteNotExisting.error=L'engin temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.gear.error.cannotDeleteWithoutId=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.gear.error.existingName=L'engin '%s' n'a pas été ajouté au référentiel car il est déjà présent +tutti.service.referential.import.gear.error.id.alreaydAdded=Un engin a déjà été importé avec cet identifiant %s tutti.service.referential.import.gear.error.idNotNegative=L'identifiant d'un engin temporaire doit être négatif tutti.service.referential.import.gear.error.idNotTemporary=L'identifiant %s n'est pas un identifiant temporaire d'engin +tutti.service.referential.import.gear.error.name.alreaydAdded=Un engin a déjà été importé avec ce nom %s tutti.service.referential.import.gear.error.noId=Un identifiant temporaire d'engin est obligatoire tutti.service.referential.import.gear.error.noName=Le nom de l'engin est obligatoire tutti.service.referential.import.gear.error.notExistingId=L'identifiant '%s' n'a pas été trouvé parmi les engins temporaires @@ -309,8 +307,10 @@ tutti.service.referential.import.gears.error=Erreur lors de l'import des engins tutti.service.referential.import.person.cannotDeleteNotExisting.error=La personne temporaire d'identifiant %s n'extsite pas, impossible de la supprimer tutti.service.referential.import.person.error.cannotDeleteWithoutId=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.person.error.existingName=Une personne avec ce nom %s (nom + prénom) existe déjà +tutti.service.referential.import.person.error.id.alreaydAdded=Une personne a déjà été importée avec cet identifiant %s tutti.service.referential.import.person.error.idNotNegative=L'identifiant d'une personne temporaire doit être négatif tutti.service.referential.import.person.error.idNotTemporary=L'identifiant %s n'est pas un identifiant temporaire de personne +tutti.service.referential.import.person.error.name.alreaydAdded=Une personne a déjà été importée avec ce prénom - nom %s tutti.service.referential.import.person.error.noId=Un identifiant temporaire de personne est obligatoire tutti.service.referential.import.person.error.noName=Le nom de la personne (prénom ou nom) est obligatoire tutti.service.referential.import.person.error.notExistingId=L'identifiant '%s' n'a pas été trouvé parmi les personnes temporaires @@ -322,8 +322,10 @@ tutti.service.referential.import.species.cannotDeleteNotExisting.error=L'espèce tutti.service.referential.import.species.error=Erreur lors de l'import des espèces du fichier %s tutti.service.referential.import.species.error.cannotDeleteWithoutId=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.species.error.existingName=L'espèce '%s' n'a pas été ajoutée au référentiel car elle est déjà présente +tutti.service.referential.import.species.error.id.alreaydAdded=Un taxon a déjà été importé avec cet identifiant %s tutti.service.referential.import.species.error.idNotNegative=L'identifiant d'une espèce temporaire doit être négatif tutti.service.referential.import.species.error.idNotTemporary=L'identifiant %s n'est pas un identifiant temporaire de taxon +tutti.service.referential.import.species.error.name.alreaydAdded=Un taxon a déjà été importé avec ce nom %s tutti.service.referential.import.species.error.noId=Un identifiant temporaire de taxon est obligatoire tutti.service.referential.import.species.error.noName=Le nom pour l'espèce %s est obligatoire. tutti.service.referential.import.species.error.notExistingId=L'identifiant '%s' n'a pas été trouvé parmi les espèces temporaires @@ -333,7 +335,9 @@ tutti.service.referential.import.vessel.cannotDeleteNotExisting.error=Le navire tutti.service.referential.import.vessel.codePrefixMissing.error=L'identifiant d'un navire temporaire doit commencer par %1$s \: %2$s tutti.service.referential.import.vessel.error.cannotDeleteWithoutId=L'identifiant est obligatoire pour la suppression tutti.service.referential.import.vessel.error.existingRegistrationCode=Le navire '%s' n'a pas été ajouté au référentiel car il est déjà présent +tutti.service.referential.import.vessel.error.id.alreaydAdded=Un navire a déjà été importé avec cet identifiant %s tutti.service.referential.import.vessel.error.idNotTemporary=L'identifiant %s n'est pas un identifiant temporaire de navire +tutti.service.referential.import.vessel.error.name.alreaydAdded=Un navire a déjà été importé avec cette immatriculation %s tutti.service.referential.import.vessel.error.noId=Un identifiant temporaire de navire est obligatoire tutti.service.referential.import.vessel.error.noRegistrationCode=L'immatriculation est obligatoire tutti.service.referential.import.vessel.error.notExistingId=L'identifiant '%s' n'a pas été trouvé parmi les navires temporaires -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.