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 cb8517a863ef2c67c84a575f34c862683203e79e Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Feb 25 10:02:36 2015 +0100 mise en place des rapports de validation --- .../genericformat/GenericFormatImportRequest.java | 13 ++- .../genericformat/GenericFormatImportResult.java | 54 ++++++++--- .../genericformat/GenericFormatImportService.java | 9 +- .../GenericFormatValidateFileResult.java | 54 +++++++++-- .../ftl/genericFormatValidateReport_fr.ftl | 108 +++++++++++++++++++++ 5 files changed, 213 insertions(+), 25 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java index cd40464..39c53df 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportRequest.java @@ -7,6 +7,8 @@ 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.Set; /** @@ -15,7 +17,9 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class GenericFormatImportRequest { +public class GenericFormatImportRequest implements Serializable { + + private static final long serialVersionUID = 1L; private final GenericFormatImportConfiguration importConfiguration; @@ -31,6 +35,8 @@ public class GenericFormatImportRequest { private final Program program; + private final Date startingDate; + public GenericFormatImportRequest(GenericFormatImportConfiguration importConfiguration, GenericFormatArchive archive, char csvSeparator, @@ -45,6 +51,7 @@ public class GenericFormatImportRequest { this.program = program; this.existingCruises = cruises; this.oldProtocol = oldProtocol; + this.startingDate = new Date(); } @@ -72,6 +79,10 @@ public class GenericFormatImportRequest { return program; } + public Date getStartingDate() { + return startingDate; + } + public Cruise getExistingCruise(Cruise importRowCruise) { Cruise result = null; 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 027670c..98f0aee 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,6 +5,8 @@ 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; @@ -14,6 +16,7 @@ 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; @@ -25,7 +28,7 @@ import java.util.Set; * @author Tony Chemit - chemit@codelutin.com * @since 3.14 */ -public class GenericFormatImportResult implements Serializable{ +public class GenericFormatImportResult implements Serializable { private static final long serialVersionUID = 1L; @@ -43,16 +46,13 @@ public class GenericFormatImportResult implements Serializable{ private final GenericFormatReferentialImportResult<Vessel, String> importedVessels; - private final GenericFormatArchive archive; - - private final File reportFile; + private final GenericFormatImportRequest importRequest; private boolean valid; public GenericFormatImportResult(GenericFormatImportContext importContext) { - this.archive = importContext.getImportRequest().getArchive(); - this.reportFile= importContext.getImportRequest().getReportFile(); + this.importRequest = importContext.getImportRequest(); this.cruiseResults = new LinkedHashMap<>(); this.errors = new LinkedHashSet<>(); this.protocol = importContext.getImportedProtocol(); @@ -64,7 +64,43 @@ public class GenericFormatImportResult implements Serializable{ } public GenericFormatArchive getArchive() { - return archive; + 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() { @@ -130,10 +166,6 @@ public class GenericFormatImportResult implements Serializable{ return importedVessels; } - public File getReportFile() { - return reportFile; - } - public void addFishingOperationCheckError(Cruise cruise, String fishingOperationId, String checkError) { GenericFormatImportCruiseResult importedCruiseResult = getImportedCruiseResult(cruise.getId()); diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java index 705d947..8d60247 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportService.java @@ -14,8 +14,8 @@ 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 fr.ifremer.tutti.service.PdfGeneratorService; import fr.ifremer.tutti.service.TuttiServiceContext; -import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.service.catches.WeightCleaningService; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForAccidentalCatch; import fr.ifremer.tutti.service.genericformat.consumer.CsvConsumerForCatch; @@ -71,13 +71,14 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { protected WeightCleaningService weightCleaningService; - protected ValidationService validationServic; + protected PdfGeneratorService pdfGeneratorService; @Override public void setServiceContext(TuttiServiceContext context) { super.setServiceContext(context); weightCleaningService = getService(WeightCleaningService.class); + pdfGeneratorService = getService(PdfGeneratorService.class); } @@ -204,7 +205,7 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { progressionModel.increments(t("tutti.service.genericFormat.import.computeReport", reportFile)); - //TODO Compute report + pdfGeneratorService.generatePdf(reportFile, context.getConfig().getI18nLocale(), "genericFormatImportReport.ftl", result); } @@ -214,7 +215,7 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { progressionModel.increments(t("tutti.service.genericFormat.validate.computeReport", reportFile)); - //TODO Compute report + pdfGeneratorService.generatePdf(reportFile, context.getConfig().getI18nLocale(), "genericFormatValidateReport.ftl", result); } 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 bed9b9a..2d744f3 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,9 +1,14 @@ 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; @@ -19,28 +24,59 @@ public class GenericFormatValidateFileResult implements Serializable { private final Set<String> archiveFormatErrors; - private final GenericFormatArchive archive; - - private final File reportFile; - private boolean valid; + private GenericFormatImportRequest importRequest; + public GenericFormatValidateFileResult(GenericFormatValidateFileContext validateFileContext) { - this.archive = validateFileContext.getImportRequest().getArchive(); - this.reportFile = validateFileContext.getImportRequest().getReportFile(); + + this.importRequest = validateFileContext.getImportRequest(); this.archiveFormatErrors = new LinkedHashSet<>(); + } public Set<String> getArchiveFormatErrors() { return ImmutableSet.copyOf(archiveFormatErrors); } + public File getReportFile() { + return importRequest.getReportFile(); + } + public GenericFormatArchive getArchive() { - return archive; + return importRequest.getArchive(); } - public File getReportFile() { - return reportFile; + 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() { diff --git a/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl new file mode 100644 index 0000000..8add13d --- /dev/null +++ b/tutti-service/src/main/resources/ftl/genericFormatValidateReport_fr.ftl @@ -0,0 +1,108 @@ +<#-- + #%L + Tutti :: Service + %% + Copyright (C) 2012 - 2014 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% +--> +<html> +<head> + <style type="text/css"> + + <#assign blueColor="#000080"> + <#assign lightGrayColor="#f2f2f2"> + + @page { 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; + } + + h1, h4 { + color: ${blueColor}; + font-weight: bold; + font-style: italic; + } + + h2 { + margin-bottom: 50pt; + } + + table { + margin-bottom: 25pt; + border-collapse: collapse; + } + + th { + color: ${blueColor}; + font-weight: bold; + background: ${lightGrayColor}; + } + + td, th { + padding: 1pt 5pt; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + } + + tbody tr:nth-child(even) { + background: ${lightGrayColor}; + } + tbody tr:nth-child(odd) { + background: #fff; + } + + </style> +</head> +<body> + +<h1>Rapport de validation avant import générique</h1> + +<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>Série de campagne: ${program.name}</li> +</ul> + +<h2>Format de l'archive</h2> + +<h2>Référentiels temporaire</h2> + +<h2>Protocole</h2> + +<h2>Fichier survey.csv</h2> + +<h2>Fichier gearCaracteristics.csv</h2> + +<h2>Fichier operation.csv</h2> + +<h2>Fichier parameter.csv</h2> + +<h2>Fichier catch.csv</h2> + +<h2>Fichier marineLitter.csv</h2> + +<h2>Fichier accidentalCatch.csv</h2> + +<h2>Fichier indivudalObservation.csv</h2> + +</body> +</html> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.