r852 - in trunk: tutti-service/src/main/java/fr/ifremer/tutti/service/config tutti-service/src/main/java/fr/ifremer/tutti/service/export tutti-service/src/main/resources/i18n tutti-service/src/test/java/fr/ifremer/tutti/service/export tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home tutti-ui-swing/src/main/resources/i18n
Author: tchemit Date: 2013-04-22 15:44:25 +0200 (Mon, 22 Apr 2013) New Revision: 852 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/852 Log: refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (desactivation pour le moment des actions + deplacement de la configuration dans le module service) Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.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/TuttiExportServiceTest.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-04-22 13:44:25 UTC (rev 852) @@ -31,6 +31,7 @@ import java.io.File; import java.net.URL; +import java.util.List; /** * Configuration for the service layer. @@ -111,6 +112,11 @@ TuttiServiceConfigOption.EXPORT_COUNTRY_ID.getKey()); } + public List<Integer> getSamplingOrderIds() { + ApplicationConfig.OptionList result = applicationConfig.getOptionAsList(TuttiServiceConfigOption.SAMPLING_CATEGORY_ORDER_IDS.getKey()); + return result.getOptionAsInt(); + } + public void prepareDirectories() { File dataDirectory = getDataDirectory(); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-04-22 13:44:25 UTC (rev 852) @@ -72,6 +72,12 @@ n_("tutti.config.option.export.countryId.description"), "12", String.class), + SAMPLING_CATEGORY_ORDER_IDS( + "tutti.samplingCategoryOrderIds", + n_("tutti.config.option.samplingCategoryOrderIds.description"), + "198,196,174,1430", + Integer[].class + ), // TRANSIENT CONFIG VERSION( Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-22 13:44:25 UTC (rev 852) @@ -29,8 +29,10 @@ 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.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Vessel; @@ -49,7 +51,7 @@ */ public class CatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<CatchExportRow> { - public CatchExportModel(char separator) { + public CatchExportModel(char separator, List<SampleCategoryEnum> samplingOrder) { super(separator); newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR); @@ -68,38 +70,51 @@ newColumnForExport("Type_Volume_Poids_Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY); newColumnForExport("Unite_Volume_Poids_Taxon", CatchExportRow.SPECIES_SAMPLE_CATEGORY); - newColumnForExport("Vrac/Hors_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); - newColumnForExport("NumOrdre_Vrac_H2", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); - newColumnForExport("Tot_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); - newColumnForExport("Ech_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); - newColumnForExport("Type_Volume_Poids_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); - newColumnForExport("Unite_Volume_Poids_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); + for (SampleCategoryEnum sampleCategoryEnum : samplingOrder) { + switch (sampleCategoryEnum) { - newColumnForExport("Categorie", CatchExportRow.SIZE_SAMPLE_CATEGORY); - newColumnForExport("NumOrdre_Cat_H2", CatchExportRow.SIZE_SAMPLE_CATEGORY); - newColumnForExport("Tot_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY); - newColumnForExport("Ech_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY); - newColumnForExport("Type_Volume_Poids_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY); - newColumnForExport("Unite_Volume_Poids_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY); + case sortedUnsorted: + newColumnForExport("Vrac/Hors_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); + newColumnForExport("NumOrdre_Vrac_H2", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); + newColumnForExport("Tot_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); + newColumnForExport("Ech_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); + newColumnForExport("Type_Volume_Poids_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); + newColumnForExport("Unite_Volume_Poids_Vrac", CatchExportRow.SORTED_UNSORTED_SAMPLE_CATEGORY); + break; + case size: + newColumnForExport("Categorie", CatchExportRow.SIZE_SAMPLE_CATEGORY); + newColumnForExport("NumOrdre_Cat_H2", CatchExportRow.SIZE_SAMPLE_CATEGORY); + newColumnForExport("Tot_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY); + newColumnForExport("Ech_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY); + newColumnForExport("Type_Volume_Poids_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY); + newColumnForExport("Unite_Volume_Poids_Cat", CatchExportRow.SIZE_SAMPLE_CATEGORY); + break; + case sex: + newColumnForExport("Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); + newColumnForExport("NumOrdre_Sexe_H2", CatchExportRow.SEX_SAMPLE_CATEGORY); + newColumnForExport("Tot_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); + newColumnForExport("Ech_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); + newColumnForExport("Type_Volume_Poids_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); + newColumnForExport("Unite_Volume_Poids_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); + break; + case maturity: + newColumnForExport("Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); + newColumnForExport("NumOrdre_Maturite_H2", CatchExportRow.MATURITY_SAMPLE_CATEGORY); + newColumnForExport("Tot_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); + newColumnForExport("Ech_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); + newColumnForExport("Type_Volume_Poids_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); + newColumnForExport("Unite_Volume_Poids_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); + break; + case age: + newColumnForExport("Age", CatchExportRow.AGE_SAMPLE_CATEGORY); + newColumnForExport("Num_Ordre_Age_H2", CatchExportRow.AGE_SAMPLE_CATEGORY); + break; + } + } - newColumnForExport("Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); - newColumnForExport("NumOrdre_Sexe_H2", CatchExportRow.SEX_SAMPLE_CATEGORY); - newColumnForExport("Tot_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); - newColumnForExport("Ech_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); - newColumnForExport("Type_Volume_Poids_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); - newColumnForExport("Unite_Volume_Poids_Sexe", CatchExportRow.SEX_SAMPLE_CATEGORY); + // mensuration - newColumnForExport("Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); - newColumnForExport("NumOrdre_Maturite_H2", CatchExportRow.MATURITY_SAMPLE_CATEGORY); - newColumnForExport("Tot_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); - newColumnForExport("Ech_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); - newColumnForExport("Type_Volume_Poids_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); - newColumnForExport("Unite_Volume_Poids_Maturite", CatchExportRow.MATURITY_SAMPLE_CATEGORY); - - newColumnForExport("Age", CatchExportRow.AGE_SAMPLE_CATEGORY); - newColumnForExport("Num_Ordre_Age_H2", CatchExportRow.AGE_SAMPLE_CATEGORY); - - newColumnForExport("Code_Longueur", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC); + newColumnForExport("Code_Longueur", CatchExportRow.FREQUENCY_LENGTH_STEP_CARACTERISTIC, Caracteristic.PROPERTY_ID); newColumnForExport("Taille", CatchExportRow.FREQUENCY_LENGTH_STEP); newColumnForExport("NumOrdre_Taille_H2", Cruise.PROPERTY_HEAD_OF_MISSION); newColumnForExport("Poids_Classe_Taille", CatchExportRow.FREQUENCY_WEIGHT); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-22 13:44:25 UTC (rev 852) @@ -40,6 +40,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; @@ -86,14 +87,16 @@ protected char csvSeparator; - private Caracteristic verticalOpeningCaracteristic; + protected Caracteristic verticalOpeningCaracteristic; - private Caracteristic horizontalOpeningWingCaracteristic; + protected Caracteristic horizontalOpeningWingCaracteristic; - private Caracteristic horizontalOpeningDoorCaracteristic; + protected Caracteristic horizontalOpeningDoorCaracteristic; - private TuttiLocation country; + protected TuttiLocation country; + protected List<SampleCategoryEnum> samplingOrder; + @Override public void setServiceContext(TuttiServiceContext context) { super.setServiceContext(context); @@ -108,6 +111,20 @@ List<TuttiLocation> allCountry = persistenceService.getAllCountry(); String countryId = context.getConfig().getExportCountryId(); country = TuttiEntities.splitById(allCountry).get(countryId); + + Map<Integer, SampleCategoryEnum> idMapping = SampleCategoryEnum.toIdMapping(); + + samplingOrder = Lists.newArrayList(); + + // always first sampling category + samplingOrder.add(SampleCategoryEnum.sortedUnsorted); + + for (Integer categoryId : context.getConfig().getSamplingOrderIds()) { + SampleCategoryEnum categoryEnum = idMapping.get(categoryId); + if (SampleCategoryEnum.sortedUnsorted != categoryEnum) { + samplingOrder.add(categoryEnum); + } + } } public void exportProgram(String programId, @@ -190,7 +207,8 @@ decoratorService, verticalOpeningCaracteristic, horizontalOpeningWingCaracteristic, - horizontalOpeningDoorCaracteristic); + horizontalOpeningDoorCaracteristic, + samplingOrder); } protected void checkCruise(ProgressionModel progressionModel, Cruise cruise) { @@ -397,7 +415,8 @@ DecoratorService decoratorService, Caracteristic verticalOpeningCaracteristic, Caracteristic horizontalOpeningWingCaracteristic, - Caracteristic horizontalOpeningDoorCaracteristic) { + Caracteristic horizontalOpeningDoorCaracteristic, + List<SampleCategoryEnum> samplingOrder) { try { @@ -431,7 +450,7 @@ parameterModel = new ParameterExportModel( csvSeparator, decoratorService); - catchModel = new CatchExportModel(csvSeparator); + catchModel = new CatchExportModel(csvSeparator, samplingOrder); surveyExport = TuttiCsvUtil.newRepeatableExport( surveyModel); 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 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-04-22 13:44:25 UTC (rev 852) @@ -4,6 +4,7 @@ tutti.config.option.export.countryId.description= tutti.config.option.inceptionYear.description= tutti.config.option.organizationName.description= +tutti.config.option.samplingCategoryOrderIds.description= tutti.config.option.site.url.description= tutti.config.option.tmp.directory.description= tutti.config.option.version.description= 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 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-22 13:44:25 UTC (rev 852) @@ -4,6 +4,7 @@ tutti.config.option.export.countryId.description=L'id du pays à utiliser pour les exports (il s'agit de la valeur LOCATION.ID). tutti.config.option.inceptionYear.description=Année de démarrage du projet. tutti.config.option.organizationName.description=Nom de l'organisation dans la licence +tutti.config.option.samplingCategoryOrderIds.description=Ordre des catégories d'échantillonnage tutti.config.option.site.url.description=Url du site internet de l'application tutti.config.option.tmp.directory.description=Répertoire temporaire utilisée par l'application (est nettoyé à chaque démarrage de l'application). tutti.config.option.version.description=Version courante de l'application Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java =================================================================== --- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-22 13:44:25 UTC (rev 852) @@ -34,6 +34,7 @@ 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.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; @@ -101,6 +102,17 @@ cruise = createCruise(); operations = createOperations(cruise); + SampleCategoryEnum.sortedUnsorted.setFieldValue(1428); + SampleCategoryEnum.sortedUnsorted.setInit(true); + SampleCategoryEnum.size.setFieldValue(198); + SampleCategoryEnum.size.setInit(true); + SampleCategoryEnum.sex.setFieldValue(196); + SampleCategoryEnum.sex.setInit(true); + SampleCategoryEnum.maturity.setFieldValue(174); + SampleCategoryEnum.maturity.setInit(true); + SampleCategoryEnum.age.setFieldValue(1430); + SampleCategoryEnum.age.setInit(true); + Map<String,FishingOperation> operationMap = TuttiEntities.splitById(operations); serviceContext.getConfig().setCsvSeparator(';'); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-04-22 13:44:25 UTC (rev 852) @@ -226,11 +226,6 @@ return StringUtils.isBlank(result) ? null : result; } - public List<Integer> getSamplingOrderIds() { - ApplicationConfig.OptionList result = applicationConfig.getOptionAsList(TuttiApplicationConfigOption.SAMPLING_CATEGORY_ORDER_IDS.getKey()); - return result.getOptionAsInt(); - } - public Color getColorRowInvalid() { return applicationConfig.getOptionAsColor(TuttiApplicationConfigOption.COLOR_ROW_INVALID.getKey()); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-04-22 13:44:25 UTC (rev 852) @@ -125,13 +125,6 @@ String.class ), - SAMPLING_CATEGORY_ORDER_IDS( - "tutti.samplingCategoryOrderIds", - n_("tutti.config.option.samplingCategoryOrderIds.description"), - "198,196,174,1430", - Integer[].class - ), - AUTO_POPUP_NUMBER_EDITOR( "tutti.ui.autoPopupNumberEditor", n_("tutti.config.option.ui.autoPopupNumberEditor.description"), Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-22 13:44:25 UTC (rev 852) @@ -67,7 +67,6 @@ #editProgramButton { actionIcon: edit; text: "tutti.selectCruise.action.editProgram"; - enabled: {model.isProgramFound()}; _tuttiAction: {EditProgramAction.class}; toolTipText: "tutti.selectCruise.action.editProgram.tip"; _help: {"tutti.selectCruise.action.editProgram.help"}; @@ -76,7 +75,7 @@ #exportProgramButton { actionIcon: export; text: "tutti.selectCruise.action.exportProgram"; - enabled: {model.isProgramFound()}; + enabled: false; _tuttiAction: {ExportProgramAction.class}; toolTipText: "tutti.selectCruise.action.exportProgram.tip"; _help: {"tutti.selectCruise.action.exportProgram.help"}; @@ -122,6 +121,7 @@ #exportCruiseButton { actionIcon: export; text: "tutti.selectCruise.action.exportCruise"; + enabled: false; _tuttiAction: {ExportCruiseAction.class}; toolTipText: "tutti.selectCruise.action.exportCruise.tip"; _help: {"tutti.selectCruise.action.exportCruise.help"}; 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-04-22 13:38:24 UTC (rev 851) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-22 13:44:25 UTC (rev 852) @@ -79,7 +79,6 @@ tutti.config.option.launch.mode.description=Mode de démarrage de l'application tutti.config.option.programId.description=Identifiant de la dernière série de campagne utilisée tutti.config.option.protocolId.description=Identifiant du dernier protocole utilisé -tutti.config.option.samplingCategoryOrderIds.description=Ordre des catégories d'échantillonnage tutti.config.option.tremieCarousselVessel.description=Navire ayant un carrousel et une trémie (ex. Thalassa) tutti.config.option.ui.autoPopupNumberEditor.description=Toujours afficher le pavé numérique lors de l'édition d'un nombre tutti.config.option.ui.color.blockingLayer.description=Couleur utilisée pour bloquer l'interface lors d'une action longue
participants (1)
-
tchemit@users.forge.codelutin.com