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 b7d0d751d22d70053468ee59488c44191bcb560d Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Feb 24 20:45:07 2015 +0100 add validate import file methods in service --- .../genericformat/GenericFormatImportService.java | 365 ++++++++++++++++++--- .../GenericFormatValidateFileContext.java | 72 ++++ .../GenericFormatValidateFileResult.java | 53 +++ .../resources/i18n/tutti-service_en_GB.properties | 10 + .../resources/i18n/tutti-service_fr_FR.properties | 11 +- .../GenericFormatImportServiceTest.java | 24 ++ 6 files changed, 496 insertions(+), 39 deletions(-) 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 fdfead5..705d947 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 @@ -3,6 +3,7 @@ package fr.ifremer.tutti.service.genericformat; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; @@ -80,21 +81,81 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { } - public int getImportProgramNbSteps(GenericFormatImportConfiguration importConfiguration) { + public int getValidateImportFileNbSteps(GenericFormatImportConfiguration importConfiguration) { Preconditions.checkNotNull(importConfiguration); - File importFile = importConfiguration.getImportFile(); - Preconditions.checkNotNull(importFile); - Preconditions.checkState(importFile.exists()); + GenericFormatArchive archive = createArchive(importConfiguration); - GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + int result = 6 // check sampleCategoryModel + import ( gear + person + species + vessel + protocol ) + + archive.countImportLines(archive.getSurveyPath()) // load cruises + + archive.countImportLines(archive.getGearCaracteristicsPath()) // load gear caracteristics + + archive.countImportLines(archive.getOperationPath()) // load operations + + archive.countImportLines(archive.getParameterPath()) // load parameters + + archive.countImportLines(archive.getCatchPath()) // load catches + + archive.countImportLines(archive.getMarineLitterPath()) // load marine litters + + archive.countImportLines(archive.getIndividualObservationPath()) // load individualObservations + + archive.countImportLines(archive.getAccidentalCatchPath()); // load accidental catches + + return result; + + } + + public GenericFormatValidateFileResult validateImportFile(GenericFormatImportConfiguration importConfiguration, ProgressionModel progressionModel) throws GenericFormatArchiveInvalidLayoutException { + + Preconditions.checkNotNull(importConfiguration); + + Preconditions.checkNotNull(progressionModel); + + GenericFormatArchive archive = createArchive(importConfiguration); + + GenericFormatImportRequest importRequest = createImportRequest(importConfiguration, archive); + + try { + GenericFormatValidateFileResult result = doValidate(importRequest, progressionModel); + + generateValidateReport(result, progressionModel); + + return result; + } finally { + + TuttiProtocol oldProtocol = importRequest.getOldProtocol(); + + if (oldProtocol != null) { + + TuttiProtocol protocol = persistenceService.getProtocol(); + if (!protocol.equals(oldProtocol)) { + + if (log.isInfoEnabled()) { + log.info("Set back old protocol: " + oldProtocol.getId() + " - " + oldProtocol.getName()); + } + + persistenceService.setProtocol(oldProtocol); + + if (log.isInfoEnabled()) { + log.info("Delete temporary protocol: " + protocol.getId() + " - " + protocol.getName()); + } + persistenceService.deleteProtocol(protocol.getId()); + + } + + } + + } + + } - int nbCruises = archive.getNbCruisesFromFile(); + public int getImportProgramNbSteps(GenericFormatImportConfiguration importConfiguration) { + + Preconditions.checkNotNull(importConfiguration); + + GenericFormatArchive archive = createArchive(importConfiguration); + + int nbCruises = archive.countImportLines(archive.getSurveyPath()); if (log.isInfoEnabled()) { log.info("Count " + nbCruises + " cruises to import."); } - int nbOperations = archive.getNbOperationsFromFile(); + int nbOperations = archive.countImportLines(archive.getOperationPath()); if (log.isInfoEnabled()) { log.info("Count " + nbOperations + " operations to import."); } @@ -125,51 +186,62 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { Preconditions.checkNotNull(progressionModel); - GenericFormatImportRequest importRequest = createImportRequest(importConfiguration); + GenericFormatArchive archive = createArchive(importConfiguration); + + GenericFormatImportRequest importRequest = createImportRequest(importConfiguration, archive); GenericFormatImportResult result = doImport(importRequest, progressionModel); - computeReport(result, progressionModel); + generateImportReport(result, progressionModel); return result; } - protected GenericFormatImportRequest createImportRequest(GenericFormatImportConfiguration importConfiguration) { + protected void generateImportReport(GenericFormatImportResult result, ProgressionModel progressionModel) { - String programId = importConfiguration.getProgramId(); - Preconditions.checkNotNull(programId); + File reportFile = result.getReportFile(); - Program program = persistenceService.getProgram(programId); - Preconditions.checkNotNull(program); + progressionModel.increments(t("tutti.service.genericFormat.import.computeReport", reportFile)); - if (log.isDebugEnabled()) { - log.debug("Will import into program: " + programId); - } + //TODO Compute report - File importFile = importConfiguration.getImportFile(); - Preconditions.checkNotNull(importFile); - Preconditions.checkState(importFile.exists()); + } - // Full load cruise - Set<Cruise> cruises = new LinkedHashSet<>(); - for (String cruiseId : persistenceService.getAllCruiseId(program.getId())) { - cruises.add(persistenceService.getCruise(cruiseId)); - } + protected void generateValidateReport(GenericFormatValidateFileResult result, ProgressionModel progressionModel) { - TuttiProtocol protocol = persistenceService.getProtocol(); + File reportFile = result.getReportFile(); - GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + progressionModel.increments(t("tutti.service.genericFormat.validate.computeReport", reportFile)); - GenericFormatImportRequest request = new GenericFormatImportRequest(importConfiguration, - archive, - ';', - program, - context.getSampleCategoryModel(), - ImmutableSet.copyOf(cruises), - protocol); + //TODO Compute report - return request; + } + + protected GenericFormatValidateFileResult doValidate(GenericFormatImportRequest request, ProgressionModel progressionModel) { + + try (GenericFormatValidateFileContext importContext = new GenericFormatValidateFileContext(request, progressionModel, persistenceService, cruiseDecorator, fishingOperationDecorator)) { + + checkSampleCategoryModel(importContext); + importTemporaryGears(importContext); + importTemporaryPersons(importContext); + importTemporarySpecies(importContext); + importTemporaryVessels(importContext); + importProtocol(importContext); + + validateCruises(importContext); + validateGearCaracteristics(importContext); + validateOperations(importContext); + validateParameters(importContext); + validateCatches(importContext); + validateMarineLitters(importContext); + validateIndividualObservations(importContext); + validateAccidentalCatches(importContext); + + GenericFormatValidateFileResult result = new GenericFormatValidateFileResult(importContext); + return result; + + } } @@ -205,10 +277,47 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { } - protected void computeReport(GenericFormatImportResult result, ProgressionModel progressionModel) { + protected GenericFormatImportRequest createImportRequest(GenericFormatImportConfiguration importConfiguration, GenericFormatArchive archive) { - //TODO Compute report - progressionModel.increments(t("tutti.service.genericFormat.import.computeReport")); + String programId = importConfiguration.getProgramId(); + Preconditions.checkNotNull(programId); + + Program program = persistenceService.getProgram(programId); + Preconditions.checkNotNull(program); + + if (log.isDebugEnabled()) { + log.debug("Will import into program: " + programId); + } + + // Full load cruise + Set<Cruise> cruises = new LinkedHashSet<>(); + for (String cruiseId : persistenceService.getAllCruiseId(program.getId())) { + cruises.add(persistenceService.getCruise(cruiseId)); + } + + TuttiProtocol protocol = persistenceService.getProtocol(); + + GenericFormatImportRequest request = new GenericFormatImportRequest(importConfiguration, + archive, + ';', + program, + context.getSampleCategoryModel(), + ImmutableSet.copyOf(cruises), + protocol); + return request; + + } + + private GenericFormatArchive createArchive(GenericFormatImportConfiguration importConfiguration) { + + File importFile = importConfiguration.getImportFile(); + Preconditions.checkNotNull(importFile); + Preconditions.checkState(importFile.exists()); + + GenericFormatArchive archive = GenericFormatArchive.forImport(importFile, context.getConfig().getTmpDirectory()); + archive.validateArchiveLayout(); + + return archive; } @@ -447,6 +556,186 @@ public class GenericFormatImportService extends GenericFormatServiceSupport { } } + protected void validateCruises(GenericFormatValidateFileContext importContext) { + + if (log.isInfoEnabled()) { + log.info("Validate survey.csv file."); + } + + try (CsvConsumerForSurvey consumer = importContext.loadSurveys()) { + for (ImportRow<SurveyRow> row : consumer) { + + importContext.increments(t("tutti.service.genericFormat.validate.cruises", row.getLineNumber())); + + consumer.validateRow(row, importContext); + consumer.prepareRowForPersist(row); + + Cruise cruise = row.getBean().getCruise(); + + boolean createCruise = TuttiEntities.isNew(cruise); + importContext.addImportedCruise(cruise, !createCruise); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close survey.csv file", e); + } + + } + + protected void validateGearCaracteristics(GenericFormatValidateFileContext importContext) { + + if (log.isInfoEnabled()) { + log.info("Validate gearCaracteristics.csv file."); + } + + try (CsvConsumerForGearCaracteristic consumer = importContext.loadGearCaracteristics()) { + for (ImportRow<GearCaracteristicRow> row : consumer) { + + importContext.increments(t("tutti.service.genericFormat.validate.gearCaracteristics", row.getLineNumber())); + + GenericFormatImportCruiseContext cruiseContext = consumer.validateRow(row, importContext); + consumer.prepareRowForPersist(cruiseContext, row); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close gearCaracteristic.csv file", e); + } + + } + + protected void validateOperations(GenericFormatValidateFileContext importContext) { + + if (log.isInfoEnabled()) { + log.info("Validate operation.csv file."); + } + + try (CsvConsumerForOperation consumer = importContext.loadOperations()) { + for (ImportRow<OperationRow> row : consumer) { + + importContext.increments(t("tutti.service.genericFormat.validate.operations", row.getLineNumber())); + + GenericFormatImportCruiseContext cruiseContext = consumer.validateRow(row, importContext); + consumer.prepareRowForPersist(cruiseContext, row); + + OperationRow bean = row.getBean(); + + FishingOperation fishingOperation = bean.getFishingOperation(); + CatchBatch catchBatch = bean.getCatchBatch(); + + importContext.addImportedFishingOperation(fishingOperation, catchBatch); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close operation.csv file", e); + } + + } + + protected void validateParameters(GenericFormatValidateFileContext importContext) { + + if (log.isInfoEnabled()) { + log.info("Validate parameter.csv file."); + } + + try (CsvConsumerForParameter consumer = importContext.loadParameters()) { + for (ImportRow<ParameterRow> row : consumer) { + + importContext.increments(t("tutti.service.genericFormat.validate.parameters", row.getLineNumber())); + + GenericFormatImportOperationContext operationContext = consumer.validateRow(row, importContext); + consumer.prepareRowForPersist(operationContext, row); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close parameter.csv file", e); + } + + } + + protected void validateCatches(GenericFormatValidateFileContext importContext) { + + if (log.isInfoEnabled()) { + log.info("Validate catch.csv file."); + } + + try (CsvConsumerForCatch consumer = importContext.loadCatches()) { + for (ImportRow<CatchRow> row : consumer) { + + importContext.increments(t("tutti.service.genericFormat.validate.catches", row.getLineNumber())); + + GenericFormatImportOperationContext operationContext = consumer.validateRow(row, importContext); + consumer.prepareRowForPersist(operationContext, row); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close catch.csv file", e); + } + + } + + protected void validateMarineLitters(GenericFormatValidateFileContext importContext) { + + if (log.isInfoEnabled()) { + log.info("Validate marineLitter.csv file."); + } + + try (CsvConsumerForMarineLitter consumer = importContext.loadMarineLitters()) { + for (ImportRow<MarineLitterRow> row : consumer) { + + importContext.increments(t("tutti.service.genericFormat.validate.marineLitters", row.getLineNumber())); + + GenericFormatImportOperationContext operationContext = consumer.validateRow(row, importContext); + consumer.prepareRowForPersist(operationContext, row); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close marineLitter.csv file", e); + } + + } + + protected void validateIndividualObservations(GenericFormatValidateFileContext importContext) { + + if (log.isInfoEnabled()) { + log.info("Validate individualObservation.csv file."); + } + + try (CsvConsumerForIndividualObservation consumer = importContext.loadIndividualObservations()) { + for (ImportRow<IndividualObservationRow> row : consumer) { + + importContext.increments(t("tutti.service.genericFormat.validate.individualObservations", row.getLineNumber())); + + GenericFormatImportOperationContext operationContext = consumer.validateRow(row, importContext); + consumer.prepareRowForPersist(operationContext, row); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close individualObservation.csv file", e); + } + + } + + protected void validateAccidentalCatches(GenericFormatValidateFileContext importContext) { + + if (log.isInfoEnabled()) { + log.info("Validate accidentalCatch.csv file."); + } + + try (CsvConsumerForAccidentalCatch consumer = importContext.loadAccidentalCatches()) { + for (ImportRow<AccidentalCatchRow> row : consumer) { + + importContext.increments(t("tutti.service.genericFormat.validate.accidentalCatches", row.getLineNumber())); + + GenericFormatImportOperationContext operationContext = consumer.validateRow(row, importContext); + consumer.prepareRowForPersist(operationContext, row); + + } + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not close accidentalCatch.csv file", e); + } + + } + protected void importCruises(GenericFormatImportContext importContext, GenericformatImportPersitenceHelper persitenceHelper) { if (log.isInfoEnabled()) { diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java new file mode 100644 index 0000000..cd41879 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileContext.java @@ -0,0 +1,72 @@ +package fr.ifremer.tutti.service.genericformat; + +import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.entities.data.CatchBatch; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.PersistenceService; +import org.nuiton.decorator.Decorator; + +/** + * Created on 2/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatValidateFileContext extends GenericFormatImportContext { + + public GenericFormatValidateFileContext(GenericFormatImportRequest importRequest, + ProgressionModel progressionModel, + PersistenceService persistenceService, + Decorator<Cruise> cruiseDecorator, + Decorator<FishingOperation> fishingOperationDecorator) { + + super(importRequest, progressionModel, persistenceService, cruiseDecorator, fishingOperationDecorator); + + } + + @Override + public void addImportedCruise(Cruise cruise, boolean override) { + + if (!override) { + + // add a temporary id to simulate persist behaviour + cruise.setId(getNextCruiseId()); + + } + + super.addImportedCruise(cruise, override); + + } + + public void addImportedFishingOperation(FishingOperation fishingOperation, CatchBatch catchBatch) { + + // add a temporary id to simulate persist behaviour + fishingOperation.setId(getNextFishingOperationId()); + + // add a temporary id to simulate persist behaviour + catchBatch.setId(getNextCatchBatchId()); + + super.addImportedFishingOperation(fishingOperation, catchBatch); + + } + + private int cruiseId = -1; + + private int fishinOperationId = -1; + + private int catchBatchId = -1; + + private int getNextCruiseId() { + return cruiseId--; + } + + private int getNextFishingOperationId() { + return fishinOperationId--; + } + + private int getNextCatchBatchId() { + return catchBatchId--; + } + +} 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 new file mode 100644 index 0000000..bed9b9a --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatValidateFileResult.java @@ -0,0 +1,53 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.collect.ImmutableSet; + +import java.io.File; +import java.io.Serializable; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * Created on 2/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatValidateFileResult implements Serializable { + + private static final long serialVersionUID = 1L; + + private final Set<String> archiveFormatErrors; + + private final GenericFormatArchive archive; + + private final File reportFile; + + private boolean valid; + + public GenericFormatValidateFileResult(GenericFormatValidateFileContext validateFileContext) { + this.archive = validateFileContext.getImportRequest().getArchive(); + this.reportFile = validateFileContext.getImportRequest().getReportFile(); + this.archiveFormatErrors = new LinkedHashSet<>(); + } + + public Set<String> getArchiveFormatErrors() { + return ImmutableSet.copyOf(archiveFormatErrors); + } + + public GenericFormatArchive getArchive() { + return archive; + } + + public File getReportFile() { + return reportFile; + } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + this.valid = valid; + } +} 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 58da369..7009559 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 @@ -211,8 +211,18 @@ tutti.service.genericFormat.persist.operation.individualObservations= tutti.service.genericFormat.persist.operation.marineLitters= tutti.service.genericFormat.persist.operation.parameters= 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.validate.accidentalCatches= +tutti.service.genericFormat.validate.catches= +tutti.service.genericFormat.validate.computeReport= +tutti.service.genericFormat.validate.cruises= +tutti.service.genericFormat.validate.gearCaracteristics= +tutti.service.genericFormat.validate.individualObservations= +tutti.service.genericFormat.validate.marineLitters= +tutti.service.genericFormat.validate.operations= +tutti.service.genericFormat.validate.parameters= tutti.service.multipost.attachment.copy.error= tutti.service.multipost.attachment.mkdir.error= tutti.service.multipost.export.attachments.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 9e91655..9c131a6 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 @@ -166,7 +166,6 @@ tutti.service.genericFormat.invalid.cruise=Erreur d'élévation de poids sur les tutti.service.genericFormat.invalid.fishingOperation=<li>L'élévation des poids ne peut pas être réalisée sur le trait %s, pour la raison suivante \:<ul><li>%s</li></ul></li> tutti.service.genericFormat.load.protocol=Import du protocol tutti.service.genericFormat.persist.cruise=Sauvegarde de la campagne <strong>%s</strong> -tutti.service.genericFormat.remove.existingCruise.fishingOperation=Suppression du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.persist.gearCaracteristics=Sauvegarde des caractéristiques des engins de la campagne <strong>%s</strong> tutti.service.genericFormat.persist.operation=Sauvegarde du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.persist.operation.accidentalBatches=Sauvegarde des captures accidentelles du trait <strong>%s</strong> - <strong>%s</strong> @@ -175,8 +174,18 @@ tutti.service.genericFormat.persist.operation.individualObservations=Sauvegarde tutti.service.genericFormat.persist.operation.marineLitters=Sauvegarde des macro-déchets du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.persist.operation.parameters=Sauvegarde des caractéristiques du trait <strong>%s</strong> - <strong>%s</strong> tutti.service.genericFormat.persist.operation.speciesBatches=Sauvegarde des lots espèces du trait <strong>%s</strong> - <strong>%s</strong> +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.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= +tutti.service.genericFormat.validate.cruises=Validation du fichier <strong>survey.csv</strong> - ligne %s +tutti.service.genericFormat.validate.gearCaracteristics=Validation du fichier <strong>gearCaracteristic.csv</strong> - ligne %s +tutti.service.genericFormat.validate.individualObservations=Validation du fichier <strong>individualObservation.csv</strong> - ligne %s +tutti.service.genericFormat.validate.marineLitters=Validation du fichier <strong>marineLitter.csv</strong> - ligne %s +tutti.service.genericFormat.validate.operations=Validation du fichier <strong>operation.csv</strong> - ligne %s +tutti.service.genericFormat.validate.parameters=Validation du fichier <strong>parameter.csv</strong> - ligne %s tutti.service.multipost.attachment.copy.error=Erreur lors de l'export de la pièce-jointe %s tutti.service.multipost.attachment.mkdir.error=Impossible de créer le répertoire %s tutti.service.multipost.export.attachments.error=Erreur lors de l'export des pièces-jointes diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java index 66bef66..dba1fed 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/genericformat/GenericFormatImportServiceTest.java @@ -40,6 +40,30 @@ public class GenericFormatImportServiceTest extends GenericFormatImportServiceTe } @Test + public void testValidateFile() throws IOException { + + ServiceDbResource.DataContext dataContext = getServiceDbResource().loadContext(PROGRAM_ID); + + File archiveFile = createArchive("empty.zip", "technical", "protocol", "default"); + + GenericFormatImportConfiguration importConfiguration = new GenericFormatImportConfiguration(); + importConfiguration.setImportFile(archiveFile); + importConfiguration.setProgramId(dataContext.program.getId()); + + int nbSteps = service.getValidateImportFileNbSteps(importConfiguration); + + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.adaptTotal(nbSteps); + + if (log.isInfoEnabled()) { + log.info("Will validate file in " + nbSteps + " steps"); + } + + service.validateImportFile(importConfiguration, progressionModel); + + } + + @Test public void testImport() throws IOException { ServiceDbResource.DataContext dataContext = getServiceDbResource().loadContext(PROGRAM_ID); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.