This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit d03e0b366e478a2f23fd8a197bc2babd4074277a Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 8 19:41:58 2015 +0100 check cruises for program export + improve export shared code --- .../genericformat/GenericFormatExportService.java | 355 +++++++++++++-------- .../resources/i18n/tutti-service_en_GB.properties | 5 + .../resources/i18n/tutti-service_fr_FR.properties | 6 +- 3 files changed, 232 insertions(+), 134 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java index 55c00c3..becbd4a 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatExportService.java @@ -22,6 +22,7 @@ package fr.ifremer.tutti.service.genericformat; * #L% */ +import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.ProgressionModel; @@ -33,6 +34,7 @@ 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.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Gear; @@ -53,6 +55,7 @@ import fr.ifremer.tutti.service.genericformat.csv.IndividualObservationRow; import fr.ifremer.tutti.service.genericformat.csv.MarineLitterRow; import fr.ifremer.tutti.service.genericformat.csv.OperationRow; import fr.ifremer.tutti.service.genericformat.csv.ParameterRow; +import fr.ifremer.tutti.service.genericformat.csv.SampleCategoryRow; import fr.ifremer.tutti.service.genericformat.csv.SpeciesExportRow; import fr.ifremer.tutti.service.genericformat.csv.SurveyRow; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForAccidentalCatch; @@ -62,12 +65,9 @@ import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForIndividualO import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForMarineLitter; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForOperation; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForParameter; +import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSampleCategory; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSpecies; import fr.ifremer.tutti.service.genericformat.producer.CsvProducerForSurvey; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; -import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import fr.ifremer.tutti.service.protocol.ProtocolImportExportService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryGearService; import fr.ifremer.tutti.service.referential.ReferentialTemporaryPersonService; @@ -77,9 +77,12 @@ import fr.ifremer.tutti.service.referential.csv.GearRow; import fr.ifremer.tutti.service.referential.csv.PersonRow; import fr.ifremer.tutti.service.referential.csv.SpeciesRow; import fr.ifremer.tutti.service.referential.csv.VesselRow; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryGear; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryPerson; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporarySpecies; +import fr.ifremer.tutti.service.referential.producer.CsvProducerForTemporaryVessel; import fr.ifremer.tutti.util.Numbers; import org.apache.commons.collections4.MapUtils; -import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; @@ -88,6 +91,8 @@ import org.nuiton.jaxx.application.ApplicationIOUtil; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -138,13 +143,13 @@ public class GenericFormatExportService extends AbstractTuttiService { public ProgressionModel createExportProgramProgessionModel(String programId) { - // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / species) + (protocol + - // temporary gear + temporary person + temporar species + temporary vessel + zip) + // nbCruise * (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litters) + + // (species + sampleCategoryModel + protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) List<Cruise> allCruise = persistenceService.getAllCruise(programId); ProgressionModel progressionModel = new ProgressionModel(); - progressionModel.setTotal(9 * allCruise.size() + 6); + progressionModel.setTotal(9 * allCruise.size() + 8); return progressionModel; } @@ -163,36 +168,51 @@ public class GenericFormatExportService extends AbstractTuttiService { List<Cruise> allCruise = persistenceService.getAllCruise(programId); - File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); + ApplicationBusinessException checkError = null; + try { + checkProgramCruises(progressionModel, allCruise); + } catch (ApplicationBusinessException e) { + // error while checking cruise + if (log.isDebugEnabled()) { + log.debug("Got a check cruise error", e); + } + checkError = e; + } + File basedir = new File(context.getConfig().newTempFile("exportProgram"), "exportProgram-" + programId); ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - GlobalExportContext exportContext = createExportContext(basedir); - exportTechnicalFiles(exportContext, progressionModel); + try (GlobalExportContext exportContext = createExportContext(basedir)) { - try { for (Cruise cruise : allCruise) { + // load full cruise cruise = persistenceService.getCruise(cruise.getId()); exportCruise(cruise, exportContext, progressionModel); + } - ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - increments(progressionModel, t("tutti.service.exportCruise.buildZip", exportFile)); + terminatesExport(exportContext, progressionModel); - ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.export.zip.error", exportFile)); - } finally { - IOUtils.closeQuietly(exportContext); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create program export", e); } + + buildExportZip(basedir, exportFile, progressionModel); + + if (checkError != null) { + throw checkError; + } + } public ProgressionModel createExportCruiseProgessionModel() { - // (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / species) + - // (protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) + // (check cruise / export cruise / gear caracteristics / operation / parameter / catches / individual observation / accidental catches / marine litter) + + // (species + sampleCategoryModel + protocol + temporary gear + temporary person + temporar species + temporary vessel + zip) ProgressionModel progressionModel = new ProgressionModel(); - progressionModel.setTotal(9 + 6); + progressionModel.setTotal(9 + 8); return progressionModel; } @@ -225,110 +245,21 @@ public class GenericFormatExportService extends AbstractTuttiService { ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - GlobalExportContext exportContext = createExportContext(basedir); - - exportTechnicalFiles(exportContext, progressionModel); + try (GlobalExportContext exportContext = createExportContext(basedir)) { - try { exportCruise(cruise, exportContext, progressionModel); - ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - increments(progressionModel, t("tutti.service.exportCruise.buildZip", exportFile)); + terminatesExport(exportContext, progressionModel); - ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.export.zip.error", exportFile)); - } catch (ApplicationBusinessException e) { - if (checkError != null) { - throw checkError; - } - throw e; - } finally { - IOUtils.closeQuietly(exportContext); + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create cruise export", e); } + buildExportZip(basedir, exportFile, progressionModel); + if (checkError != null) { throw checkError; } - } - - protected void exportTechnicalFiles(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - exportProtocol(exportContext, progressionModel); - exportTemporaryGears(exportContext, progressionModel); - exportTemporaryPersons(exportContext, progressionModel); - exportTemporarySpeciess(exportContext, progressionModel); - exportTemporaryVessels(exportContext, progressionModel); - - } - - protected void exportTemporaryGears(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); - - try { - - CsvProducerForTemporaryGear producerForTemporarySpecies = exportContext.getProducerForTemporaryGear(); - - List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryGears); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary gear", e); - } - - } - - protected void exportTemporaryPersons(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); - - try { - - CsvProducerForTemporaryPerson producerForTemporarySpecies = exportContext.getProducerForTemporaryPerson(); - - List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryPersons); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary person", e); - } - - } - - protected void exportTemporarySpeciess(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); - - try { - - CsvProducerForTemporarySpecies producerForTemporarySpecies = exportContext.getProducerForTemporarySpecies(); - - List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporarySpeciess); - producerForTemporarySpecies.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary species", e); - } - - } - - protected void exportTemporaryVessels(GlobalExportContext exportContext, ProgressionModel progressionModel) { - - List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); - increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); - - try { - - CsvProducerForTemporaryVessel producerForTemporaryVessel = exportContext.getProducerForTemporaryVessel(); - - List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(temporaryVessels); - producerForTemporaryVessel.write(dataToExport); - - } catch (Exception e) { - throw new ApplicationTechnicalException("Could not export temporary vessels", e); - } } @@ -367,22 +298,25 @@ public class GenericFormatExportService extends AbstractTuttiService { ApplicationIOUtil.forceMkdir(basedir, t("tutti.io.mkDir.error", basedir)); - GlobalExportContext exportContext = createExportContext(basedir); + try (GlobalExportContext exportContext = createExportContext(basedir)) { - FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); + FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); - try { exportCruise(cruise, Lists.newArrayList(fishingOperation), exportContext, null); - ApplicationIOUtil.close(exportContext, t("tutti.service.export.closeContext.error")); - } finally { - IOUtils.closeQuietly(exportContext); + + terminatesExport(exportContext, null); + + } catch (IOException e) { + throw new ApplicationTechnicalException("Could not create cruise export", e); } if (checkError != null) { // rethrow error throw checkError; } + return basedir; + } protected GlobalExportContext createExportContext(File basedir) { @@ -396,7 +330,46 @@ public class GenericFormatExportService extends AbstractTuttiService { } + protected void checkProgramCruises(ProgressionModel progressionModel, List<Cruise> allCruise) { + + List<String> errorsByCruise = new ArrayList<>(); + for (Cruise cruise : allCruise) { + + cruise = persistenceService.getCruise(cruise.getId()); + String error = getCruiseErrors(progressionModel, cruise, null); + + if (error != null) { + + if (log.isInfoEnabled()) { + log.info("Found some errors on cruise: " + cruise.getName()); + } + errorsByCruise.add(error); + + } + + } + + if (!errorsByCruise.isEmpty()) { + + // At least one cruise is bad + String errorMessage = Joiner.on("\n").join(errorsByCruise); + throw new ApplicationBusinessException(errorMessage); + + } + } + protected void checkCruise(ProgressionModel progressionModel, Cruise cruise, String fishingOperationId) { + + String error = getCruiseErrors(progressionModel, cruise, fishingOperationId); + + if (error != null) { + throw new ApplicationBusinessException(error); + } + + } + + protected String getCruiseErrors(ProgressionModel progressionModel, Cruise cruise, String fishingOperationId) { + Preconditions.checkNotNull(cruise); increments(progressionModel, t("tutti.service.exportCruise.checkCruise", cruise.getName())); @@ -404,13 +377,17 @@ public class GenericFormatExportService extends AbstractTuttiService { // check cruise fishing operations Map<String, String> errors = weightComputingService.checkCruise(cruise.getId(), fishingOperationId); - if (MapUtils.isNotEmpty(errors)) { + String result; - // there is some fishing operations with some errors + if (MapUtils.isEmpty(errors)) { - Decorator<Cruise> cruiseDecorator = decoratorService.getDecoratorByType(Cruise.class); + result = null; + + } else { + Decorator<Cruise> cruiseDecorator = decoratorService.getDecoratorByType(Cruise.class); Decorator<FishingOperation> fishingOperationDecorator = decoratorService.getDecoratorByType(FishingOperation.class); + StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : errors.entrySet()) { String operationId = entry.getKey(); @@ -419,8 +396,12 @@ public class GenericFormatExportService extends AbstractTuttiService { sb.append(t("tutti.service.export.invalid.fishingOperation", fishingOperationStr, entry.getValue())); } String cruiseStr = cruiseDecorator.toString(cruise); - throw new ApplicationBusinessException(t("tutti.service.export.invalid.cruise", cruiseStr, sb.toString())); + result = t("tutti.service.export.invalid.cruise", cruiseStr, sb.toString()); + } + + return result; + } protected void increments(ProgressionModel progressionModel, String message) { @@ -432,6 +413,118 @@ public class GenericFormatExportService extends AbstractTuttiService { } } + protected void terminatesExport(GlobalExportContext exportContext, ProgressionModel progressionModel) { + + SampleCategoryModel sampleCategoryModel = exportContext.getSampleCategoryModel(); + increments(progressionModel, t("tutti.service.genericExport.exportSampleCategoyModel", sampleCategoryModel.getNbSampling())); + exportSampleCategoryModel(exportContext, sampleCategoryModel); + + exportProtocol(exportContext, progressionModel); + + List<Gear> temporaryGears = referentialTemporaryGearService.getTemporaryGears(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryGear", temporaryGears.size())); + exportTemporaryGears(exportContext, temporaryGears); + + List<Person> temporaryPersons = referentialTemporaryPersonService.getTemporaryPersons(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryPerson", temporaryPersons.size())); + exportTemporaryPersons(exportContext, temporaryPersons); + + List<Species> temporarySpeciess = referentialTemporarySpeciesService.getTemporarySpeciess(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporarySpecies", temporarySpeciess.size())); + exportTemporarySpeciess(exportContext, temporarySpeciess); + + List<Vessel> temporaryVessels = referentialTemporaryVesselService.getTemporaryVessels(); + increments(progressionModel, t("tutti.service.genericExport.exportTemporaryVessel", temporaryVessels.size())); + exportTemporaryVessels(exportContext, temporaryVessels); + + increments(progressionModel, t("tutti.service.genericExport.exportSpecies")); + exportSpecies(exportContext); + + } + + protected void buildExportZip(File basedir, File exportFile, ProgressionModel progressionModel) { + + increments(progressionModel, t("tutti.service.genericExport.buildZip", exportFile)); + + ApplicationIOUtil.zip(basedir, exportFile, t("tutti.service.genericExport.zip.error", exportFile)); + + } + + protected void exportTemporaryGears(GlobalExportContext exportContext, List<Gear> temporaryGears) { + + try { + + CsvProducerForTemporaryGear producerForTemporarySpecies = exportContext.getProducerForTemporaryGear(); + + List<GearRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryGears); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary gear", e); + } + + } + + protected void exportTemporaryPersons(GlobalExportContext exportContext, List<Person> temporaryPersons) { + + try { + + CsvProducerForTemporaryPerson producerForTemporarySpecies = exportContext.getProducerForTemporaryPerson(); + + List<PersonRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporaryPersons); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary person", e); + } + + } + + protected void exportTemporarySpeciess(GlobalExportContext exportContext, List<Species> temporarySpeciess) { + + try { + + CsvProducerForTemporarySpecies producerForTemporarySpecies = exportContext.getProducerForTemporarySpecies(); + + List<SpeciesRow> dataToExport = producerForTemporarySpecies.getDataToExport(temporarySpeciess); + producerForTemporarySpecies.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary species", e); + } + + } + + protected void exportTemporaryVessels(GlobalExportContext exportContext, List<Vessel> temporaryVessels) { + + try { + + CsvProducerForTemporaryVessel producerForTemporaryVessel = exportContext.getProducerForTemporaryVessel(); + + List<VesselRow> dataToExport = producerForTemporaryVessel.getDataToExport(temporaryVessels); + producerForTemporaryVessel.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export temporary vessels", e); + } + + } + + protected void exportSampleCategoryModel(GlobalExportContext exportContext, SampleCategoryModel sampleCategoryModel) { + + try { + + CsvProducerForSampleCategory producerForSampleCategory = exportContext.getProducerForSampleCategory(); + + List<SampleCategoryRow> dataToExport = producerForSampleCategory.getDataToExport(sampleCategoryModel); + producerForSampleCategory.write(dataToExport); + + } catch (Exception e) { + throw new ApplicationTechnicalException("Could not export sample categories gear", e); + } + + } + protected void exportProtocol(GlobalExportContext exportContext, ProgressionModel progressionModel) { boolean protocolFilled = context.getDataContext().isProtocolFilled(); @@ -488,8 +581,6 @@ public class GenericFormatExportService extends AbstractTuttiService { increments(progressionModel, t("tutti.service.exportCruise.exportCatches", cruiseName)); exportCatches(exportContext, cruise, loadedOperations); - increments(progressionModel, t("tutti.service.exportCruise.exportSpecies", cruiseName)); - exportSpecies(exportContext); } protected void exportSurvey(GlobalExportContext exportContext, Cruise cruise) { @@ -617,7 +708,7 @@ public class GenericFormatExportService extends AbstractTuttiService { continue; } List<IndividualObservationRow> rows = producerForIndividualObservation.getDataToExport(operationContext); - producerForSpecies.prepareIndividualRows(exportContext, rows); + producerForSpecies.prepareIndividualRows(rows); producerForIndividualObservation.write(rows); } @@ -637,7 +728,7 @@ public class GenericFormatExportService extends AbstractTuttiService { OperationExportContext operationContext = exportContext.getOperationContext(cruise, operation); List<AccidentalCatchRow> rows = producerForAccidentalCatch.getDataToExport(operationContext); - producerForSpecies.prepareAccidentalRows(exportContext, rows); + producerForSpecies.prepareAccidentalRows(rows); producerForAccidentalCatch.write(rows); } @@ -678,8 +769,8 @@ public class GenericFormatExportService extends AbstractTuttiService { CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); // Warning! This will also add the survey code to batch species - producerForSpecies.prepareSpeciesBatchRows(exportContext, rootSpeciesBatch); - producerForSpecies.prepareBenthosBatchRows(exportContext, rootBenthosBatch); + producerForSpecies.prepareSpeciesBatchRows(rootSpeciesBatch); + producerForSpecies.prepareBenthosBatchRows(rootBenthosBatch); Float totalWeight = Numbers.getValueOrComputedValue( catchBatch.getCatchTotalWeight(), @@ -736,7 +827,7 @@ public class GenericFormatExportService extends AbstractTuttiService { try { CsvProducerForSpecies producerForSpecies = exportContext.getProducerForSpecies(); - List<SpeciesExportRow> rows = producerForSpecies.getSpeciesToExport(); + List<SpeciesExportRow> rows = producerForSpecies.getDataToExport(); producerForSpecies.write(rows); } catch (Exception e) { 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 6404694..111508a 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 @@ -103,6 +103,7 @@ tutti.service.exportCruise.exportParameters= tutti.service.exportCruise.exportSpecies= tutti.service.exportCruise.exportSurvey= tutti.service.exportPdf.error= +tutti.service.exportProgram.exportSpecies= tutti.service.exportSumatra.error.species.null= tutti.service.exportSumatra.error.station.null= tutti.service.exportSumatra.header.averageSize= @@ -136,7 +137,10 @@ tutti.service.exportSumatraV2.header.species=Species tutti.service.exportSumatraV2.header.station=Station number tutti.service.exportSumatraV2.header.totalWeight=TotalWeight tutti.service.exportSumatraV2.header.year=Year +tutti.service.genericExport.buildZip= tutti.service.genericExport.exportProtocol= +tutti.service.genericExport.exportSampleCategoyModel= +tutti.service.genericExport.exportSpecies= tutti.service.genericExport.exportTemporaryGear= tutti.service.genericExport.exportTemporaryPerson= tutti.service.genericExport.exportTemporarySpecies= @@ -146,6 +150,7 @@ tutti.service.genericExport.skipTemporaryGearExport= tutti.service.genericExport.skipTemporaryPersonExport= tutti.service.genericExport.skipTemporarySpeciesExport= tutti.service.genericExport.skipTemporaryVesselExport= +tutti.service.genericExport.zip.error= 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 7abbbf5..d21dacf 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 @@ -79,8 +79,6 @@ tutti.service.export.operations.error=Erreur lors de l'export des traits tutti.service.export.parameters.error=Erreur lors de l'export des paramètres tutti.service.export.species.error=Erreur lors de l'export des espèces tutti.service.export.survey.error=Erreur lors de l'export de la campagne -tutti.service.export.zip.error=Erreur lors de la création du zip d'export %s -tutti.service.exportCruise.buildZip=Création de l'archive de l'export (fichier %s) tutti.service.exportCruise.checkCruise=Vérification de la campagne %s tutti.service.exportCruise.exportAccidentalCatches=<html>Export du fichier <strong>accidentalCatch.csv</strong> pour la campagne %s</html> tutti.service.exportCruise.exportCatches=<html>Export du fichier <strong>catch.csv</strong> pour la campagne %s</html> @@ -113,7 +111,10 @@ tutti.service.exportSumatra.header.surveySpecies=espececampagne tutti.service.exportSumatra.header.totalWeight=total tutti.service.exportSumatra.header.weight=total tutti.service.exportSumatra.header.year=annee +tutti.service.genericExport.buildZip=Création de l'archive de l'export (fichier %s) tutti.service.genericExport.exportProtocol=Export du protocol %s +tutti.service.genericExport.exportSampleCategoyModel=Export des %s catégories +tutti.service.genericExport.exportSpecies=<html>Export du fichier <strong>species.csv</strong></html> tutti.service.genericExport.exportTemporaryGear=Export de %s engins temporaires tutti.service.genericExport.exportTemporaryPerson=Export de %s personnes temporaires tutti.service.genericExport.exportTemporarySpecies=Export de %s espèces temporaires @@ -123,6 +124,7 @@ tutti.service.genericExport.skipTemporaryGearExport=Pas d'engin temporaire à ex tutti.service.genericExport.skipTemporaryPersonExport=Pas de personne temporaire à exporter tutti.service.genericExport.skipTemporarySpeciesExport=Pas d'espèce temporaire à exporter tutti.service.genericExport.skipTemporaryVesselExport=Pas de navire temporaire à exporter +tutti.service.genericExport.zip.error=Erreur lors de la création du zip d'export %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 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.