Author: tchemit Date: 2013-12-09 16:01:12 +0100 (Mon, 09 Dec 2013) New Revision: 1438 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1438 Log: refs #3624: [Rapport] Int?\195?\169gration de rapports g?\195?\169n?\195?\169r?\195?\169s par Birt Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfiguration.java 2013-12-09 15:01:12 UTC (rev 1438) @@ -458,9 +458,9 @@ return result; } - /** @return {@link TuttiConfigurationOption#REPORT_LOG_FILE} value */ - public File getReportLogFile() { - File result = applicationConfig.getOptionAsFile(TuttiConfigurationOption.REPORT_LOG_FILE.getKey()); + /** @return {@link TuttiConfigurationOption#REPORT_LOG_DIRECTORY} value */ + public File getReportLogDirectory() { + File result = applicationConfig.getOptionAsFile(TuttiConfigurationOption.REPORT_LOG_DIRECTORY.getKey()); return result; } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/TuttiConfigurationOption.java 2013-12-09 15:01:12 UTC (rev 1438) @@ -94,10 +94,10 @@ n_("tutti.config.option.report.directory.description"), "${tutti.report.home.directory}/allegro-tutti/reports", File.class), - REPORT_LOG_FILE( - "tutti.report.log.file", + REPORT_LOG_DIRECTORY( + "tutti.report.log.directory", n_("tutti.config.option.report.log.file.description"), - "${tutti.data.directory}/report-${version}.log", + "${tutti.data.directory}/reportlogs", File.class), DB_DIRECTORY( "tutti.persistence.db.directory", Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties =================================================================== --- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-12-09 15:01:12 UTC (rev 1438) @@ -162,7 +162,7 @@ tutti.config.option.report.backup.directory.description=Répertoire contenant les rapports générés tutti.config.option.report.directory.description=Répertoire contenant les modèles de rapports tutti.config.option.report.home.directory.description=Répertoire contenant la structure nécessaire pour les rapport -tutti.config.option.report.log.file.description=Fichier de log utilisé lors de la génération des rapport Birt +tutti.config.option.report.log.directory.description=Répertoire contenant les logs de la génération des rapports Birt tutti.config.option.samplingCategoryOrderIds.description=Ordre des catégories d'échantillonnage tutti.config.option.service.report.backup.directory.shortLabel=Répertoire des sauvegardes de rapport tutti.config.option.service.report.directory.shortLabel=Répertoire des modèles de rapport Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/WeightComputingService.java 2013-12-09 15:01:12 UTC (rev 1438) @@ -24,6 +24,7 @@ * #L% */ +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ifremer.shared.application.ApplicationBusinessException; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -43,6 +44,7 @@ import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.ValidationService; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorResult; @@ -88,20 +90,27 @@ * Result keys are fishing operation id, values the first error for * the fishing operation. * - * @param cruiseId id of the cruise to check. + * @param cruiseId id of the cruise to check. + * @param uniqueFishingOperationId optional unique fishing operation to check * @return map of errors, or empty map if no error found. * @since 1.4 */ - public Map<String, String> checkCruise(String cruiseId) { + public Map<String, String> checkCruise(String cruiseId, + String uniqueFishingOperationId) { if (log.isDebugEnabled()) { log.debug("Will check cruise: " + cruiseId); } Map<String, String> result = Maps.newTreeMap(); - List<String> allFishingOperation = - persistenceService.getAllFishingOperationIds(cruiseId); + List<String> allFishingOperation; + if (StringUtils.isNotBlank(uniqueFishingOperationId)) { + allFishingOperation = Lists.newArrayList(uniqueFishingOperationId); + } else { + allFishingOperation = persistenceService.getAllFishingOperationIds(cruiseId); + } + for (String fishingOperationId : allFishingOperation) { boolean withCatchBatch = Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/generic/TuttiExportService.java 2013-12-09 15:01:12 UTC (rev 1438) @@ -191,7 +191,7 @@ // check cruise fishing operations ApplicationBusinessException checkError = null; try { - checkCruise(progressionModel, cruise); + checkCruise(progressionModel, cruise, null); } catch (ApplicationBusinessException e) { // error while checking cruise if (log.isDebugEnabled()) { @@ -226,13 +226,16 @@ } /** - * Export a cruise to file system in a temporary directory. + * Export the given fishing operation of a cruise to file system + * in a temporary directory. * - * @param cruiseId id of the cruise to export + * @param cruiseId id of the cruise to export + * @param fishingOperationId id of the fishing operation to export * @return the directory containing the export files * @since 3.0-rc-2 */ - public File exportCruiseToFileSystem(String cruiseId) { + public File exportFishingOperation(String cruiseId, + String fishingOperationId) { Preconditions.checkNotNull(cruiseId); @@ -246,7 +249,7 @@ // check cruise fishing operations ApplicationBusinessException checkError = null; try { - checkCruise(null, cruise); + checkCruise(null, cruise, fishingOperationId); } catch (ApplicationBusinessException e) { // error while checking cruise if (log.isDebugEnabled()) { @@ -262,8 +265,14 @@ ExportContext exportContext = createExportContext(basedir); + FishingOperation fishingOperation = + persistenceService.getFishingOperation(fishingOperationId); + try { - exportCruise(cruise, exportContext, null); + exportCruise(cruise, + Lists.newArrayList(fishingOperation), + exportContext, + null); ApplicationIOUtil.close(exportContext, _("tutti.service.export.closeContext.error")); } finally { IOUtils.closeQuietly(exportContext); @@ -297,7 +306,9 @@ speciesById); } - protected void checkCruise(ProgressionModel progressionModel, Cruise cruise) { + protected void checkCruise(ProgressionModel progressionModel, + Cruise cruise, + String fishingOperationId) { Preconditions.checkNotNull(cruise); increments(progressionModel, @@ -305,7 +316,8 @@ // check cruise fishing operations Map<String, String> errors = - weightComputingService.checkCruise(cruise.getId()); + weightComputingService.checkCruise(cruise.getId(), + fishingOperationId); if (MapUtils.isNotEmpty(errors)) { @@ -318,8 +330,8 @@ decoratorService.getDecoratorByType(FishingOperation.class); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : errors.entrySet()) { - String fishingOperationId = entry.getKey(); - FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId); + String operationId = entry.getKey(); + FishingOperation fishingOperation = persistenceService.getFishingOperation(operationId); String fishingOperationStr = fishingOperationDecorator.toString(fishingOperation); sb.append(_("tutti.service.export.invalid.fishingOperation", fishingOperationStr, entry.getValue())); } @@ -343,6 +355,14 @@ List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); + exportCruise(cruise, operations, exportContext, progressionModel); + } + + protected void exportCruise(Cruise cruise, + List<FishingOperation> operations, + ExportContext exportContext, + ProgressionModel progressionModel) { + // load fully operations List<FishingOperation> loadedOperations = Lists.newArrayListWithCapacity(operations.size()); @@ -388,7 +408,6 @@ increments(progressionModel, _("tutti.service.exportCruise.exportSpecies", cruiseName)); exportSpecies(exportContext, exportContext.getSpeciesToExport()); - } protected void exportSurvey(ExportContext exportContext, Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/report/ReportService.java 2013-12-09 15:01:12 UTC (rev 1438) @@ -138,7 +138,7 @@ engineConfig = new EngineConfig(); engineConfig.setBIRTHome(context.getConfig().getReportHomeDirectory().getAbsolutePath()); engineConfig.setResourcePath(context.getConfig().getReportHomeDirectory().getAbsolutePath()); - engineConfig.setLogConfig(context.getConfig().getReportLogFile().getAbsolutePath(), Level.FINE); + engineConfig.setLogConfig(context.getConfig().getReportLogDirectory().getAbsolutePath(), Level.FINE); // Get the instance of the engine try { @@ -177,7 +177,8 @@ // export fishing operation progressionModel.increments(_("tutti.report.step.export.fishingOperation")); File exportDirectory = getService(TuttiExportService.class). - exportCruiseToFileSystem(model.getCruiseId()); + exportFishingOperation(model.getCruiseId(), + model.getFishingOperationId()); ReportContext reportContext = new ReportContext(model, operation, Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-12-09 15:01:12 UTC (rev 1438) @@ -221,8 +221,8 @@ .addOption(TuttiConfigurationOption.REPORT_DIRECTORY) .setOptionShortLabel(_("tutti.config.option.service.report.directory.shortLabel")) - .addOption(TuttiConfigurationOption.REPORT_LOG_FILE) - .setOptionShortLabel(_("tutti.config.option.service.report.log.file.shortLabel")) + .addOption(TuttiConfigurationOption.REPORT_LOG_DIRECTORY) + .setOptionShortLabel(_("tutti.config.option.service.report.log.directory.shortLabel")) .addOption(TuttiConfigurationOption.DB_DIRECTORY) .setOptionShortLabel(_("tutti.config.option.persistence.db.directory.shortLabel")) Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-12-09 15:01:12 UTC (rev 1438) @@ -139,6 +139,8 @@ tutti.config.option.protocolId.description= tutti.config.option.service.report.backup.directory.shortLabel= tutti.config.option.service.report.directory.shortLabel= +tutti.config.option.service.report.log.directory.shortLabel= +tutti.config.option.service.report.log.file.shortLabel= tutti.config.option.site.url.shortLabel= tutti.config.option.startActionFile.description= tutti.config.option.tmp.directory.shortLabel= Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-12-09 14:04:30 UTC (rev 1437) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-12-09 15:01:12 UTC (rev 1438) @@ -131,7 +131,7 @@ tutti.config.option.protocolId.description=Identifiant du dernier protocole utilisé tutti.config.option.service.report.backup.directory.shortLabel=Répertoire des sauvegardes de rapport tutti.config.option.service.report.directory.shortLabel=Répertoire des modèles de rapport -tutti.config.option.service.report.log.file.shortLabel=Fichier de log de la génération des rapports +tutti.config.option.service.report.log.directory.shortLabel=Répertoire des log de génération des rapports tutti.config.option.site.url.shortLabel=URL du site technique tutti.config.option.startActionFile.description=Fichier tutti.config.option.tmp.directory.shortLabel=Répertoire temporaire