Author: tchemit Date: 2014-01-13 16:19:06 +0100 (Mon, 13 Jan 2014) New Revision: 1485 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1485 Log: fixes #3880: Erreur lors d'un export Sumatra Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportService.java trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceTest.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseForSumatraAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportFishingOperationForSumatraAction.java Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportService.java 2014-01-13 15:18:31 UTC (rev 1484) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportService.java 2014-01-13 15:19:06 UTC (rev 1485) @@ -29,6 +29,7 @@ import com.google.common.collect.Lists; import com.google.common.io.Files; import fr.ifremer.shared.application.ApplicationTechnicalException; +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.AbstractTuttiService; @@ -76,7 +77,8 @@ * @since 2.0 */ public void exportCruiseForSumatra(File file, - String cruiseId) { + String cruiseId, + ProgressionModel progressionModel) { Preconditions.checkNotNull(cruiseId, "Cannot export a null cruise"); Preconditions.checkNotNull(file, "Cannot export to a null file"); @@ -85,13 +87,23 @@ log.info("Will export cruise " + cruiseId + " to file: " + file); } + progressionModel.increments(_("tutti.service.sumatra.export.step.load.cruise", cruiseId)); + Cruise cruise = persistenceService.getCruise(cruiseId); Preconditions.checkNotNull(cruise, "Cruise [" + cruiseId + "] not found"); + progressionModel.increments(_("tutti.service.sumatra.export.step.load.fishingOperationIds")); + List<String> operations = persistenceService.getAllFishingOperationIds(cruiseId); - prepareOperationsAndExport(file, operations); + if (log.isInfoEnabled()) { + log.info(operations.size() + " operations found for cruise: " + cruiseId); + } + + progressionModel.adaptTotal(operations.size() + 3); + + prepareOperationsAndExport(file, operations, progressionModel); } /** @@ -104,7 +116,8 @@ */ public void exportFishingOperationForSumatra(File file, String cruiseId, - String fishingOperationId) { + String fishingOperationId, + ProgressionModel progressionModel) { Preconditions.checkNotNull(file, "Cannot export to a null file"); Preconditions.checkNotNull(cruiseId, "Cannot export a null cruise"); @@ -115,26 +128,39 @@ fishingOperationId + " to file: " + file); } + progressionModel.increments(_("tutti.service.sumatra.export.step.load.cruise", cruiseId)); + Cruise cruise = persistenceService.getCruise(cruiseId); Preconditions.checkNotNull(cruise, "Cruise [" + cruiseId + "] not found"); List<String> operations = Lists.newArrayList(fishingOperationId); - prepareOperationsAndExport(file, operations); + prepareOperationsAndExport(file, operations, progressionModel); } protected void prepareOperationsAndExport(File file, - List<String> operations) { + List<String> operations, + ProgressionModel progressionModel) { List<CatchRow> rows = Lists.newArrayList(); if (operations != null) { for (String operationId : operations) { + progressionModel.increments(_("tutti.service.sumatra.export.step.load.fishingOperation", operationId)); + if (!persistenceService.isFishingOperationWithCatchBatch(operationId)) { + + if (log.isWarnEnabled()) { + log.warn("No catch for operation with id: " + operationId); + } + break; + } + prepareFishingOperation(rows, operationId); } } + progressionModel.increments(_("tutti.service.sumatra.export.step.export", file)); CatchRowModel csvModel = new CatchRowModel(context.getConfig().getCsvSeparator()); Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2014-01-13 15:18:31 UTC (rev 1484) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2014-01-13 15:19:06 UTC (rev 1485) @@ -161,6 +161,10 @@ tutti.service.referential.import.vessels.error= tutti.service.referential.import.vessels.existingValue.error= tutti.service.sumatra.export.error= +tutti.service.sumatra.export.step.export= +tutti.service.sumatra.export.step.load.cruise= +tutti.service.sumatra.export.step.load.fishingOperation= +tutti.service.sumatra.export.step.load.fishingOperationIds= tutti.service.validateCruise.exportResult.error= tutti.service.validateCruise.operations.progress= tutti.validator.error.accidental.species.required= Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2014-01-13 15:18:31 UTC (rev 1484) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2014-01-13 15:19:06 UTC (rev 1485) @@ -161,6 +161,10 @@ tutti.service.referential.import.vessels.error=Erreur lors de l'import des navires du fichier %s tutti.service.referential.import.vessels.existingValue.error=Un navire avec le nom %1s et l'immatriculation %2s existe déjà dans le référentiel tutti.service.sumatra.export.error=Erreur lors de l'export Sumatra dans le fichier %s +tutti.service.sumatra.export.step.export=Export dans le fichier %s +tutti.service.sumatra.export.step.load.cruise=Chargement de la campagne %s +tutti.service.sumatra.export.step.load.fishingOperation=Chargement du trait %s +tutti.service.sumatra.export.step.load.fishingOperationIds=Recherche des opérations tutti.service.validateCruise.exportResult.error=Erreur lors de l'export des résultats de validation de la campagne dans le fichier %s tutti.service.validateCruise.operations.progress=Vérification du trait %s tutti.validator.error.accidental.species.required=L'espèce est obligatoire Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceTest.java =================================================================== --- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceTest.java 2014-01-13 15:18:31 UTC (rev 1484) +++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/sumatra/CatchesSumatraExportServiceTest.java 2014-01-13 15:19:06 UTC (rev 1485) @@ -24,6 +24,7 @@ * #L% */ +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.service.ServiceDbResource; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.catches.TuttiWeightComputingException; @@ -91,7 +92,9 @@ File exportFile = new File(dataDirectory, "exportSumatra.csv"); - service.exportCruiseForSumatra(exportFile, CRUISE_BAD_ID); + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.setTotal(3); + service.exportCruiseForSumatra(exportFile, CRUISE_BAD_ID, progressionModel); } @Test @@ -102,7 +105,9 @@ File exportFile = new File(dataDirectory, "exportSumatra.csv"); - service.exportCruiseForSumatra(exportFile, CRUISE_ID); + ProgressionModel progressionModel = new ProgressionModel(); + progressionModel.setTotal(3); + service.exportCruiseForSumatra(exportFile, CRUISE_ID, progressionModel); ServiceDbResource.assertFileContent("Sumatra export file:\n", exportFile, Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseForSumatraAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseForSumatraAction.java 2014-01-13 15:18:31 UTC (rev 1484) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportCruiseForSumatraAction.java 2014-01-13 15:19:06 UTC (rev 1485) @@ -25,6 +25,7 @@ */ import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService; import fr.ifremer.tutti.ui.swing.content.MainUIHandler; @@ -92,11 +93,14 @@ log.info("Will export cruise " + cruise.getId() + " to file: " + file); } + ProgressionModel pm = new ProgressionModel(); + pm.setTotal(3); // loading cruise + loading fishing operationIds + export + setProgressionModel(pm); // export catches CatchesSumatraExportService service = getContext().getCatchesSumatraExportService(); - service.exportCruiseForSumatra(file, cruise.getId()); + service.exportCruiseForSumatra(file, cruise.getId(), pm); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportFishingOperationForSumatraAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportFishingOperationForSumatraAction.java 2014-01-13 15:18:31 UTC (rev 1484) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportFishingOperationForSumatraAction.java 2014-01-13 15:19:06 UTC (rev 1485) @@ -25,6 +25,7 @@ */ import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.export.sumatra.CatchesSumatraExportService; @@ -100,12 +101,17 @@ " to file: " + file); } + ProgressionModel pm = new ProgressionModel(); + pm.setTotal(3); // loading cruise + loading fishing operationIds + export + setProgressionModel(pm); + // export catches CatchesSumatraExportService service = getContext().getCatchesSumatraExportService(); service.exportFishingOperationForSumatra(file, cruise.getId(), - fishingOperation.getId()); + fishingOperation.getId(), + pm); }