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 17510cb2cf232dce93138aeded2dba4a88702e11 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 25 19:54:10 2015 +0100 introduce result support + begin of validate report --- .../genericformat/GenericFormatImportResult.java | 116 +------ .../genericformat/GenericFormatResultSupport.java | 184 ++++++++++++ .../genericformat/GenericFormatServiceSupport.java | 2 +- .../GenericFormatValidateFileResult.java | 62 +--- .../ftl/genericFormatValidateReport_fr.ftl | 333 ++++++++++++++++++++- 5 files changed, 511 insertions(+), 186 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java index 98f0aee..f0aed91 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportResult.java @@ -5,20 +5,9 @@ import com.google.common.collect.Iterables; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -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; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; - -import java.io.File; -import java.io.Serializable; + import java.util.Collection; -import java.util.Date; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; @@ -28,79 +17,15 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class GenericFormatImportResult implements Serializable { +public class GenericFormatImportResult extends GenericFormatResultSupport { private static final long serialVersionUID = 1L; private final Map<String, GenericFormatImportCruiseResult> cruiseResults; - private final Set<String> errors; - - private final TuttiProtocol protocol; - - private final GenericFormatReferentialImportResult<Gear, Integer> importedGears; - - private final GenericFormatReferentialImportResult<Person, Integer> importedPersons; - - private final GenericFormatReferentialImportResult<Species, Integer> importedSpecies; - - private final GenericFormatReferentialImportResult<Vessel, String> importedVessels; - - private final GenericFormatImportRequest importRequest; - - private boolean valid; - public GenericFormatImportResult(GenericFormatImportContext importContext) { - - this.importRequest = importContext.getImportRequest(); + super(importContext); this.cruiseResults = new LinkedHashMap<>(); - this.errors = new LinkedHashSet<>(); - this.protocol = importContext.getImportedProtocol(); - this.importedGears = importContext.getImportedGears(); - this.importedPersons = importContext.getImportedPersons(); - this.importedSpecies = importContext.getImportedSpecies(); - this.importedVessels = importContext.getImportedVessels(); - - } - - public GenericFormatArchive getArchive() { - return importRequest.getArchive(); - } - - public SampleCategoryModel getSampleCategoryModel() { - return importRequest.getSampleCategoryModel(); - } - - public Set<Cruise> getExistingCruises() { - return importRequest.getExistingCruises(); - } - - public TuttiProtocol getOldProtocol() { - return importRequest.getOldProtocol(); - } - - public Program getProgram() { - return importRequest.getProgram(); - } - - public Date getStartingDate() { - return importRequest.getStartingDate(); - } - - public boolean isCleanWeights() { - return importRequest.isCleanWeights(); - } - - public boolean isCheckWeights() { - return importRequest.isCheckWeights(); - } - - public boolean isOverrideData() { - return importRequest.isOverrideData(); - } - - public File getReportFile() { - return importRequest.getReportFile(); } public Set<Cruise> getImportedCruises() { @@ -138,34 +63,6 @@ public class GenericFormatImportResult implements Serializable { return ImmutableSet.copyOf(importCruiseResult.getFishingOperationIds()); } - public Set<String> getErrors() { - return ImmutableSet.copyOf(errors); - } - - public void addError(String error) { - errors.add(error); - } - - public TuttiProtocol getProtocol() { - return protocol; - } - - public GenericFormatReferentialImportResult<Gear, Integer> getImportedGears() { - return importedGears; - } - - public GenericFormatReferentialImportResult<Person, Integer> getImportedPersons() { - return importedPersons; - } - - public GenericFormatReferentialImportResult<Species, Integer> getImportedSpecies() { - return importedSpecies; - } - - public GenericFormatReferentialImportResult<Vessel, String> getImportedVessels() { - return importedVessels; - } - public void addFishingOperationCheckError(Cruise cruise, String fishingOperationId, String checkError) { GenericFormatImportCruiseResult importedCruiseResult = getImportedCruiseResult(cruise.getId()); @@ -182,11 +79,4 @@ public class GenericFormatImportResult implements Serializable { } - public boolean isValid() { - return valid; - } - - public void setValid(boolean valid) { - this.valid = valid; - } } 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 new file mode 100644 index 0000000..efe8e1e --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatResultSupport.java @@ -0,0 +1,184 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.entities.data.Cruise; +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; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; + +import java.io.File; +import java.io.Serializable; +import java.util.Date; +import java.util.Set; + +/** + * Created on 2/25/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public abstract class GenericFormatResultSupport implements Serializable { + + private static final long serialVersionUID = 1L; + + private boolean valid; + + private GenericFormatImportRequest importRequest; + + private final TuttiProtocol protocol; + + private final GenericFormatReferentialImportResult<Gear, Integer> temporaryGearsImported; + + private final GenericFormatReferentialImportResult<Person, Integer> temporaryPersonsImported; + + private final GenericFormatReferentialImportResult<Species, Integer> temporarySpeciesImported; + + private final GenericFormatReferentialImportResult<Vessel, String> temporaryVesselsImported; + + private final GenericFormatFileResult surveyFileResult; + + private final GenericFormatFileResult gearCaracteristicFileResult; + + private final GenericFormatFileResult operationFileResult; + + private final GenericFormatFileResult parameterFileResult; + + private final GenericFormatFileResult catchFileResult; + + private final GenericFormatFileResult marineLitterFileResult; + + private final GenericFormatFileResult individualObservationFileResult; + + private final GenericFormatFileResult accidentalCatchFileResult; + + protected GenericFormatResultSupport(GenericFormatImportContext validateFileContext) { + + this.importRequest = validateFileContext.getImportRequest(); + this.protocol = validateFileContext.getImportedProtocol(); + this.temporaryGearsImported = validateFileContext.getImportedGears(); + this.temporaryPersonsImported = validateFileContext.getImportedPersons(); + this.temporarySpeciesImported = validateFileContext.getImportedSpecies(); + this.temporaryVesselsImported = validateFileContext.getImportedVessels(); + this.surveyFileResult = validateFileContext.getSurveyFileResult(); + this.gearCaracteristicFileResult = validateFileContext.getGearCaracteristicFileResult(); + this.operationFileResult = validateFileContext.getOperationFileResult(); + this.parameterFileResult = validateFileContext.getParameterFileResult(); + this.catchFileResult = validateFileContext.getCatchFileResult(); + this.marineLitterFileResult = validateFileContext.getMarineLitterFileResult(); + this.individualObservationFileResult = validateFileContext.getIndividualObservationFileResult(); + this.accidentalCatchFileResult = validateFileContext.getAccidentalCatchFileResult(); + + } + + public boolean isProtocolImported() { + return protocol != null; + } + + public TuttiProtocol getProtocol() { + return protocol; + } + + public GenericFormatReferentialImportResult<Gear, Integer> getTemporaryGearsImported() { + return temporaryGearsImported; + } + + public GenericFormatReferentialImportResult<Person, Integer> getTemporaryPersonsImported() { + return temporaryPersonsImported; + } + + public GenericFormatReferentialImportResult<Species, Integer> getTemporarySpeciesImported() { + return temporarySpeciesImported; + } + + public GenericFormatReferentialImportResult<Vessel, String> getTemporaryVesselsImported() { + return temporaryVesselsImported; + } + + public GenericFormatFileResult getSurveyFileResult() { + return surveyFileResult; + } + + public GenericFormatFileResult getGearCaracteristicFileResult() { + return gearCaracteristicFileResult; + } + + public GenericFormatFileResult getOperationFileResult() { + return operationFileResult; + } + + public GenericFormatFileResult getParameterFileResult() { + return parameterFileResult; + } + + public GenericFormatFileResult getCatchFileResult() { + return catchFileResult; + } + + public GenericFormatFileResult getMarineLitterFileResult() { + return marineLitterFileResult; + } + + public GenericFormatFileResult getIndividualObservationFileResult() { + return individualObservationFileResult; + } + + public GenericFormatFileResult getAccidentalCatchFileResult() { + return accidentalCatchFileResult; + } + + public File getReportFile() { + return importRequest.getReportFile(); + } + + public GenericFormatImportConfiguration getImportConfiguration() { + return importRequest.getImportConfiguration(); + } + + public SampleCategoryModel getSampleCategoryModel() { + return importRequest.getSampleCategoryModel(); + } + + public Set<Cruise> getExistingCruises() { + return importRequest.getExistingCruises(); + } + + public TuttiProtocol getOldProtocol() { + return importRequest.getOldProtocol(); + } + + public Program getProgram() { + return importRequest.getProgram(); + } + + public Date getStartingDate() { + return importRequest.getStartingDate(); + } + + public boolean isCleanWeights() { + return importRequest.isCleanWeights(); + } + + public boolean isCheckWeights() { + return importRequest.isCheckWeights(); + } + + public boolean isOverrideData() { + return importRequest.isOverrideData(); + } + + public GenericFormatArchive getArchive() { + return importRequest.getArchive(); + } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + this.valid = valid; + } + +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatServiceSupport.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatServiceSupport.java index e11c28e..032264c 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatServiceSupport.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatServiceSupport.java @@ -31,7 +31,7 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class GenericFormatServiceSupport extends AbstractTuttiService { +public abstract class GenericFormatServiceSupport extends AbstractTuttiService { /** Logger. */ private static final Log log = LogFactory.getLog(GenericFormatServiceSupport.class); 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 2d744f3..50ef390 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 @@ -1,14 +1,7 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.collect.ImmutableSet; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -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 java.io.File; -import java.io.Serializable; -import java.util.Date; import java.util.LinkedHashSet; import java.util.Set; @@ -18,19 +11,15 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class GenericFormatValidateFileResult implements Serializable { +public class GenericFormatValidateFileResult extends GenericFormatResultSupport { private static final long serialVersionUID = 1L; private final Set<String> archiveFormatErrors; - private boolean valid; - - private GenericFormatImportRequest importRequest; - public GenericFormatValidateFileResult(GenericFormatValidateFileContext validateFileContext) { + super(validateFileContext); - this.importRequest = validateFileContext.getImportRequest(); this.archiveFormatErrors = new LinkedHashSet<>(); } @@ -39,51 +28,4 @@ public class GenericFormatValidateFileResult implements Serializable { return ImmutableSet.copyOf(archiveFormatErrors); } - public File getReportFile() { - return importRequest.getReportFile(); - } - - public GenericFormatArchive getArchive() { - return importRequest.getArchive(); - } - - public SampleCategoryModel getSampleCategoryModel() { - return importRequest.getSampleCategoryModel(); - } - - public Set<Cruise> getExistingCruises() { - return importRequest.getExistingCruises(); - } - - public TuttiProtocol getOldProtocol() { - return importRequest.getOldProtocol(); - } - - public Program getProgram() { - return importRequest.getProgram(); - } - - public Date getStartingDate() { - return importRequest.getStartingDate(); - } - - public boolean isCleanWeights() { - return importRequest.isCleanWeights(); - } - - public boolean isCheckWeights() { - return importRequest.isCheckWeights(); - } - - public boolean isOverrideData() { - return importRequest.isOverrideData(); - } - - public boolean isValid() { - return valid; - } - - public void setValid(boolean valid) { - this.valid = valid; - } } diff --git a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl index 8add13d..e968ed3 100644 --- a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl +++ b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl @@ -19,14 +19,171 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> + +<#macro renderImportFile fileResult> + <#assign errorsEntries = fileResult.errorsEntries> +<ul> + <li>Nom du fichier : ${fileResult.filename}</li> + <li>Nombre de lignes à importer : ${fileResult.linesCount}</li> + <#if errorsEntries?size != 0> + <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> +</#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 errorsEntries?size != 0> + <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> +</#macro> + +<#macro renderReferentialGearList title entries> + <#if entries?size == 0> + <#return> + </#if> +<h4>${title}</h4> +<table> + <tr> + <th>Identifiant d'import</th> + <th>Nom</th> + <th>Libellé</th> + <th>Engin scientifique</th> + <th>Identifiant en base</th> + </tr> + <#list entries as entry> + <tr> + <td class="number">${entry.key}</td> + <td>${entry.value.name}</td> + <td>${entry.value.label}</td> + <td>${entry.value.scientificGear?string('Oui', 'Non')}</td> + <td class="number bold">${entry.value.id}</td> + </tr> + </#list> +</table> +</#macro> + +<#macro renderReferentialPersonList title entries> + + <#if entries?size == 0> + <#return> + </#if> +<h4>${title}</h4> +<table> + <tr> + <th>Identifiant d'import</th> + <th>Prénom</th> + <th>Nom</th> + <th>Identifiant en base</th> + </tr> + <#list entries as entry> + <tr> + <td class="number">${entry.key}</td> + <td>${entry.value.firstName}</td> + <td>${entry.value.lastName}</td> + <td class="number bold">${entry.value.id}</td> + </tr> + </#list> +</table> +</#macro> + +<#macro renderReferentialSpeciesList title entries> + <#if entries?size == 0> + <#return> + </#if> +<h4>${title}</h4> +<table> + <tr> + <th>Identifiant d'import</th> + <th>Nom</th> + <th>Identifiant en base</th> + </tr> + <#list entries as entry> + <tr> + <td class="number">${entry.key}</td> + <td>${entry.value.name}</td> + <td class="number bold">${entry.value.id}</td> + </tr> + </#list> +</table> +</#macro> + +<#macro renderReferentialVesselList title entries> + <#if entries?size == 0> + <#return> + </#if> +<h4>${title}</h4> +<table> + <tr> + <th>Identifiant d'import</th> + <th>Nom</th> + <th>Immatriculation internationale</th> + <th>Navire scientifique</th> + <th>Identifiant en base</th> + </tr> + <#list entries as entry> + <tr> + <td class="number">${entry.key}</td> + <td>${entry.value.name}</td> + <td>${entry.value.internationalRegistrationCode}</td> + <td>${entry.value.scientificVessel?string('Oui', 'Non')}</td> + <td class="number bold">${entry.value.id}</td> + </tr> + </#list> +</table> +</#macro> + <html> <head> <style type="text/css"> + <#assign redColor="#FF0002"> <#assign blueColor="#000080"> <#assign lightGrayColor="#f2f2f2"> - @page { size: A4 landscape;} + @page { + size: A4 landscape; + } h1 { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAAeCAYAAABEzX4WAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gsYESwznZhaYQAAC8VJREFUeNrtnHmQHPV1xz+vu+fanZm9b2l1YFlCSGBkkI3DYQpwqrI7rFwuK44ph8QmcQyuUCQYl3EO4xg7wQaDBSZCMahQIiiBjXZWoiiIywIZZbkMiAAxhyWxOliJPbTH3N0vf/x6tKPdjQMY5BGaV9PVU7/+Xb2/7+/73vd1zwrHmW3ZsoXu7m6SyeRFIhIHxgBUNSsiu4GDIpLv7u52i20eeeQRLrroonc95ubNm1m1ahUVe39MjkMQ1qtqN3CBqp4sIiuAw0BaVV8BBkTkGeBRVd0nIqOJRKKQTCarLMuyuru7JwCSyWRMRCw [...] @@ -34,6 +191,10 @@ text-align: center; } + .bold { + font-weight: bold; + } + h1, h4 { color: ${blueColor}; font-weight: bold; @@ -64,10 +225,16 @@ tbody tr:nth-child(even) { background: ${lightGrayColor}; } + tbody tr:nth-child(odd) { background: #fff; } + li.error { + color: ${redColor}; + font-weight: bold; + } + </style> </head> <body> @@ -77,32 +244,174 @@ <h2>Méta-données</h2> <ul> - <li>Fichier: ${archive.name}</li> - <li>Date - heure : ${date?date?string.full} ${date?time?string.short}</li> + <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> </ul> <h2>Format de l'archive</h2> +TODO + +<h2 style="page-break-after:always"/> + +<h2>Référentiels temporaires Engin</h2> +<#assign fileResult = temporaryGearsImported> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucun engin temporaire à importer.</p> +<#else> +<p>Des engins temporaires ont été importés.</p> + <@renderReferentialImportFile fileResult=fileResult/> + <@renderReferentialGearList title="Engins ajoutés" entries=fileResult.entitiesAddedEntries/> + <@renderReferentialGearList title="Engins associés" entries=fileResult.entitiesLinkedEntries/> +</#if> + +<h2 style="page-break-after:always"/> + +<h2>Référentiels temporaires Personne</h2> +<#assign fileResult = temporaryPersonsImported> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucune personne temporaire à importer.</p> +<#else> +<p>Des personnes temporaires ont été importées.</p> + <@renderReferentialImportFile fileResult=fileResult/> + <@renderReferentialPersonList title="Personnes ajoutées" entries=fileResult.entitiesAddedEntries/> + <@renderReferentialPersonList title="Personnes associées" entries=fileResult.entitiesLinkedEntries/> +</#if> + +<h2 style="page-break-after:always"/> + +<h2>Référentiels temporaires Espèce</h2> +<#assign fileResult = temporarySpeciesImported> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucune espèce temporaire à importer.</p> +<#else> +<p>Des espèces temporaires ont été importées.</p> + <@renderReferentialImportFile fileResult=fileResult/> + <@renderReferentialSpeciesList title="Espèces ajoutées" entries=fileResult.entitiesAddedEntries/> + <@renderReferentialSpeciesList title="Espèces associées" entries=fileResult.entitiesLinkedEntries/> +</#if> + +<h2 style="page-break-after:always"/> -<h2>Référentiels temporaire</h2> +<h2>Référentiels temporaires Navire</h2> +<#assign fileResult = temporaryVesselsImported> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucun navire temporaire à importer.</p> +<#else> +<p>Des navires temporaires ont été importés.</p> + <@renderReferentialImportFile fileResult=fileResult/> + <@renderReferentialVesselList title="Navires ajoutés" entries=fileResult.entitiesAddedEntries/> + <@renderReferentialVesselList title="Navires associés" entries=fileResult.entitiesLinkedEntries/> +</#if> + +<h2 style="page-break-after:always"/> <h2>Protocole</h2> +<#if protocolImported??> +<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>Fichier des campagnes</h2> +<#assign fileResult = surveyFileResult> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucune campagne à importer.</p> +<#else> +<p>Des campagnes ont été validées.</p> + <@renderImportFile fileResult=fileResult/> +</#if> + +<h2 style="page-break-after:always"/> + +<h2>Fichier des mises en oeuvre d'engin</h2> +<#assign fileResult = gearCaracteristicFileResult> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucune mise en oeuvre d'engin à importer.</p> +<#else> +<p>Des mises en oeuvre d'engin ont été validées.</p> + <@renderImportFile fileResult=fileResult/> +</#if> + +<h2 style="page-break-after:always"/> + +<h2>Fichier des traits</h2> +<#assign fileResult = operationFileResult> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucun trait à importer.</p> +<#else> +<p>Des traits ont été validés.</p> + <@renderImportFile fileResult=fileResult/> +</#if> + +<h2 style="page-break-after:always"/> + +<h2>Fichier des caractéristiques de trait</h2> +<#assign fileResult = parameterFileResult> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucune caractéristique de trait à importer.</p> +<#else> +<p>Des caractéristiques de trait ont été validées.</p> + <@renderImportFile fileResult=fileResult/> +</#if> -<h2>Fichier survey.csv</h2> +<h2 style="page-break-after:always"/> -<h2>Fichier gearCaracteristics.csv</h2> +<h2>Fichier des lôts capture</h2> +<#assign fileResult = catchFileResult> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucun lôt capture à importer.</p> +<#else> +<p>Des lôts capture ont été validées.</p> + <@renderImportFile fileResult=fileResult/> +</#if> -<h2>Fichier operation.csv</h2> +<h2 style="page-break-after:always"/> -<h2>Fichier parameter.csv</h2> +<h2>Fichier des macro déchets</h2> +<#assign fileResult = marineLitterFileResult> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucun macro déchet à importer.</p> +<#else> +<p>Des macro déchets ont été validés.</p> + <@renderImportFile fileResult=fileResult/> +</#if> -<h2>Fichier catch.csv</h2> +<h2 style="page-break-after:always"/> -<h2>Fichier marineLitter.csv</h2> +<h2>Fichier des captures accidentelles</h2> +<#assign fileResult = accidentalCatchFileResult> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucune capture accidentelle à importer.</p> +<#else> +<p>Des captures accidentelles ont été validées.</p> + <@renderImportFile fileResult=fileResult/> +</#if> -<h2>Fichier accidentalCatch.csv</h2> +<h2 style="page-break-after:always"/> -<h2>Fichier indivudalObservation.csv</h2> +<h2>Fichier des observations individuelles</h2> +<#assign fileResult = individualObservationFileResult> +<#assign linesCount = fileResult.linesCount> +<#if linesCount == 0> +<p>Aucune observation individuelle à importer.</p> +<#else> +<p>Des observations individuelles ont été validées.</p> + <@renderImportFile fileResult=fileResult/> +</#if> </body> </html> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.