r846 - in trunk: tutti-service/src/main/java/fr/ifremer/tutti/service 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/content/home tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos tutti-ui-swing/src/
Author: tchemit Date: 2013-04-22 10:42:40 +0200 (Mon, 22 Apr 2013) New Revision: 846 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/846 Log: - fix missing i18n - fishing operation are no more persisted - refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.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/content/home/ExportCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.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-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-22 08:42:40 UTC (rev 846) @@ -24,7 +24,9 @@ * #L% */ +import com.google.common.base.Function; import com.google.common.base.Joiner; +import com.google.common.collect.Lists; import fr.ifremer.tutti.TuttiTechnicalException; import fr.ifremer.tutti.persistence.entities.TuttiEntity; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; @@ -336,6 +338,9 @@ @Override public String format(Serializable value) { + if (value == null) { + return "NA"; + } if (value instanceof Float) { return floatDelegate.format((Float) value); } @@ -355,7 +360,14 @@ @Override public String format(List<Person> value) { - return Joiner.on('|').join(value); + List<String> decoratedValues = + Lists.transform(value, new Function<Person, String>() { + @Override + public String apply(Person input) { + return input.getFirstName() + ' ' + input.getLastName(); + } + }); + return Joiner.on('|').join(decoratedValues); } } Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-22 08:42:40 UTC (rev 846) @@ -64,8 +64,8 @@ newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER); newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER); - newColumnForExport("Engin", Cruise.PROPERTY_GEAR, Gear.PROPERTY_NAME); - newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME); + newColumnForExport("Engin", FishingOperation.PROPERTY_GEAR, Gear.PROPERTY_NAME); + newColumnForExport("Navire", FishingOperation.PROPERTY_VESSEL, Vessel.PROPERTY_NAME); newColumnForExport("DateDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_TIME_SECOND); newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, TuttiCsvUtil.FLOAT); newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, TuttiCsvUtil.FLOAT); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java 2013-04-22 08:42:40 UTC (rev 846) @@ -108,7 +108,7 @@ } public Vessel getVessel() { - return cruise.getVessel(); + return fishingOperation.getVessel(); } public Date getGearShootingStartDate() { @@ -187,7 +187,7 @@ protected Serializable getGearUseFeature(Caracteristic caracteristic) { CaracteristicMap gearUseFeatures = fishingOperation.getGearUseFeatures(); - Serializable serializable = gearUseFeatures.get(caracteristic); + Serializable serializable = gearUseFeatures == null ? null : gearUseFeatures.get(caracteristic); return serializable; } } \ No newline at end of file Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-04-22 08:42:40 UTC (rev 846) @@ -24,6 +24,7 @@ * #L% */ +import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; @@ -61,25 +62,31 @@ Cruise cruise, FishingOperation operation) { - for (Map.Entry<Caracteristic, Serializable> entry : operation.getGearUseFeatures().entrySet()) { - Caracteristic caracteristic = entry.getKey(); + CaracteristicMap gearUseFeatures = operation.getGearUseFeatures(); + if (gearUseFeatures != null) { + for (Map.Entry<Caracteristic, Serializable> entry : gearUseFeatures.entrySet()) { + Caracteristic caracteristic = entry.getKey(); - ParameterExportRow row = new ParameterExportRow(); - row.setCruise(cruise); - row.setFishingOperation(operation); - row.setCaracteristic(caracteristic); - row.setValue(entry.getValue()); - rows.add(row); + ParameterExportRow row = new ParameterExportRow(); + row.setCruise(cruise); + row.setFishingOperation(operation); + row.setCaracteristic(caracteristic); + row.setValue(entry.getValue()); + rows.add(row); + } } - for (Map.Entry<Caracteristic, Serializable> entry : operation.getVesselUseFeatures().entrySet()) { - Caracteristic caracteristic = entry.getKey(); + CaracteristicMap vesselUseFeatures = operation.getVesselUseFeatures(); + if (vesselUseFeatures!=null) { + for (Map.Entry<Caracteristic, Serializable> entry : vesselUseFeatures.entrySet()) { + Caracteristic caracteristic = entry.getKey(); - ParameterExportRow row = new ParameterExportRow(); - row.setCruise(cruise); - row.setFishingOperation(operation); - row.setCaracteristic(caracteristic); - row.setValue(entry.getValue()); - rows.add(row); + ParameterExportRow row = new ParameterExportRow(); + row.setCruise(cruise); + row.setFishingOperation(operation); + row.setCaracteristic(caracteristic); + row.setValue(entry.getValue()); + rows.add(row); + } } } 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 06:53:55 UTC (rev 845) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-22 08:42:40 UTC (rev 846) @@ -31,6 +31,7 @@ import fr.ifremer.tutti.TuttiBusinessException; import fr.ifremer.tutti.TuttiIOUtil; import fr.ifremer.tutti.TuttiTechnicalException; +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; @@ -109,7 +110,9 @@ country = TuttiEntities.splitById(allCountry).get(countryId); } - public void exportProgram(String programId, File exportFile) { + public void exportProgram(String programId, + File exportFile, + ProgressionModel progressionModel) { Preconditions.checkNotNull(programId); Preconditions.checkNotNull(exportFile); @@ -118,7 +121,7 @@ List<Cruise> allCruise = persistenceService.getAllCruise(programId); for (Cruise cruise : allCruise) { - checkCruise(cruise); + checkCruise(progressionModel, cruise); } File basedir = new File(context.getConfig().newTempFile( @@ -132,17 +135,23 @@ for (Cruise cruise : allCruise) { // load full cruise cruise = persistenceService.getCruise(cruise.getId()); - exportCruise(cruise, exportContext); + exportCruise(cruise, exportContext, progressionModel); } TuttiIOUtil.close(exportContext, "Could not close export context"); + progressionModel.setMessage( + _("tutti.service.exportCruise.buildZip", exportFile)); + TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip"); + progressionModel.increments(1); } finally { IOUtils.closeQuietly(exportContext); } } - public void exportCruise(String cruiseId, File exportFile) { + public void exportCruise(String cruiseId, + File exportFile, + ProgressionModel progressionModel) { Preconditions.checkNotNull(cruiseId); Preconditions.checkNotNull(exportFile); @@ -151,7 +160,7 @@ Preconditions.checkNotNull(cruise); // check cruise fishing operations - checkCruise(cruise); + checkCruise(progressionModel, cruise); File basedir = new File(context.getConfig().newTempFile( "exportCruise"), "exportCruise-" + cruiseId); @@ -161,10 +170,14 @@ ExportContext exportContext = createExportContext(basedir); try { - exportCruise(cruise, exportContext); + exportCruise(cruise, exportContext, progressionModel); TuttiIOUtil.close(exportContext, "Could not close export context"); + progressionModel.setMessage( + _("tutti.service.exportCruise.buildZip", exportFile)); + TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip"); + progressionModel.increments(1); } finally { IOUtils.closeQuietly(exportContext); } @@ -180,13 +193,19 @@ horizontalOpeningDoorCaracteristic); } - protected void checkCruise(Cruise cruise) { + protected void checkCruise(ProgressionModel progressionModel, Cruise cruise) { Preconditions.checkNotNull(cruise); + + progressionModel.setMessage( + _("tutti.service.exportCruise.checkCruise", cruise.getName())); + // check cruise fishing operations Map<String, String> errors = tuttiWeightComputingService.checkCruise(cruise.getId()); + progressionModel.increments(1); + if (MapUtils.isNotEmpty(errors)) { // there is some fishing operations with some errors @@ -210,18 +229,41 @@ } protected void exportCruise(Cruise cruise, - ExportContext exportContext) { + ExportContext exportContext, + ProgressionModel progressionModel) { List<FishingOperation> operations = persistenceService.getAllFishingOperation(cruise.getId()); + // load fully operations + List<FishingOperation> loadedOperations = + Lists.newArrayListWithCapacity(operations.size()); + for (FishingOperation operation : operations) { + FishingOperation loadedOeration = + persistenceService.getFishingOperation(operation.getId()); + loadedOperations.add(loadedOeration); + } + + String cruiseName = cruise.getName(); + progressionModel.setMessage( + _("tutti.service.exportCruise.exportSurvey", cruiseName)); exportSurvey(exportContext, cruise); + progressionModel.increments(1); - exportOperations(exportContext, cruise, operations); + progressionModel.setMessage( + _("tutti.service.exportCruise.exportOperations", cruiseName)); + exportOperations(exportContext, cruise, loadedOperations); + progressionModel.increments(1); - exportParameters(exportContext, cruise, operations); + progressionModel.setMessage( + _("tutti.service.exportCruise.exportParameters", cruiseName)); + exportParameters(exportContext, cruise, loadedOperations); + progressionModel.increments(1); -// exportCatches(exportContext, cruise, operations); + progressionModel.setMessage( + _("tutti.service.exportCruise.exportCatches", cruiseName)); +// exportCatches(exportContext, cruise, loadedOperations); + progressionModel.increments(1); } protected void exportSurvey(ExportContext exportContext, @@ -241,6 +283,7 @@ protected void exportOperations(ExportContext exportContext, Cruise cruise, List<FishingOperation> operations) { + try { List<OperationExportRow> rows = Lists.newArrayList(); 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 06:53:55 UTC (rev 845) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-04-22 08:42:40 UTC (rev 846) @@ -49,6 +49,12 @@ tutti.service.catches.computeWeights.species.error.incoherentSampleWeight= tutti.service.export.invalid.cruise= tutti.service.export.invalid.fishingOperation= +tutti.service.exportCruise.buildZip= +tutti.service.exportCruise.checkCruise= +tutti.service.exportCruise.exportCatches= +tutti.service.exportCruise.exportOperations= +tutti.service.exportCruise.exportParameters= +tutti.service.exportCruise.exportSurvey= tutti.service.operations.computeWeights.benthos.error.incoherentCategoryWeight= tutti.service.operations.computeWeights.benthos.error.incoherentParentCategoryWeight= tutti.service.operations.computeWeights.benthos.error.incoherentRowWeightFrequency= 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 06:53:55 UTC (rev 845) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-22 08:42:40 UTC (rev 846) @@ -49,6 +49,12 @@ tutti.service.catches.computeWeights.species.error.incoherentSampleWeight= tutti.service.export.invalid.cruise=L'export de la campagne %s ne peut pas être réalisé suite aux erreurs rencontrées sur ses traits lors de l'élévation des poids \:\n%s tutti.service.export.invalid.fishingOperation=L'élévation des poids ne peut pas être réalisé sur le trait %s, pour la raison suivante %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.exportCatches=Export du fichier <strong>catch.csv</strong> pour la campagne %s +tutti.service.exportCruise.exportOperations=Export du fichier <strong>operations.csv</strong> pour la campagne %s +tutti.service.exportCruise.exportParameters=Export du fichier <strong>parameters.csv</strong> pour la campagne %s +tutti.service.exportCruise.exportSurvey=Export du fichier <strong>survey.csv</strong> pour la campagne %s tutti.service.operations.computeWeights.benthos.error.incoherentCategoryWeight=Le poids total des mensurations d'un lot du benthos est supérieur au poids de la catégorie tutti.service.operations.computeWeights.benthos.error.incoherentParentCategoryWeight=Le poids de la catégorie d'un lot du benthos est différent de la somme des poids de ses sous-catégories tutti.service.operations.computeWeights.benthos.error.incoherentRowWeightFrequency=Le poids total des mensurations d'un lot du benthos est différent du poids du sous-échantillon 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 06:53:55 UTC (rev 845) +++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-22 08:42:40 UTC (rev 846) @@ -26,9 +26,11 @@ import com.google.common.collect.Lists; import com.google.common.io.Files; +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.RessourceClassLoader; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; @@ -56,6 +58,7 @@ import java.io.File; import java.util.Date; import java.util.List; +import java.util.Map; /** * @author tchemit <chemit@codelutin.com> @@ -77,6 +80,8 @@ protected List<FishingOperation> operations; + protected ProgressionModel progressionModel; + @Override protected TuttiServiceContext createServiceContext(RessourceClassLoader loader, TuttiServiceConfig config) { @@ -96,6 +101,8 @@ cruise = createCruise(); operations = createOperations(cruise); + Map<String,FishingOperation> operationMap = TuttiEntities.splitById(operations); + serviceContext.getConfig().setCsvSeparator(';'); PersistenceService persistenceService = Mockito.mock(PersistenceService.class); @@ -109,6 +116,10 @@ Mockito.when(persistenceService.getAllCruise(Mockito.<String>any())).thenReturn(Lists.newArrayList(cruise)); Mockito.when(persistenceService.getAllCountry()).thenReturn(countries); Mockito.when(persistenceService.getAllFishingOperation(Mockito.<String>any())).thenReturn(operations); + Mockito.when(persistenceService.getFishingOperation("0")).thenReturn(operationMap.get("0")); + Mockito.when(persistenceService.getFishingOperation("1")).thenReturn(operationMap.get("1")); + Mockito.when(persistenceService.getFishingOperation("2")).thenReturn(operationMap.get("2")); + Mockito.when(persistenceService.getFishingOperation("3")).thenReturn(operationMap.get("3")); TuttiServiceContext serviceContextSpy = Mockito.spy(serviceContext); Mockito.when(serviceContextSpy.getService(Mockito.eq(PersistenceService.class))).thenReturn(persistenceService); @@ -124,6 +135,9 @@ service.tuttiWeightComputingService = tuttiWeightComputingService; + progressionModel = new ProgressionModel(); + progressionModel.setTotal(6); + } @Test @@ -135,7 +149,7 @@ Assert.assertFalse(exportFile.exists()); - service.exportProgram(cruise.getId(), exportFile); + service.exportProgram(cruise.getId(), exportFile, progressionModel); Assert.assertTrue(exportFile.exists()); } @@ -148,7 +162,7 @@ Assert.assertFalse(exportFile.exists()); - service.exportCruise(cruise.getId(), exportFile); + service.exportCruise(cruise.getId(), exportFile, progressionModel); Assert.assertTrue(exportFile.exists()); } @@ -353,7 +367,6 @@ private List<FishingOperation> createOperations(Cruise cruise) { List<FishingOperation> result = Lists.newArrayList(); - Caracteristic caracteristicInteger = TuttiBeanFactory.newCaracteristic(); caracteristicInteger.setCaracteristicType(CaracteristicType.NUMBER); caracteristicInteger.setId(0); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportCruiseAction.java 2013-04-22 08:42:40 UTC (rev 846) @@ -26,6 +26,7 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.TuttiIOUtil; +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.export.TuttiExportService; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; @@ -99,9 +100,13 @@ " to file: " + file); } - // export cruise + ProgressionModel progressionModel = new ProgressionModel(); + setProgressionModel(progressionModel); + // check cruise / export cruise / operation / parameter / catches / zip + progressionModel.setTotal(6); + TuttiExportService service = getContext().getTuttiExportService(); - service.exportCruise(cruise.getId(), file); + service.exportCruise(cruise.getId(), file, progressionModel); getHandler().resetEditCruiseAction(); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProgramAction.java 2013-04-22 08:42:40 UTC (rev 846) @@ -26,6 +26,8 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.TuttiIOUtil; +import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.export.TuttiExportService; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; @@ -34,6 +36,7 @@ import org.apache.commons.logging.LogFactory; import java.io.File; +import java.util.List; import static org.nuiton.i18n.I18n._; @@ -98,9 +101,16 @@ " to file: " + file); } - // export cruise + // nbCruise * (check cruise / export cruise / operation / parameter / catches) + zip + List<Cruise> allCruise = + getContext().getPersistenceService().getAllCruise(program.getId()); + + ProgressionModel progressionModel = new ProgressionModel(); + setProgressionModel(progressionModel); + progressionModel.setTotal(5 * allCruise.size() + 1); + TuttiExportService service = getContext().getTuttiExportService(); - service.exportProgram(program.getId(), file); + service.exportProgram(program.getId(), file, progressionModel); getHandler().resetEditProgramAction(); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-22 08:42:40 UTC (rev 846) @@ -237,7 +237,7 @@ getValidator().setBean(model); - ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED); +// ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED); ui.applyDataBinding(SelectCruiseUI.BINDING_NEW_CRUISE_BUTTON_ENABLED); ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CATCHES_BUTTON_ENABLED); ui.applyDataBinding(SelectCruiseUI.BINDING_VALIDATE_CATCHES_BUTTON_ENABLED); @@ -248,18 +248,18 @@ return getUI().getEditCatchesButton(); } - protected boolean resetEditProtolAction; + protected boolean resetEditProtocolAction; protected boolean resetEditProgramAction; protected boolean resetEditCruiseAction; public void resetEditProtolAction() { - resetEditProtolAction = true; + resetEditProtocolAction = true; try { ui.getEditProtocolComboBox().setSelectedIndex(0); } finally { - resetEditProtolAction = false; + resetEditProtocolAction = false; } } @@ -294,72 +294,99 @@ } public void startEditProgramAction(MouseEvent event) { - JComboBox existingProgramCombo = (JComboBox) event.getSource(); - TuttiActionHelper.runAction((AbstractButton) existingProgramCombo.getItemAt(0)); + startComboFirstAction(event); +// JComboBox existingProgramCombo = (JComboBox) event.getSource(); +// TuttiActionHelper.runAction((AbstractButton) existingProgramCombo.getItemAt(0)); } public void startEditProgramAction(ActionEvent event) { - JComboBox existingProgramCombo = (JComboBox) event.getSource(); - JButton selectedAction = (JButton) existingProgramCombo.getSelectedItem(); - // hide popup before performing the action, otherwise, if the action - // opens a popup, the user must click a first time to hide the combobox - // popup to then interact with the popup opened by the action - // (see http://forge.codelutin.com/issues/2032) - existingProgramCombo.setSelectedIndex(0); - existingProgramCombo.hidePopup(); - TuttiActionHelper.runAction(selectedAction); + startEditAction(!resetEditProgramAction, event); +// JComboBox existingProgramCombo = (JComboBox) event.getSource(); +// JButton selectedAction = (JButton) existingProgramCombo.getSelectedItem(); +// // hide popup before performing the action, otherwise, if the action +// // opens a popup, the user must click a first time to hide the combobox +// // popup to then interact with the popup opened by the action +// // (see http://forge.codelutin.com/issues/2032) +// existingProgramCombo.setSelectedIndex(0); +// existingProgramCombo.hidePopup(); +// TuttiActionHelper.runAction(selectedAction); } public void startEditCruiseAction(MouseEvent event) { - JComboBox existingCruiseCombo = (JComboBox) event.getSource(); - TuttiActionHelper.runAction((AbstractButton) existingCruiseCombo.getItemAt(0)); + startComboFirstAction(event); +// JComboBox existingCruiseCombo = (JComboBox) event.getSource(); +// TuttiActionHelper.runAction((AbstractButton) existingCruiseCombo.getItemAt(0)); } public void startEditCruiseAction(ActionEvent event) { - JComboBox existingCruiseCombo = (JComboBox) event.getSource(); - JButton selectedAction = (JButton) existingCruiseCombo.getSelectedItem(); - // hide popup before performing the action, otherwise, if the action - // opens a popup, the user must click a first time to hide the combobox - // popup to then interact with the popup opened by the action - // (see http://forge.codelutin.com/issues/2032) - existingCruiseCombo.setSelectedIndex(0); - existingCruiseCombo.hidePopup(); - TuttiActionHelper.runAction(selectedAction); + startEditAction(!resetEditCruiseAction, event); +// JComboBox existingCruiseCombo = (JComboBox) event.getSource(); +// JButton selectedAction = (JButton) existingCruiseCombo.getSelectedItem(); +// // hide popup before performing the action, otherwise, if the action +// // opens a popup, the user must click a first time to hide the combobox +// // popup to then interact with the popup opened by the action +// // (see http://forge.codelutin.com/issues/2032) +// existingCruiseCombo.setSelectedIndex(0); +// existingCruiseCombo.hidePopup(); +// TuttiActionHelper.runAction(selectedAction); } public void startExistingProtocolAction(MouseEvent event) { - JComboBox existingProtocolCombo = (JComboBox) event.getSource(); - TuttiActionHelper.runAction((AbstractButton) existingProtocolCombo.getItemAt(0)); + startComboFirstAction(event); +// JComboBox existingProtocolCombo = (JComboBox) event.getSource(); +// TuttiActionHelper.runAction((AbstractButton) existingProtocolCombo.getItemAt(0)); } public void startExistingProtocolAction(ActionEvent event) { - if (!resetEditProtolAction) { - JComboBox existingProtocolCombo = (JComboBox) event.getSource(); - JButton selectedAction = (JButton) existingProtocolCombo.getSelectedItem(); + startEditAction(!resetEditProtocolAction, event); +// if (!resetEditProtocolAction) { +// JComboBox existingProtocolCombo = (JComboBox) event.getSource(); +// JButton selectedAction = (JButton) existingProtocolCombo.getSelectedItem(); +// // hide popup before performing the action, otherwise, if the action +// // opens a popup, the user must click a first time to hide the combobox +// // popup to then interact with the popup opened by the action +// // (see http://forge.codelutin.com/issues/2032) +// existingProtocolCombo.setSelectedIndex(0); +// existingProtocolCombo.hidePopup(); +// TuttiActionHelper.runAction(selectedAction); +// } + } + + public void startNewProtocolAction(MouseEvent event) { + startComboFirstAction(event); +// JComboBox newProtocolCombo = (JComboBox) event.getSource(); +// TuttiActionHelper.runAction((AbstractButton) newProtocolCombo.getItemAt(0)); + } + + public void startNewProtocolAction(ActionEvent event) { + startEditAction(true, event); +// JComboBox newProtocolCombo = (JComboBox) event.getSource(); +// JButton selectedAction = (JButton) newProtocolCombo.getSelectedItem(); +// // hide popup before performing the action, otherwise, if the action +// // opens a popup, the user must click a first time to hide the combobox +// // popup to then interact with the popup opened by the action +// // (see http://forge.codelutin.com/issues/2032) +// newProtocolCombo.setSelectedIndex(0); +// newProtocolCombo.hidePopup(); +// TuttiActionHelper.runAction(selectedAction); + } + + protected void startComboFirstAction(MouseEvent event) { + JComboBox combo = (JComboBox) event.getSource(); + TuttiActionHelper.runAction((AbstractButton) combo.getItemAt(0)); + } + + protected void startEditAction(boolean canEdit, ActionEvent event) { + if (canEdit) { + JComboBox existingCombo = (JComboBox) event.getSource(); + JButton selectedAction = (JButton) existingCombo.getSelectedItem(); // hide popup before performing the action, otherwise, if the action // opens a popup, the user must click a first time to hide the combobox // popup to then interact with the popup opened by the action // (see http://forge.codelutin.com/issues/2032) - existingProtocolCombo.setSelectedIndex(0); - existingProtocolCombo.hidePopup(); + existingCombo.setSelectedIndex(0); + existingCombo.hidePopup(); TuttiActionHelper.runAction(selectedAction); } } - - public void startNewProtocolAction(MouseEvent event) { - JComboBox newProtocolCombo = (JComboBox) event.getSource(); - TuttiActionHelper.runAction((AbstractButton) newProtocolCombo.getItemAt(0)); - } - - public void startNewProtocolAction(ActionEvent event) { - JComboBox newProtocolCombo = (JComboBox) event.getSource(); - JButton selectedAction = (JButton) newProtocolCombo.getSelectedItem(); - // hide popup before performing the action, otherwise, if the action - // opens a popup, the user must click a first time to hide the combobox - // popup to then interact with the popup opened by the action - // (see http://forge.codelutin.com/issues/2032) - newProtocolCombo.setSelectedIndex(0); - newProtocolCombo.hidePopup(); - TuttiActionHelper.runAction(selectedAction); - } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIModel.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIModel.java 2013-04-22 08:42:40 UTC (rev 846) @@ -24,17 +24,12 @@ * #L% */ -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum; -import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.TabContentModel; -import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.collections.CollectionUtils; -import java.util.Collection; -import java.util.List; +import static org.nuiton.i18n.I18n.n_; /** * @author tchemit <chemit@codelutin.com> @@ -88,7 +83,7 @@ @Override public String getTitle() { - return "tutti.label.tab.accidental"; + return n_("tutti.label.tab.accidental"); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIModel.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIModel.java 2013-04-22 08:42:40 UTC (rev 846) @@ -41,6 +41,8 @@ import java.util.Collection; import java.util.List; +import static org.nuiton.i18n.I18n.n_; + /** * @author tchemit <chemit@codelutin.com> * @since 0.1 @@ -154,7 +156,7 @@ @Override public String getTitle() { - return "tutti.label.tab.benthos"; + return n_("tutti.label.tab.benthos"); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java 2013-04-22 08:42:40 UTC (rev 846) @@ -22,18 +22,13 @@ * #L% */ -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum; -import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.TabContentModel; -import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.collections.CollectionUtils; -import java.util.Collection; -import java.util.List; +import static org.nuiton.i18n.I18n.n_; /** * @author kmorin <kmorin@codelutin.com> @@ -95,7 +90,7 @@ @Override public String getTitle() { - return "tutti.label.tab.individualObservations"; + return n_("tutti.label.tab.individualObservations"); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java 2013-04-22 08:42:40 UTC (rev 846) @@ -39,6 +39,8 @@ import java.util.Collection; import java.util.List; +import static org.nuiton.i18n.I18n.n_; + /** * @author tchemit <chemit@codelutin.com> * @since 0.2 @@ -178,7 +180,7 @@ @Override public String getTitle() { - return "tutti.label.tab.marineLitter"; + return n_("tutti.label.tab.marineLitter"); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-04-22 08:42:40 UTC (rev 846) @@ -41,6 +41,8 @@ import java.util.Collection; import java.util.List; +import static org.nuiton.i18n.I18n.n_; + /** * @author tchemit <chemit@codelutin.com> * @since 0.1 @@ -404,7 +406,7 @@ @Override public String getTitle() { - return "tutti.label.tab.species"; + return n_("tutti.label.tab.species"); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java 2013-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java 2013-04-22 08:42:40 UTC (rev 846) @@ -80,6 +80,7 @@ protected void onRowModified(int rowIndex, RM row, String propertyName, Object oldValue, Object newValue) { recomputeRowValidState(row); super.onRowModified(rowIndex, row, propertyName, oldValue, newValue); + saveSelectedRowIfNeeded(); } @Override 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-04-22 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-22 08:42:40 UTC (rev 846) @@ -853,9 +853,12 @@ tutti.importPupitri.trunkFile.extension.description= tutti.label.catches.planktonTotalSampleWeight= tutti.label.catches.planktonTotalWeight= +tutti.label.tab.accidental= +tutti.label.tab.benthos= tutti.label.tab.catches= tutti.label.tab.catchesCaracteristics= tutti.label.tab.fishingOperation= +tutti.label.tab.individualObservations= tutti.label.tab.marineLitter= tutti.label.tab.plancton= tutti.legend.frequencyConfiguration= 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 06:53:55 UTC (rev 845) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-22 08:42:40 UTC (rev 846) @@ -7,6 +7,7 @@ tutti.about.bottomText=Copyright %s - %s - version %s tutti.about.message=<h3>Tutti</h3><p><strong>Outil de saisie de données d'opérations et de captures au cours des campagnes halieutiques.</strong></p><br/><p>Ce logiciel permettra la saisie en mer des données d'opération de pêche (positions, environnement, engin, etc) et des captures associées (composition de la capture en espèces scientifiques avec poids, nombres, tailles etc) pour l'ensemble des campagnes halieutiques réalisées par l'Ifremer.</p><p>Ce projet a été initiée en 2012 par l'<a href\="http\://www.ifremer.fr">Ifremer</a> et réalisé par la société <a href\="http\://codelutin.com">Codelutin</a>.</p><hr/><br/><p>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.forge.codelutin.com/tutti">site du projet</a>.</p><p>Projet hébergé sur la forge <a href\="http\://forge.codelutin.com/projects/tutti">Forge.codelutin.com</a>.</p> tutti.about.title=À propos de Tutti +tutti.label.tab.species=Espèces tutti.about.translate.content=<h2>Comment traduire Tutti</h2>Vous pouvez nous aider à traduire Tutti.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">tutti-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur (le caractère séprateur est une Tabultation)</li><li>Traduisez, Améliorer, ...</li><li>Enfin renvoyez-le nous</li></ul><br/>Nous intégrerons vos modifications avant la prochaine version. tutti.about.translate.title=Traduire Tutti tutti.about.update.app.noup.detail=<tr><td>%1$s</td><td>%2$s</td><td>%2$s<td><td></td></tr> @@ -852,9 +853,12 @@ tutti.importPupitri.trunkFile.extension.description=Fichier du trémie (.tnk) tutti.label.catches.planktonTotalSampleWeight=Poids total échantillonné tutti.label.catches.planktonTotalWeight=Poids total +tutti.label.tab.accidental=Captures accidentelles +tutti.label.tab.benthos=Benthos tutti.label.tab.catches=Captures tutti.label.tab.catchesCaracteristics=Résumé tutti.label.tab.fishingOperation=Trait +tutti.label.tab.individualObservations=Observatiosn individuelles tutti.label.tab.marineLitter=Macro déchets tutti.label.tab.plancton=Plancton tutti.legend.frequencyConfiguration=Configuration
participants (1)
-
tchemit@users.forge.codelutin.com