Author: tchemit Date: 2013-09-23 11:39:50 +0200 (Mon, 23 Sep 2013) New Revision: 1203 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1203 Log: fixes #3311: [MACRO-DECHET] Ajout du champs *Poids* sur l'?\195?\169cran de cr?\195?\169ation fixes #3310: [CAPTURE] pouvoir choisir dans la configuration l'unit?\195?\169 de saisie des poids (esp?\195?\168ces benthos macro d?\195?\169chets) kg ou g et donc adapter les intitul?\195?\169s des colonnes clean some code + fix doc typos... Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/WeightUnit.java Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html 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/category/EditSampleCategoryModelRowModel.java 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/operation/EditFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SaveCatchBatchAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicColumnIdentifier.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 trunk/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModelTest.java Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-23 09:39:50 UTC (rev 1203) @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Sat Sep 21 15:16:31 CEST 2013 +#Sun Sep 22 16:40:00 CEST 2013 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -38,7 +38,9 @@ tutti.createMarineLitterBatch.action.saveAndContinue.help=editFishingOperation.html\#captureMacroDechetsActions tutti.createMarineLitterBatch.field.marineLitterCategory.help=editFishingOperation.html\#captureMacroDechetsFields tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help=editFishingOperation.html\#captureMacroDechetsFields +tutti.createMarineLitterBatch.field.marineLitterWeight.help= tutti.createMarineLitterBatch.field.number.help=editFishingOperation.html\#captureMacroDechetsFields +tutti.createMarineLitterBatch.field.weight.help= tutti.createMarineLitterBatch.help=editFishingOperation.html\#captureMacroDechets tutti.createSpeciesBatch.action.addSpecies.help=editFishingOperation.html\#captureEspecesCreeLotActions tutti.createSpeciesBatch.action.cancel.help=editFishingOperation.html\#captureEspecesCreeLotActions Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-23 09:39:50 UTC (rev 1203) @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Sat Sep 21 15:16:31 CEST 2013 +#Sun Sep 22 16:40:00 CEST 2013 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -37,7 +37,9 @@ tutti.createMarineLitterBatch.action.saveAndContinue.help=editFishingOperation.html\#captureMacroDechetsActions tutti.createMarineLitterBatch.field.marineLitterCategory.help=editFishingOperation.html\#captureMacroDechetsFields tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help=editFishingOperation.html\#captureMacroDechetsFields +tutti.createMarineLitterBatch.field.marineLitterWeight.help= tutti.createMarineLitterBatch.field.number.help=editFishingOperation.html\#captureMacroDechetsFields +tutti.createMarineLitterBatch.field.weight.help= tutti.createMarineLitterBatch.help=editFishingOperation.html\#captureMacroDechets tutti.createSpeciesBatch.action.addSpecies.help=editFishingOperation.html\#captureEspecesCreeLotActions tutti.createSpeciesBatch.action.cancel.help=editFishingOperation.html\#captureEspecesCreeLotActions Modified: trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html =================================================================== --- trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html 2013-09-23 09:39:50 UTC (rev 1203) @@ -1,3 +1,26 @@ +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 - 2013 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> <!DOCTYPE html> <html lang="fr"> Property changes on: trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL 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-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfig.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -28,6 +28,7 @@ import fr.ifremer.tutti.TuttiTechnicalException; import fr.ifremer.tutti.service.config.TuttiServiceConfig; import fr.ifremer.tutti.service.config.TuttiServiceConfigOption; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; @@ -258,6 +259,26 @@ return applicationConfig.getOptionAsKeyStroke(TuttiApplicationConfigOption.SHORTCUT_CLOSE_POPUP.getKey()); } + public WeightUnit getSpeciesWeightUnit() { + return applicationConfig.getOption(WeightUnit.class, TuttiApplicationConfigOption.WEIGHT_UNIT_SPECIES.getKey()); + } + + public WeightUnit getBenthosWeightUnit() { + return applicationConfig.getOption(WeightUnit.class, TuttiApplicationConfigOption.WEIGHT_UNIT_BENTHOS.getKey()); + } + + public WeightUnit getMarineLitterWeightUnit() { + return applicationConfig.getOption(WeightUnit.class, TuttiApplicationConfigOption.WEIGHT_UNIT_MARINE_LITTER.getKey()); + } + + public WeightUnit getIndividualObservationWeightUnit() { + return applicationConfig.getOption(WeightUnit.class, TuttiApplicationConfigOption.WEIGHT_UNIT_INDIVIDUAL_OBSERVATION.getKey()); + } + + public WeightUnit getAccidentalCatchWeightUnit() { + return applicationConfig.getOption(WeightUnit.class, TuttiApplicationConfigOption.WEIGHT_UNIT_ACCIDENTAL_CATCH.getKey()); + } + public KeyStroke getShortCut(String actionName) { KeyStroke result = applicationConfig.getOptionAsKeyStroke( "tutti.ui." + actionName); 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-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -24,6 +24,7 @@ * #L% */ +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import org.nuiton.config.ConfigOptionDef; @@ -218,10 +219,45 @@ ADMIN_PASSWORD( "tutti.admin.password", - n_("tutti.config.option.ui.dateFormat.description"), + n_("tutti.config.option.ui.adminPassword.description"), // "ifremer" by default "ef399a6e6ec62c6e142440241a5b98f8", String.class + ), + + WEIGHT_UNIT_SPECIES( + "tutti.ui.weight.unit.species", + n_("tutti.config.option.ui.weight.unit.species.description"), + WeightUnit.KG.name(), + WeightUnit.class + ), + + WEIGHT_UNIT_BENTHOS( + "tutti.ui.weight.unit.benthos", + n_("tutti.config.option.ui.weight.unit.benthos.description"), + WeightUnit.G.name(), + WeightUnit.class + ), + + WEIGHT_UNIT_MARINE_LITTER( + "tutti.ui.weight.unit.marineLitter", + n_("tutti.config.option.ui.weight.unit.marineLitter.description"), + WeightUnit.KG.name(), + WeightUnit.class + ), + + WEIGHT_UNIT_INDIVIDUAL_OBSERVATION( + "tutti.ui.weight.unit.individualObservation", + n_("tutti.config.option.ui.weight.unit.individualObservation.description"), + WeightUnit.G.name(), + WeightUnit.class + ), + + WEIGHT_UNIT_ACCIDENTAL_CATCH( + "tutti.ui.weight.unit.accidentalCatch", + n_("tutti.config.option.ui.weight.unit.accidentalCatch.description"), + WeightUnit.KG.name(), + WeightUnit.class ); /** Configuration key. */ Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelRowModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/category/EditSampleCategoryModelRowModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -63,6 +63,10 @@ fromBean(entry); } + //------------------------------------------------------------------------// + //-- AbstractTuttiBeanUIModel --// + //------------------------------------------------------------------------// + @Override protected SampleCategoryModelEntry newEntity() { return new SampleCategoryModelEntry(); 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-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -122,7 +122,7 @@ } ); - // APPLICATION + // Application category helper.addCategory(n_("tutti.config.category.applications"), n_("tutti.config.category.applications.description"), @@ -144,7 +144,7 @@ .setOptionRenderer(tuttiLocationTableCellComponent.getNewTableCellRenderer()); } - // UI + // UI category helper.addCategory(n_("tutti.config.category.ui"), n_("tutti.config.category.ui.description"), @@ -158,6 +158,19 @@ .addOption(TuttiApplicationConfigOption.DATE_FORMAT) .addOption(TuttiApplicationConfigOption.COORDINATE_EDITOR_TYPE); + // Weight Unit category + + helper.addCategory(n_("tutti.config.category.weightUnit"), + n_("tutti.config.category.weightUnit.description"), + CALLBACK_UI) + .addOption(TuttiApplicationConfigOption.WEIGHT_UNIT_SPECIES) + .addOption(TuttiApplicationConfigOption.WEIGHT_UNIT_BENTHOS) + .addOption(TuttiApplicationConfigOption.WEIGHT_UNIT_MARINE_LITTER) + .addOption(TuttiApplicationConfigOption.WEIGHT_UNIT_INDIVIDUAL_OBSERVATION) + .addOption(TuttiApplicationConfigOption.WEIGHT_UNIT_ACCIDENTAL_CATCH); + + // Technical category + helper.addCategory(n_("tutti.config.category.technical"), n_("tutti.config.category.technical.description")) .addOption(TuttiServiceConfigOption.BASEDIR) Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -462,7 +462,7 @@ editFishingOperationUIModel.setFishingOperation(bean); - // update saisissuer selection + // update saisisseur selection List<Person> saisisseur = editFishingOperationUIModel.getRecorderPerson(); ui.getRecorderPersonList().getHandler().setSelected(saisisseur); @@ -581,7 +581,7 @@ } } - setCatch(bean, + setCatch(//bean, attachments, catchesUIModel, catchBatchMonitor, @@ -601,9 +601,9 @@ ui.getSpeciesTabContent().getHandler().selectFishingOperation(operationToLoad); } catch (InvalidBatchModelException e) { - // invalid sample category model + // invalid sample category model for species batches if (log.isDebugEnabled()) { - log.debug("Invalid sample category model", e); + log.debug("Invalid sample category model for species batches", e); } errorMessages.add(e.getMessage()); catchValid = false; @@ -613,9 +613,9 @@ ui.getBenthosTabContent().getHandler().selectFishingOperation(operationToLoad); } catch (InvalidBatchModelException e) { - // invalid sample category model + // invalid sample category model for benthos batches if (log.isDebugEnabled()) { - log.debug("Invalid sample category model", e); + log.debug("Invalid sample category model for benthos batches", e); } errorMessages.add(e.getMessage()); catchValid = false; @@ -632,7 +632,7 @@ } else { // remove catch - setCatch(bean, + setCatch(//bean, Collections.<Attachment>emptyList(), catchesUIModel, catchBatchMonitor, @@ -651,7 +651,7 @@ } - protected void setCatch(FishingOperation bean, + protected void setCatch(//FishingOperation bean, List<Attachment> attachments, EditCatchesUIModel catchesUIModel, TuttiBeanMonitor<EditCatchesUIModel> catchBatchMonitor, @@ -664,9 +664,9 @@ getModel().setCatchNotFound(catchNotFound); getModel().setSampleCatchModelValid(sampleModelValid); - catchesUIModel.setCatchBatch(batch); - catchesUIModel.setFishingOperation(bean); - catchesUIModel.fromBean(batch); +// catchesUIModel.setCatchBatch(batch); +// catchesUIModel.setFishingOperation(bean); + catchesUIModel.fromEntity(batch); catchesUIModel.addAllAttachment(attachments); catchesUIModel.setModify(false); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -84,7 +84,11 @@ } FishingOperationsUIModel model = new FishingOperationsUIModel(); - EditCatchesUIModel catchesUIModel = new EditCatchesUIModel(); + EditCatchesUIModel catchesUIModel = new EditCatchesUIModel( + getConfig().getSpeciesWeightUnit(), + getConfig().getBenthosWeightUnit(), + getConfig().getMarineLitterWeightUnit(), + getConfig().getIndividualObservationWeightUnit()); // load existing cruise Cruise cruise = getDataContext().getCruise(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -57,6 +57,7 @@ super(handler, false); } + //FIXME Do weightUnit conversion... @Override public void doAction() throws Exception { PersistenceService persistenceService = getContext().getPersistenceService(); @@ -66,6 +67,10 @@ EditCatchesUIModel model = getModel(); model.setLoadingData(true); + // --------- + // Compute species batches + // --------- + BatchContainer<SpeciesBatch> computedSpeciesBatches; Float totalSpeciesSortedWeight; try { @@ -89,6 +94,10 @@ throw e; } + // --------- + // Compute benthos batches + // --------- + BatchContainer<BenthosBatch> computedBenthosBatches; Float totalBenthosSortedWeight; try { @@ -112,6 +121,10 @@ throw e; } + // --------- + // Compute marine litter batches + // --------- + BatchContainer<MarineLitterBatch> computedMarineLitterBatches; try { computedMarineLitterBatches = @@ -124,6 +137,10 @@ throw e; } + // --------- + // Check species rates + // --------- + Float rate = getConfig().getDifferenceRateBetweenSortedAndTotalWeights(); if (model.getSpeciesTotalSortedWeight() != null && model.getSpeciesTotalSortedWeight() >= totalSpeciesSortedWeight @@ -153,6 +170,11 @@ model.setSpeciesTotalSortedComputedWeight(totalSpeciesSortedWeight); } } + + // --------- + // Check benthos rates + // --------- + if (model.getBenthosTotalSortedWeight() != null && model.getBenthosTotalSortedWeight() >= totalBenthosSortedWeight && model.getBenthosTotalSortedWeight() < (1 + rate / 100) * totalBenthosSortedWeight) { @@ -183,13 +205,13 @@ } boolean modified = model.isModify(); - CatchBatch catchBatch = model.toBean(); + CatchBatch catchBatch = model.toEntity(); tuttiWeightComputingService.computeCatchBatchWeights(catchBatch, computedSpeciesBatches, computedBenthosBatches, computedMarineLitterBatches); - model.setCatchBatch(catchBatch); - model.fromBean(catchBatch); +// model.setCatchBatch(catchBatch); + model.fromEntity(catchBatch); model.setLoadingData(false); model.setModify(modified); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -179,6 +179,7 @@ labelFor: {speciesTotalWeightField}; _strongStyle: true; _help: {"tutti.editCatchBatch.field.speciesTotalWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalWeightField { @@ -191,6 +192,7 @@ toolTipText: {"tutti.editCatchBatch.field.speciesTotalSortedWeight.tip"}; labelFor: {speciesTotalSortedWeightField}; _help: {"tutti.editCatchBatch.field.speciesTotalSortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalSortedWeightField { @@ -203,6 +205,7 @@ toolTipText: {"tutti.editCatchBatch.field.speciesTotalSampleSortedWeight.tip"}; labelFor: {speciesTotalSampleSortedWeightField}; _help: {"tutti.editCatchBatch.field.speciesTotalSampleSortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalSampleSortedWeightField { @@ -215,6 +218,7 @@ toolTipText: {"tutti.editCatchBatch.field.speciesTotalUnsortedWeight.tip"}; labelFor: {speciesTotalUnsortedWeightField}; _help: {"tutti.editCatchBatch.field.speciesTotalUnsortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalUnsortedWeightField { @@ -236,6 +240,7 @@ labelFor: {benthosTotalWeightField}; _strongStyle: true; _help: {"tutti.editCatchBatch.field.benthosTotalWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalWeightField { @@ -248,6 +253,7 @@ toolTipText: {"tutti.editCatchBatch.field.benthosTotalSortedWeight.tip"}; labelFor: {benthosTotalSortedWeightField}; _help: {"tutti.editCatchBatch.field.benthosTotalSortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalSortedWeightField { @@ -260,6 +266,7 @@ toolTipText: {"tutti.editCatchBatch.field.benthosTotalSampleSortedWeight.tip"}; labelFor: {benthosTotalSampleSortedWeightField}; _help: {"tutti.editCatchBatch.field.benthosTotalSampleSortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalSampleSortedWeightField { @@ -272,6 +279,7 @@ toolTipText: {"tutti.editCatchBatch.field.benthosTotalUnsortedWeight.tip"}; labelFor: {benthosTotalUnsortedWeightField}; _help: {"tutti.editCatchBatch.field.benthosTotalUnsortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalUnsortedWeightField { @@ -293,6 +301,7 @@ labelFor: {marineLitterTotalWeightField}; _strongStyle: true; _help: {"tutti.editCatchBatch.field.marineLitterTotalWeight.help"}; + _addWeightUnit: {handler.getConfig().getMarineLitterWeightUnit()}; } #marineLitterTotalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -58,6 +58,7 @@ import static org.nuiton.i18n.I18n.n_; /** + * //FIXME Do weightUnit conversion... * @author tchemit <chemit@codelutin.com> * @since 0.3 */ Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -28,6 +28,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; +import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum; import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; @@ -37,6 +38,7 @@ import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TabContentModel; import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.collections.CollectionUtils; import org.nuiton.util.beans.Binder; @@ -109,7 +111,7 @@ protected FishingOperation fishingOperation; - protected CatchBatch catchBatch; + protected final CatchBatch editObject = TuttiBeanFactory.newCatchBatch(); protected final List<Attachment> attachment = Lists.newArrayList(); @@ -131,8 +133,53 @@ protected boolean loadingData; - public EditCatchesUIModel() { + /** + * Catch weight unit. + * + * @since 2.5 + */ + protected final WeightUnit catchWeightUnit; + + /** + * Species weight unit. + * + * @since 2.5 + */ + protected final WeightUnit speciesWeightUnit; + + /** + * Benthos weight unit. + * + * @since 2.5 + */ + protected final WeightUnit benthosWeightUnit; + + /** + * Marine Litter weight unit. + * + * @since 2.5 + */ + protected final WeightUnit marineLitterWeightUnit; + + /** + * Indivudual observation weight unit. + * + * @since 2.5 + */ + protected final WeightUnit individualObservationWeightUnit; + + public EditCatchesUIModel(WeightUnit speciesWeightUnit, + WeightUnit benthosWeightUnit, + WeightUnit marineLitterWeightUnit, + WeightUnit individualObservationWeightUnit) { super(CatchBatch.class, fromBeanBinder, toBeanBinder); + //FIXME See if this can be configurable or guess from other weightUnits + this.catchWeightUnit = WeightUnit.KG; + this.speciesWeightUnit = speciesWeightUnit; + this.benthosWeightUnit = benthosWeightUnit; + this.marineLitterWeightUnit = marineLitterWeightUnit; + this.individualObservationWeightUnit = individualObservationWeightUnit; + speciesTotalSortedComputedOrNotWeight.addPropagateListener( PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, this); speciesTotalInertComputedOrNotWeight.addPropagateListener( @@ -171,10 +218,118 @@ @Override protected CatchBatch newEntity() { - return catchBatch; +// return editObject; + return TuttiBeanFactory.newCatchBatch(); } @Override + public void fromEntity(CatchBatch entity) { + + Object oldObjectId = getObjectId(); + + super.fromEntity(entity); +// setCatchBatch(entity); + +// Object oldValue = this.editObject; +// Object oldObjectId = getObjectId(); +// this.editObject = entity; + firePropertyChange(PROPERTY_CATCH_BATCH, null, entity); + firePropertyChange(PROPERTY_OBJECT_ID, oldObjectId, getObjectId()); + + setFishingOperation(entity == null ? null : entity.getFishingOperation()); + + if (entity != null) { + + // convert total weights + + setCatchTotalComputedWeight(catchWeightUnit.fromEntity(entity.getCatchTotalComputedWeight())); + setCatchTotalRejectedComputedWeight(catchWeightUnit.fromEntity(entity.getCatchTotalRejectedComputedWeight())); + setCatchTotalRejectedWeight(catchWeightUnit.fromEntity(entity.getCatchTotalRejectedWeight())); + setCatchTotalSortedCarousselWeight(catchWeightUnit.fromEntity(entity.getCatchTotalSortedCarousselWeight())); + setCatchTotalSortedComputedWeight(catchWeightUnit.fromEntity(entity.getCatchTotalSortedComputedWeight())); + setCatchTotalSortedTremisWeight(catchWeightUnit.fromEntity(entity.getCatchTotalSortedTremisWeight())); + setCatchTotalUnsortedComputedWeight(catchWeightUnit.fromEntity(entity.getCatchTotalUnsortedComputedWeight())); + setCatchTotalWeight(catchWeightUnit.fromEntity(entity.getCatchTotalWeight())); + + // convert species weights + + setSpeciesTotalComputedWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalComputedWeight())); + setSpeciesTotalInertComputedWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalInertComputedWeight())); + setSpeciesTotalInertWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalInertWeight())); + setSpeciesTotalLivingNotItemizedComputedWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalLivingNotItemizedComputedWeight())); + setSpeciesTotalLivingNotItemizedWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalLivingNotItemizedWeight())); + setSpeciesTotalSampleSortedComputedWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalSampleSortedComputedWeight())); + setSpeciesTotalSortedComputedWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalSortedComputedWeight())); + setSpeciesTotalSortedWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalSortedWeight())); + setSpeciesTotalUnsortedComputedWeight(speciesWeightUnit.fromEntity(entity.getSpeciesTotalUnsortedComputedWeight())); + + // convert benthos weights + + setBenthosTotalComputedWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalComputedWeight())); + setBenthosTotalInertComputedWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalInertComputedWeight())); + setBenthosTotalInertWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalInertWeight())); + setBenthosTotalLivingNotItemizedComputedWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalLivingNotItemizedComputedWeight())); + setBenthosTotalLivingNotItemizedWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalLivingNotItemizedWeight())); + setBenthosTotalSampleSortedComputedWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalSampleSortedComputedWeight())); + setBenthosTotalSortedComputedWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalSortedComputedWeight())); + setBenthosTotalSortedWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalSortedWeight())); + setBenthosTotalUnsortedComputedWeight(benthosWeightUnit.fromEntity(entity.getBenthosTotalUnsortedComputedWeight())); + + // convert marine litter weights + + setMarineLitterTotalComputedWeight(marineLitterWeightUnit.fromEntity(entity.getMarineLitterTotalComputedWeight())); + setMarineLitterTotalWeight(marineLitterWeightUnit.fromEntity(entity.getMarineLitterTotalWeight())); + } + } + + @Override + public CatchBatch toEntity() { + CatchBatch result = super.toEntity(); + + // convert total weights + + result.setCatchTotalComputedWeight(catchWeightUnit.toEntity(getCatchTotalComputedWeight())); + result.setCatchTotalRejectedComputedWeight(catchWeightUnit.toEntity(getCatchTotalRejectedComputedWeight())); + result.setCatchTotalRejectedWeight(catchWeightUnit.toEntity(getCatchTotalRejectedWeight())); + result.setCatchTotalSortedCarousselWeight(catchWeightUnit.toEntity(getCatchTotalSortedCarousselWeight())); + result.setCatchTotalSortedComputedWeight(catchWeightUnit.toEntity(getCatchTotalSortedComputedWeight())); + result.setCatchTotalSortedTremisWeight(catchWeightUnit.toEntity(getCatchTotalSortedTremisWeight())); + result.setCatchTotalUnsortedComputedWeight(catchWeightUnit.toEntity(getCatchTotalUnsortedComputedWeight())); + result.setCatchTotalWeight(catchWeightUnit.toEntity(getCatchTotalWeight())); + + // convert species weights + + result.setSpeciesTotalComputedWeight(speciesWeightUnit.toEntity(getSpeciesTotalComputedWeight())); + result.setSpeciesTotalInertComputedWeight(speciesWeightUnit.toEntity(getSpeciesTotalInertComputedWeight())); + result.setSpeciesTotalInertWeight(speciesWeightUnit.toEntity(getSpeciesTotalInertWeight())); + result.setSpeciesTotalLivingNotItemizedComputedWeight(speciesWeightUnit.toEntity(getSpeciesTotalLivingNotItemizedComputedWeight())); + result.setSpeciesTotalLivingNotItemizedWeight(speciesWeightUnit.toEntity(getSpeciesTotalLivingNotItemizedWeight())); + result.setSpeciesTotalSampleSortedComputedWeight(speciesWeightUnit.toEntity(getSpeciesTotalSampleSortedComputedWeight())); + result.setSpeciesTotalSortedComputedWeight(speciesWeightUnit.toEntity(getSpeciesTotalSortedComputedWeight())); + result.setSpeciesTotalSortedWeight(speciesWeightUnit.toEntity(getSpeciesTotalSortedWeight())); + result.setSpeciesTotalUnsortedComputedWeight(speciesWeightUnit.toEntity(getSpeciesTotalUnsortedComputedWeight())); + + // convert benthos weights + + result.setBenthosTotalComputedWeight(benthosWeightUnit.toEntity(getBenthosTotalComputedWeight())); + result.setBenthosTotalInertComputedWeight(benthosWeightUnit.toEntity(getBenthosTotalInertComputedWeight())); + result.setBenthosTotalInertWeight(benthosWeightUnit.toEntity(getBenthosTotalInertWeight())); + result.setBenthosTotalLivingNotItemizedComputedWeight(benthosWeightUnit.toEntity(getBenthosTotalLivingNotItemizedComputedWeight())); + result.setBenthosTotalLivingNotItemizedWeight(benthosWeightUnit.toEntity(getBenthosTotalLivingNotItemizedWeight())); + result.setBenthosTotalSampleSortedComputedWeight(benthosWeightUnit.toEntity(getBenthosTotalSampleSortedComputedWeight())); + result.setBenthosTotalSortedComputedWeight(benthosWeightUnit.toEntity(getBenthosTotalSortedComputedWeight())); + result.setBenthosTotalSortedWeight(benthosWeightUnit.toEntity(getBenthosTotalSortedWeight())); + result.setBenthosTotalUnsortedComputedWeight(benthosWeightUnit.toEntity(getBenthosTotalUnsortedComputedWeight())); + + // convert marine litter weights + + result.setMarineLitterTotalComputedWeight(marineLitterWeightUnit.toEntity(getMarineLitterTotalComputedWeight())); + result.setMarineLitterTotalWeight(marineLitterWeightUnit.toEntity(getMarineLitterTotalWeight())); + + return result; + } + + @Override public boolean isEmpty() { return getCatchTotalWeight() == null && getCatchTotalRejectedWeight() == null @@ -186,18 +341,18 @@ return null; } - public CatchBatch getCatchBatch() { - return catchBatch; - } +// public CatchBatch getCatchBatch() { +// return editObject; +// } +// +// public void setCatchBatch(CatchBatch catchBatch) { +// Object oldValue = this.editObject; +// Object oldObjectId = getObjectId(); +// this.editObject = catchBatch; +// firePropertyChange(PROPERTY_CATCH_BATCH, oldValue, catchBatch); +// firePropertyChange(PROPERTY_OBJECT_ID, oldObjectId, getObjectId()); +// } - public void setCatchBatch(CatchBatch catchBatch) { - Object oldValue = getCatchBatch(); - Object oldObjectId = getObjectId(); - this.catchBatch = catchBatch; - firePropertyChange(PROPERTY_CATCH_BATCH, oldValue, catchBatch); - firePropertyChange(PROPERTY_OBJECT_ID, oldObjectId, getObjectId()); - } - @Override public FishingOperation getFishingOperation() { return fishingOperation; @@ -645,7 +800,7 @@ @Override public Integer getObjectId() { - return catchBatch == null ? null : catchBatch.getIdAsInt(); + return editObject == null ? null : editObject.getIdAsInt(); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SaveCatchBatchAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SaveCatchBatchAction.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SaveCatchBatchAction.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -82,7 +82,7 @@ PersistenceService persistenceService = getContext().getPersistenceService(); - CatchBatch catchBatch = beanToSave.toBean(); + CatchBatch catchBatch = beanToSave.toEntity(); if (log.isInfoEnabled()) { log.info("FishingOperation " + catchBatch.getId() + Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -1,5 +1,29 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches; +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; /** Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -35,6 +35,7 @@ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapColumnRowModel; import org.nuiton.util.beans.Binder; @@ -69,6 +70,13 @@ */ protected final List<Attachment> attachment = Lists.newArrayList(); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + protected static final Binder<AccidentalBatch, AccidentalBatchRowModel> fromBeanBinder = BinderFactory.newBinder(AccidentalBatch.class, AccidentalBatchRowModel.class); @@ -77,20 +85,43 @@ BinderFactory.newBinder(AccidentalBatchRowModel.class, AccidentalBatch.class); - public AccidentalBatchRowModel() { + public AccidentalBatchRowModel(WeightUnit weightUnit) { super(AccidentalBatch.class, fromBeanBinder, toBeanBinder); + this.weightUnit = weightUnit; } - public AccidentalBatchRowModel(AccidentalBatch aBatch) { - this(); - fromBean(aBatch); + public AccidentalBatchRowModel(WeightUnit weightUnit, + AccidentalBatch entity) { + this(weightUnit); + fromEntity(entity); } + //------------------------------------------------------------------------// + //-- AbstractTuttiBeanUIModel --// + //------------------------------------------------------------------------// + @Override protected AccidentalBatch newEntity() { return TuttiBeanFactory.newAccidentalBatch(); } + @Override + public void fromEntity(AccidentalBatch entity) { + super.fromEntity(entity); + + // convert weight + setWeight(weightUnit.fromEntity(getWeight())); + } + + @Override + public AccidentalBatch toEntity() { + AccidentalBatch result = super.toEntity(); + + // convert weight + result.setWeight(weightUnit.toEntity(getWeight())); + return result; + } + //------------------------------------------------------------------------// //-- AccidentalBatch --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -25,6 +25,7 @@ */ import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; @@ -84,16 +85,23 @@ n_("tutti.editAccidentalBatch.table.header.file"), n_("tutti.editAccidentalBatch.table.header.file.tip")); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; - public AccidentalBatchTableModel(TableColumnModelExt columnModel) { + public AccidentalBatchTableModel(WeightUnit weightUnit, + TableColumnModelExt columnModel) { super(columnModel, false, false); - + this.weightUnit = weightUnit; setNoneEditableCols(); } @Override public AccidentalBatchRowModel createNewRow() { - AccidentalBatchRowModel result = new AccidentalBatchRowModel(); + AccidentalBatchRowModel result = new AccidentalBatchRowModel(weightUnit); // by default empty row is not valid result.setValid(false); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -45,6 +45,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent; @@ -87,6 +88,13 @@ protected ValidationService validationService = getContext().getValidationService(); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + public AccidentalBatchUIHandler(TuttiUI<?, ?> parentUi, AccidentalBatchUI ui) { super(parentUi, ui, @@ -99,6 +107,8 @@ AccidentalBatchRowModel.PROPERTY_CARACTERISTICS, AccidentalBatchRowModel.PROPERTY_COMMENT, AccidentalBatchRowModel.PROPERTY_ATTACHMENT); + + weightUnit = getConfig().getAccidentalCatchWeightUnit(); } //------------------------------------------------------------------------// @@ -143,7 +153,7 @@ protected AccidentalBatchRowModel loadBatch(AccidentalBatch aBatch) { AccidentalBatchRowModel newRow = - new AccidentalBatchRowModel(aBatch); + new AccidentalBatchRowModel(weightUnit, aBatch); List<Attachment> attachments = persistenceService.getAllAttachments(newRow.getObjectType(), @@ -330,12 +340,12 @@ } - { // Weight column addFloatColumnToModel(columnModel, AccidentalBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + weightUnit); } { // Size column @@ -392,7 +402,7 @@ // create table model AccidentalBatchTableModel tableModel = - new AccidentalBatchTableModel(columnModel); + new AccidentalBatchTableModel(weightUnit, columnModel); table.setModel(tableModel); table.setColumnModel(columnModel); @@ -434,6 +444,7 @@ //------------------------------------------------------------------------// //-- Public methods --// //------------------------------------------------------------------------// + public void createBatch() { EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); @@ -488,20 +499,20 @@ protected void saveRow(AccidentalBatchRowModel row) { - AccidentalBatch catchBean = row.toBean(); + AccidentalBatch entityToSave = row.toEntity(); FishingOperation fishingOperation = getModel().getFishingOperation(); - catchBean.setFishingOperation(fishingOperation); + entityToSave.setFishingOperation(fishingOperation); if (log.isDebugEnabled()) { log.debug("Selected fishingOperation: " + fishingOperation.getId()); } - if (TuttiEntities.isNew(catchBean)) { + if (TuttiEntities.isNew(entityToSave)) { - persistenceService.createAccidentalBatch(catchBean); - row.setId(catchBean.getId()); + persistenceService.createAccidentalBatch(entityToSave); + row.setId(entityToSave.getId()); } else { - persistenceService.saveAccidentalBatch(catchBean); + persistenceService.saveAccidentalBatch(entityToSave); } getModel().fireBatchUpdated(row); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -64,6 +64,7 @@ toolTipText: "tutti.createAccidentalBatch.field.accidentalWeight.tip"; labelFor: {accidentalWeightField}; _help: {"tutti.createAccidentalBatch.field.accidentalWeight.help"}; + _addWeightUnit: {handler.getConfig().getAccidentalCatchWeightUnit()}; } #accidentalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -24,6 +24,7 @@ * #L% */ +import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum; @@ -40,6 +41,7 @@ import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -168,8 +170,20 @@ */ protected List<BenthosBatchRowModel> childBatch; + /** + * Model of sample categories. + * + * @since 2.4 + */ protected final SampleCategoryModel sampleCategoryModel; + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + protected static final Binder<BenthosBatch, BenthosBatchRowModel> fromBeanBinder = BinderFactory.newBinder(BenthosBatch.class, BenthosBatchRowModel.class); @@ -178,8 +192,10 @@ BinderFactory.newBinder(BenthosBatchRowModel.class, BenthosBatch.class); - public BenthosBatchRowModel(SampleCategoryModel sampleCategoryModel) { + public BenthosBatchRowModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel) { super(BenthosBatch.class, fromBeanBinder, toBeanBinder); + this.weightUnit = weightUnit; this.sampleCategoryModel = sampleCategoryModel; categories = new SampleCategory[sampleCategoryModel.getNbSampling()]; @@ -196,22 +212,61 @@ computedOrNotNumber.addPropagateListener(PROPERTY_COMPUTED_NUMBER, this); } - public BenthosBatchRowModel(SampleCategoryModel sampleCategoryModel, - BenthosBatch aBatch, + + public BenthosBatchRowModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel, + BenthosBatch entity, List<BenthosBatchFrequency> frequencies) { - this(sampleCategoryModel); - fromBean(aBatch); + this(weightUnit, sampleCategoryModel); + + fromEntity(entity); + List<BenthosFrequencyRowModel> frequencyRows = - BenthosFrequencyRowModel.fromBeans(frequencies); + BenthosFrequencyRowModel.fromEntity(weightUnit, + frequencies); frequency.addAll(frequencyRows); Collections.sort(frequency); } + //------------------------------------------------------------------------// + //-- AbstractTuttiBeanUIModel --// + //------------------------------------------------------------------------// + @Override protected BenthosBatch newEntity() { return TuttiBeanFactory.newBenthosBatch(); } + @Override + public void fromEntity(BenthosBatch entity) { + super.fromEntity(entity); + + // convert weight + setWeight(weightUnit.fromEntity(getWeight())); + } + + @Override + public BenthosBatch toEntity() { + BenthosBatch result = super.toEntity(); + + // convert weight + result.setWeight(weightUnit.toEntity(getWeight())); + + SampleCategory<?> sampleCategory = getFinestCategory(); + Preconditions.checkNotNull(sampleCategory); + Preconditions.checkNotNull(sampleCategory.getCategoryId()); + Preconditions.checkNotNull(sampleCategory.getCategoryValue()); + + // apply sample category + result.setSampleCategoryId(sampleCategory.getCategoryId()); + result.setSampleCategoryValue(sampleCategory.getCategoryValue()); + + // convert sample category weight + Float categoryWeight = sampleCategory.getCategoryWeight(); + result.setSampleCategoryWeight(weightUnit.toEntity(categoryWeight)); + return result; + } + //------------------------------------------------------------------------// //-- SampleCategoryAble --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -29,6 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryColumnIdentifier; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.apache.commons.logging.Log; @@ -97,11 +98,25 @@ */ protected final Set<SampleCategoryColumnIdentifier<BenthosBatchRowModel>> sampleCols; + /** + * Sample categories model. + * + * @since 2.4 + */ protected final SampleCategoryModel sampleCategoryModel; - public BenthosBatchTableModel(SampleCategoryModel sampleCategoryModel, + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public BenthosBatchTableModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel, TableColumnModelExt columnModel) { super(columnModel, false, false); + this.weightUnit = weightUnit; this.sampleCategoryModel = sampleCategoryModel; setNoneEditableCols(SPECIES); @@ -124,7 +139,8 @@ @Override public BenthosBatchRowModel createNewRow() { - BenthosBatchRowModel result = new BenthosBatchRowModel(sampleCategoryModel); + BenthosBatchRowModel result = + new BenthosBatchRowModel(weightUnit, sampleCategoryModel); // by default empty row is not valid result.setValid(false); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -52,29 +52,12 @@ borderPainted: false; } -#importMultiPostButton { - actionIcon: import; - text: "tutti.editBenthosBatch.action.importMultiPost"; - toolTipText: "tutti.editBenthosBatch.action.importMultiPost.tip"; - i18nMnemonic: "tutti.editBenthosBatch.action.importMultiPost.mnemonic"; - _tuttiAction: {ImportMultiPostAction.class}; - _help: {"tutti.editBenthosBatch.action.importMultiPost.help"}; -} - -#exportMultiPostButton { - actionIcon: export; - text: "tutti.editBenthosBatch.action.exportMultiPost"; - toolTipText: "tutti.editBenthosBatch.action.exportMultiPost.tip"; - i18nMnemonic: "tutti.editBenthosBatch.action.exportMultiPost.mnemonic"; - _tuttiAction: {ExportMultiPostAction.class}; - _help: {"tutti.editBenthosBatch.action.exportMultiPost.help"}; -} - #benthosTotalWeightLabel { text: "tutti.editBenthosBatch.field.benthosTotalWeight"; toolTipText: "tutti.editBenthosBatch.field.benthosTotalWeight.tip"; labelFor: {benthosTotalWeightField}; _help: {"tutti.editBenthosBatch.field.benthosTotalWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalWeightField { @@ -87,6 +70,7 @@ toolTipText: "tutti.editBenthosBatch.field.benthosTotalSortedWeight.tip"; labelFor: {benthosTotalSortedWeightField}; _help: {"tutti.editBenthosBatch.field.benthosTotalSortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalSortedWeightField { @@ -99,6 +83,7 @@ toolTipText: "tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight.tip"; labelFor: {benthosTotalSampleSortedWeightField}; _help: {"tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalSampleSortedWeightField { @@ -111,6 +96,7 @@ toolTipText: "tutti.editBenthosBatch.field.benthosTotalUnsortedWeight.tip"; labelFor: {benthosTotalUnsortedWeightField}; _help: {"tutti.editBenthosBatch.field.benthosTotalUnsortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalUnsortedWeightField { @@ -123,6 +109,7 @@ toolTipText: "tutti.editBenthosBatch.field.benthosTotalInertWeight.tip"; labelFor: {benthosTotalInertWeightField}; _help: {"tutti.editBenthosBatch.field.benthosTotalInertWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalInertWeightField { @@ -135,6 +122,7 @@ toolTipText: "tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight.tip"; labelFor: {benthosTotalLivingNotItemizedWeightField}; _help: {"tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #benthosTotalLivingNotItemizedWeightField { @@ -238,6 +226,33 @@ _help: {"tutti.editBenthosBatch.action.createMelag.help"}; } +#editFrequenciesMenu { + actionIcon: show-frequency; + text: "tutti.editBenthosBatch.action.editFrequencies"; + toolTipText: "tutti.editBenthosBatch.action.editFrequencies.tip"; + i18nMnemonic: "tutti.editBenthosBatch.action.editFrequencies.mnemonic"; + enabled: {model.isTableViewModeAll() && model.isEditFrequenciesEnabled()}; + _help: {"tutti.editBenthosBatch.action.editFrequencies.help"}; +} + +#importMultiPostButton { + actionIcon: import; + text: "tutti.editBenthosBatch.action.importMultiPost"; + toolTipText: "tutti.editBenthosBatch.action.importMultiPost.tip"; + i18nMnemonic: "tutti.editBenthosBatch.action.importMultiPost.mnemonic"; + _tuttiAction: {ImportMultiPostAction.class}; + _help: {"tutti.editBenthosBatch.action.importMultiPost.help"}; +} + +#exportMultiPostButton { + actionIcon: export; + text: "tutti.editBenthosBatch.action.exportMultiPost"; + toolTipText: "tutti.editBenthosBatch.action.exportMultiPost.tip"; + i18nMnemonic: "tutti.editBenthosBatch.action.exportMultiPost.mnemonic"; + _tuttiAction: {ExportMultiPostAction.class}; + _help: {"tutti.editBenthosBatch.action.exportMultiPost.help"}; +} + #createBenthosBatchButton { actionIcon: batch-create; text: "tutti.editBenthosBatch.action.createBatch"; @@ -246,12 +261,3 @@ enabled: {model.isCreateBatchEnabled()}; _help: {"tutti.editBenthosBatch.action.createBatch.help"}; } - -#editFrequenciesMenu { - actionIcon: show-frequency; - text: "tutti.editBenthosBatch.action.editFrequencies"; - toolTipText: "tutti.editBenthosBatch.action.editFrequencies.tip"; - i18nMnemonic: "tutti.editBenthosBatch.action.editFrequencies.mnemonic"; - enabled: {model.isTableViewModeAll() && model.isEditFrequenciesEnabled()}; - _help: {"tutti.editBenthosBatch.action.editFrequencies.help"}; -} \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -57,6 +57,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; import fr.ifremer.tutti.ui.swing.util.comment.CommentCellEditor; @@ -118,6 +119,13 @@ protected final SampleCategoryModel sampleCategoryModel; + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + public BenthosBatchUIHandler(TuttiUI<?, ?> parentUi, BenthosBatchUI ui) { super(parentUi, ui, @@ -130,6 +138,8 @@ SpeciesBatchRowModel.PROPERTY_FREQUENCY, SpeciesBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM); + weightUnit = getConfig().getBenthosWeightUnit(); + sampleCategoryModel = getDataContext().getSampleCategoryModel(); tableFilters = new EnumMap<TableViewMode, RowFilter<BenthosBatchTableModel, Integer>>(TableViewMode.class); @@ -245,7 +255,7 @@ @Override protected boolean isRowValid(BenthosBatchRowModel row) { - BenthosBatch batch = convertRowToBean(row, true); + BenthosBatch batch = convertRowToEntity(row, true); NuitonValidatorResult validator = validationService.validateBenthosBatch(batch); boolean result = !validator.hasErrorMessagess(); @@ -254,7 +264,9 @@ getContext().getValidationContext()) && row.isBatchLeaf()) { List<BenthosBatchFrequency> frequencies = - BenthosFrequencyRowModel.toBeans(row.getFrequency(), batch); + BenthosFrequencyRowModel.toEntity( + row.getFrequency(), + batch); result = TuttiProtocols.isBenthosBatchValid( getDataContext().getProtocol(), batch, @@ -534,7 +546,8 @@ addSampleCategoryColumnToModel(columnModel, columnIdentifier, caracteristicDecorator, - defaultRenderer); + defaultRenderer, + weightUnit); } { // Weight column @@ -544,7 +557,8 @@ Float.class, false, true, 3, computedDataColor), TuttiComputedOrNotDataTableCell.newRender( defaultRenderer, true, 3, computedDataColor), - BenthosBatchTableModel.WEIGHT); + BenthosBatchTableModel.WEIGHT, + weightUnit); } { // Number column (from frequencies) @@ -580,7 +594,9 @@ // create table model BenthosBatchTableModel tableModel = - new BenthosBatchTableModel(sampleCategoryModel, columnModel); + new BenthosBatchTableModel(weightUnit, + sampleCategoryModel, + columnModel); table.setModel(tableModel); table.setColumnModel(columnModel); @@ -785,7 +801,6 @@ BenthosBatchUIModel model = getModel(); model.setLeafNumber(model.getLeafNumber() + newBatches.size() - 1); - recomputeBatchActionEnable(); } @@ -818,28 +833,37 @@ protected void saveRow(BenthosBatchRowModel row) { FishingOperation fishingOperation = getModel().getFishingOperation(); + Preconditions.checkNotNull(fishingOperation); - Preconditions.checkNotNull(row.getSpecies()); - SampleCategory<?> sampleCategory = row.getFinestCategory(); - Preconditions.checkNotNull(sampleCategory); - Preconditions.checkNotNull(sampleCategory.getCategoryId()); - Preconditions.checkNotNull(sampleCategory.getCategoryValue()); + Preconditions.checkNotNull(row.getFinestCategory()); + Preconditions.checkNotNull(row.getFinestCategory().getCategoryId()); + Preconditions.checkNotNull(row.getFinestCategory().getCategoryValue()); - BenthosBatch catchBean = row.toBean(); - catchBean.setFishingOperation(fishingOperation); +// SampleCategory<?> sampleCategory = row.getFinestCategory(); +// Preconditions.checkNotNull(sampleCategory); +// Preconditions.checkNotNull(sampleCategory.getCategoryId()); +// Preconditions.checkNotNull(sampleCategory.getCategoryValue()); + BenthosBatch entityToSave = row.toEntity(); + + entityToSave.setFishingOperation(fishingOperation); + BenthosBatchRowModel parent = row.getParentBatch(); if (parent != null) { - catchBean.setParentBatch(parent.toBean()); + //FIXME Check no need to convert parent weight ? :( + entityToSave.setParentBatch(parent.toBean()); } - // apply sample category - catchBean.setSampleCategoryId(sampleCategory.getCategoryId()); - catchBean.setSampleCategoryValue(sampleCategory.getCategoryValue()); - catchBean.setSampleCategoryWeight(sampleCategory.getCategoryWeight()); +// // apply sample category +// entityToSave.setSampleCategoryId(sampleCategory.getCategoryId()); +// entityToSave.setSampleCategoryValue(sampleCategory.getCategoryValue()); +// +// // convert sample category weight +// Float categoryWeight = sampleCategory.getCategoryWeight(); +// entityToSave.setSampleCategoryWeight(weightUnit.toEntity(categoryWeight)); - if (TuttiEntities.isNew(catchBean)) { + if (TuttiEntities.isNew(entityToSave)) { BenthosBatchRowModel batchParent = row.getParentBatch(); String parentBatchId = null; @@ -852,29 +876,31 @@ log.info("Persist new species batch with parentId: " + parentBatchId); } - catchBean = persistenceService.createBenthosBatch(catchBean, - parentBatchId); - row.setId(catchBean.getId()); + entityToSave = persistenceService.createBenthosBatch(entityToSave, + parentBatchId); + row.setId(entityToSave.getId()); } else { if (log.isInfoEnabled()) { - log.info("Persist existing species batch: " + catchBean.getId() + " (parent : " + catchBean.getParentBatch() + ")"); + log.info("Persist existing species batch: " + entityToSave.getId() + " (parent : " + entityToSave.getParentBatch() + ")"); } - persistenceService.saveBenthosBatch(catchBean); + persistenceService.saveBenthosBatch(entityToSave); } List<BenthosFrequencyRowModel> frequencyRows = row.getFrequency(); List<BenthosBatchFrequency> frequency = - BenthosFrequencyRowModel.toBeans(frequencyRows, catchBean); + BenthosFrequencyRowModel.toEntity( + frequencyRows, + entityToSave); if (log.isInfoEnabled()) { log.info("Will save " + frequency.size() + " frequencies."); } frequency = persistenceService.saveBenthosBatchFrequency( - catchBean.getId(), frequency); + entityToSave.getId(), frequency); // push it back to row model - frequencyRows = BenthosFrequencyRowModel.fromBeans(frequency); + frequencyRows = BenthosFrequencyRowModel.fromEntity(weightUnit, frequency); row.setFrequency(frequencyRows); getModel().fireBatchUpdated(row); @@ -1010,7 +1036,8 @@ persistenceService.getAllBenthosBatchFrequency(id); BenthosBatchRowModel newRow = - new BenthosBatchRowModel(sampleCategoryModel, + new BenthosBatchRowModel(weightUnit, + sampleCategoryModel, aBatch, frequencies); @@ -1041,8 +1068,8 @@ newRow, sampleCategoryId, aBatch.getSampleCategoryValue(), - aBatch.getSampleCategoryWeight(), - aBatch.getSampleCategoryComputedWeight()); + weightUnit.fromEntity(aBatch.getSampleCategoryWeight()), + weightUnit.fromEntity(aBatch.getSampleCategoryComputedWeight())); rows.add(newRow); @@ -1120,14 +1147,16 @@ protected <C extends Serializable> void addSampleCategoryColumnToModel(TableColumnModel columnModel, ColumnIdentifier<BenthosBatchRowModel> columnIdentifier, Decorator<C> decorator, - TableCellRenderer defaultRenderer) { + TableCellRenderer defaultRenderer, + WeightUnit weightUnit) { addColumnToModel( columnModel, SampleCategoryComponent.newEditor(decorator), SampleCategoryComponent.newRender(defaultRenderer, decorator, getConfig().getColorComputedWeights()), - columnIdentifier); + columnIdentifier, + weightUnit); } public void removeFromSpeciesUsed(BenthosBatchRowModel row) { @@ -1175,7 +1204,7 @@ return model.getSelectedSpecies(); } - protected BenthosBatch convertRowToBean(BenthosBatchRowModel row, boolean convertParent) { + protected BenthosBatch convertRowToEntity(BenthosBatchRowModel row, boolean convertParent) { SampleCategory<?> sampleCategory = row.getFinestCategory(); Preconditions.checkNotNull(sampleCategory); Preconditions.checkNotNull(sampleCategory.getCategoryId()); @@ -1183,13 +1212,20 @@ BenthosBatch catchBean = row.toBean(); + // convert weight + Float weight = catchBean.getWeight(); + catchBean.setWeight(weightUnit.toEntity(weight)); + // apply sample category catchBean.setSampleCategoryId(sampleCategory.getCategoryId()); catchBean.setSampleCategoryValue(sampleCategory.getCategoryValue()); - catchBean.setSampleCategoryWeight(sampleCategory.getCategoryWeight()); + // convert sample category weight + Float categoryWeight = sampleCategory.getCategoryWeight(); + catchBean.setSampleCategoryWeight(weightUnit.toEntity(categoryWeight)); + if (convertParent && row.getParentBatch() != null) { - BenthosBatch parent = convertRowToBean(row.getParentBatch(), true); + BenthosBatch parent = convertRowToEntity(row.getParentBatch(), true); catchBean.setParentBatch(parent); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -72,6 +72,7 @@ toolTipText: "tutti.createBenthosBatch.field.batchWeight.tip"; labelFor: {batchWeightField}; _help: {"tutti.createBenthosBatch.field.batchWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #batchWeightField { @@ -99,7 +100,7 @@ #categoryLabel { text: "tutti.createBenthosBatch.field.category"; - toolTipText: "tutti.createBenthosBatch.field.categoryField.tip"; + toolTipText: "tutti.createBenthosBatch.field.category.tip"; labelFor: {categoryComboBox}; _help: {"tutti.createBenthosBatch.field.categoryField.help"}; } @@ -115,9 +116,10 @@ #sampleWeightLabel { text: "tutti.createBenthosBatch.field.sampleWeight"; - toolTipText: "tutti.createBenthosBatch.field.sampleWeightField.tip"; + toolTipText: "tutti.createBenthosBatch.field.sampleWeight.tip"; labelFor: {sampleWeightField}; _help: {"tutti.createBenthosBatch.field.sampleWeightField.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #sampleWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -515,7 +515,8 @@ addFloatColumnToModel(columnModel, SplitBenthosBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + getConfig().getBenthosWeightUnit()); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -31,6 +31,7 @@ import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -82,6 +83,13 @@ */ protected Caracteristic lengthStepCaracteristic; + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + protected static final Binder<BenthosBatchFrequency, BenthosFrequencyRowModel> fromBeanBinder = BinderFactory.newBinder(BenthosBatchFrequency.class, BenthosFrequencyRowModel.class); @@ -92,33 +100,71 @@ private static final Ordering<Float> ordering = Ordering.natural().nullsFirst(); - public static List<BenthosFrequencyRowModel> fromBeans(List<BenthosBatchFrequency> frequency) { + //------------------------------------------------------------------------// + //-- Factory methods --// + //------------------------------------------------------------------------// + + public static List<BenthosFrequencyRowModel> fromEntity(WeightUnit weightUnit, + List<BenthosBatchFrequency> entities) { List<BenthosFrequencyRowModel> result = Lists.newArrayList(); - for (BenthosBatchFrequency b : frequency) { - BenthosFrequencyRowModel model = new BenthosFrequencyRowModel(); - fromBeanBinder.copy(b, model); - result.add(model); + for (BenthosBatchFrequency entity : entities) { + + BenthosFrequencyRowModel row = + new BenthosFrequencyRowModel(weightUnit); + row.fromEntity(entity); + result.add(row); } return result; } - public static List<BenthosBatchFrequency> toBeans(List<BenthosFrequencyRowModel> frequency, BenthosBatch batch) { + public static List<BenthosBatchFrequency> toEntity(List<BenthosFrequencyRowModel> rows, + BenthosBatch batch) { List<BenthosBatchFrequency> result = Lists.newArrayList(); - for (BenthosFrequencyRowModel b : frequency) { - BenthosBatchFrequency model = - TuttiBeanFactory.newBenthosBatchFrequency(); - toBeanBinder.copy(b, model); + for (BenthosFrequencyRowModel row : rows) { + BenthosBatchFrequency model = row.toEntity(); + model.setBatch(batch); result.add(model); } return result; } - public BenthosFrequencyRowModel() { + public BenthosFrequencyRowModel(WeightUnit weightUnit) { super(BenthosBatchFrequency.class, fromBeanBinder, toBeanBinder); + this.weightUnit = weightUnit; } + //------------------------------------------------------------------------// + //-- AbstractTuttiBeanUIModel --// + //------------------------------------------------------------------------// + @Override + protected BenthosBatchFrequency newEntity() { + return TuttiBeanFactory.newBenthosBatchFrequency(); + } + + @Override + public void fromEntity(BenthosBatchFrequency entity) { + super.fromEntity(entity); + + // convert weight + setWeight(weightUnit.fromEntity(getWeight())); + } + + @Override + public BenthosBatchFrequency toEntity() { + BenthosBatchFrequency result = super.toEntity(); + + // convert weight + result.setWeight(weightUnit.toEntity(getWeight())); + return result; + } + + //------------------------------------------------------------------------// + //-- BenthosBatchFrequency --// + //------------------------------------------------------------------------// + + @Override public Float getLengthStep() { return lengthStep; } @@ -182,11 +228,6 @@ } @Override - protected BenthosBatchFrequency newEntity() { - return TuttiBeanFactory.newBenthosBatchFrequency(); - } - - @Override public Integer getRankOrder() { return null; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -25,6 +25,7 @@ */ import com.google.common.collect.Maps; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; @@ -65,9 +66,18 @@ private final Map<Float, BenthosFrequencyRowModel> rowCache; - public BenthosFrequencyTableModel(TableColumnModelExt columnModel, + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public BenthosFrequencyTableModel(WeightUnit weightUnit, + TableColumnModelExt columnModel, BenthosFrequencyUIModel uiModel) { super(columnModel, true, true); + this.weightUnit = weightUnit; this.uiModel = uiModel; this.rowCache = Maps.newTreeMap(); setNoneEditableCols(); @@ -87,7 +97,8 @@ lengthStep + uiModel.getStep()); } } - BenthosFrequencyRowModel result = new BenthosFrequencyRowModel(); + BenthosFrequencyRowModel result = + new BenthosFrequencyRowModel(weightUnit); result.addPropertyChangeListener(BenthosFrequencyRowModel.PROPERTY_LENGTH_STEP, new PropertyChangeListener() { @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -76,6 +76,7 @@ labelFor: {totalWeightField}; enabled: {model.getTotalWeight() != null}; _help: {"tutti.editBenthosFrequencies.field.totalWeight.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #totalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -42,6 +42,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.SwingUtil; @@ -88,12 +89,21 @@ protected Set<BenthosFrequencyRowModel> withWeightRows = Sets.newHashSet(); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + public BenthosFrequencyUIHandler(TuttiUIContext context, BenthosFrequencyUI ui) { super(context, ui, BenthosFrequencyRowModel.PROPERTY_LENGTH_STEP, BenthosFrequencyRowModel.PROPERTY_NUMBER, BenthosFrequencyRowModel.PROPERTY_WEIGHT); + + this.weightUnit = context.getConfig().getBenthosWeightUnit(); } //------------------------------------------------------------------------// @@ -204,7 +214,7 @@ getDataContext().getSampleCategoryModel(); BenthosFrequencyUIModel model = - new BenthosFrequencyUIModel(sampleCategoryModel); + new BenthosFrequencyUIModel(weightUnit, sampleCategoryModel); ui.setContextValue(model); } @@ -314,12 +324,16 @@ addFloatColumnToModel(columnModel, BenthosFrequencyTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + weightUnit); } // create table model BenthosFrequencyTableModel tableModel = - new BenthosFrequencyTableModel(columnModel, model); + new BenthosFrequencyTableModel( + weightUnit, + columnModel, + model); JXTable table = getTable(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; import java.util.List; @@ -152,14 +153,34 @@ protected Set<BenthosFrequencyRowModel> emptyRows; - protected SampleCategoryModel sampleCategoryModel; + /** + * Sample categories model. + * + * @since 2.4 + */ + protected final SampleCategoryModel sampleCategoryModel; - public BenthosFrequencyUIModel(SampleCategoryModel sampleCategoryModel) { + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public BenthosFrequencyUIModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel) { super(BenthosBatchRowModel.class, null, null); + this.weightUnit = weightUnit; this.sampleCategoryModel = sampleCategoryModel; setEmptyRows(Sets.<BenthosFrequencyRowModel>newHashSet()); } + @Override + protected BenthosBatchRowModel newEntity() { + return new BenthosBatchRowModel(weightUnit, sampleCategoryModel); + } + + @Override public void setRows(List<BenthosFrequencyRowModel> rows) { super.setRows(rows); setEmptyRows(Sets.<BenthosFrequencyRowModel>newHashSet()); @@ -317,9 +338,4 @@ emptyRows.remove(row); firePropertyChange(PROPERTY_EMPTY_ROWS, null, emptyRows); } - - @Override - protected BenthosBatchRowModel newEntity() { - return new BenthosBatchRowModel(sampleCategoryModel); - } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -32,7 +32,7 @@ #categoryLabel { text: "tutti.splitBenthosBatch.field.category"; - toolTipText: "tutti.splitBenthosBatch.field.categoryField.tip"; + toolTipText: "tutti.splitBenthosBatch.field.category.tip"; labelFor: {categoryComboBox}; _help: {"tutti.splitBenthosBatch.field.categoryField.help"}; } @@ -43,9 +43,10 @@ #batchWeightLabel { text: "tutti.splitBenthosBatch.field.batchWeight"; - toolTipText: "tutti.splitBenthosBatch.field.batchWeightField.tip"; + toolTipText: "tutti.splitBenthosBatch.field.batchWeight.tip"; labelFor: {batchWeightField}; _help: {"tutti.splitBenthosBatch.field.batchWeightField.help"}; + _addWeightUnit: {handler.getConfig().getBenthosWeightUnit()}; } #batchWeightField { @@ -56,7 +57,7 @@ #sampleWeightLabel { text: "tutti.splitBenthosBatch.field.sampleWeight"; - toolTipText: "tutti.splitBenthosBatch.field.sampleWeightField.tip"; + toolTipText: "tutti.splitBenthosBatch.field.sampleWeight.tip"; labelFor: {sampleWeightField}; _help: {"tutti.splitBenthosBatch.field.sampleWeightField.help"}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -153,7 +153,8 @@ SampleCategoryModel sampleCategoryModel = getDataContext().getSampleCategoryModel(); - SplitBenthosBatchUIModel model = new SplitBenthosBatchUIModel(sampleCategoryModel); + SplitBenthosBatchUIModel model = new SplitBenthosBatchUIModel( + getConfig().getBenthosWeightUnit(), sampleCategoryModel); ui.setContextValue(model); } @@ -389,7 +390,8 @@ addFloatColumnToModel(columnModel, SplitBenthosBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + getConfig().getBenthosWeightUnit()); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; import java.util.List; @@ -79,13 +80,32 @@ */ protected Float sampleWeight; + /** + * Model of sample categories. + * + * @since 2.4 + */ protected SampleCategoryModel sampleCategoryModel; - public SplitBenthosBatchUIModel(SampleCategoryModel sampleCategoryModel) { + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public SplitBenthosBatchUIModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel) { super(BenthosBatchRowModel.class, null, null); + this.weightUnit = weightUnit; this.sampleCategoryModel = sampleCategoryModel; } + @Override + protected BenthosBatchRowModel newEntity() { + return new BenthosBatchRowModel(weightUnit, sampleCategoryModel); + } + public BenthosBatchRowModel getBatch() { return batch; } @@ -132,11 +152,6 @@ firePropertyChange(PROPERTY_SAMPLE_WEIGHT, oldValue, sampleWeight); } - @Override - protected BenthosBatchRowModel newEntity() { - return new BenthosBatchRowModel(sampleCategoryModel); - } - public SampleCategoryModel getSampleCategoryModel() { return sampleCategoryModel; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -32,6 +32,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapColumnRowModel; import org.nuiton.util.beans.Binder; @@ -74,6 +75,13 @@ */ protected CaracteristicMap defaultCaracteristics = new CaracteristicMap(); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + protected static final Binder<IndividualObservationBatch, IndividualObservationBatchRowModel> fromBeanBinder = BinderFactory.newBinder(IndividualObservationBatch.class, IndividualObservationBatchRowModel.class); @@ -82,18 +90,18 @@ BinderFactory.newBinder(IndividualObservationBatchRowModel.class, IndividualObservationBatch.class); - public IndividualObservationBatchRowModel() { + public IndividualObservationBatchRowModel(WeightUnit weightUnit) { super(IndividualObservationBatch.class, fromBeanBinder, toBeanBinder); + this.weightUnit = weightUnit; } - public IndividualObservationBatchRowModel(IndividualObservationBatch aBatch, + public IndividualObservationBatchRowModel(WeightUnit weightUnit, + IndividualObservationBatch entity, Collection<Caracteristic> defaultCaracteristicsSet) { - this(); - fromBean(aBatch); - Float weightInG = getWeight(); - if (weightInG != null) { - setWeight(weightInG * 1000.0f); - } + this(weightUnit); + + fromEntity(entity); + if (getCaracteristics() == null) { setCaracteristics(new CaracteristicMap()); } @@ -108,6 +116,10 @@ } } + //------------------------------------------------------------------------// + //-- Public methods --// + //------------------------------------------------------------------------// + public CaracteristicMap getDefaultCaracteristics() { return defaultCaracteristics; } @@ -122,6 +134,23 @@ //------------------------------------------------------------------------// @Override + public void fromEntity(IndividualObservationBatch entity) { + super.fromEntity(entity); + + // convert weight + setWeight(weightUnit.fromEntity(getWeight())); + } + + @Override + public IndividualObservationBatch toEntity() { + IndividualObservationBatch result = super.toEntity(); + + // convert weight + result.setWeight(weightUnit.toEntity(getWeight())); + return result; + } + + @Override protected IndividualObservationBatch newEntity() { return TuttiBeanFactory.newIndividualObservationBatch(); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -22,6 +22,7 @@ * #L% */ +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; @@ -81,15 +82,25 @@ n_("tutti.editIndividualObservationBatch.table.header.file"), n_("tutti.editIndividualObservationBatch.table.header.file.tip")); - public IndividualObservationBatchTableModel(TableColumnModelExt columnModel) { + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public IndividualObservationBatchTableModel(WeightUnit weightUnit, + TableColumnModelExt columnModel) { super(columnModel, false, false); + this.weightUnit = weightUnit; setNoneEditableCols(); } @Override public IndividualObservationBatchRowModel createNewRow() { - IndividualObservationBatchRowModel result = new IndividualObservationBatchRowModel(); + IndividualObservationBatchRowModel result = + new IndividualObservationBatchRowModel(weightUnit); // by default empty row is not valid result.setValid(false); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -32,6 +32,17 @@ borderPainted: false; } +#tablePopup { + label: "tutti.editIndividualObservationBatch.title.batchActions"; +} + +#table { + selectionMode: {ListSelectionModel.SINGLE_SELECTION}; + /*selectionBackground: {null};*/ + selectionForeground: {Color.BLACK}; + sortable: false; +} + #importMultiPostButton { actionIcon: import; text: "tutti.editIndividualObservationBatch.action.importMultiPost"; @@ -50,17 +61,6 @@ _help: {"tutti.editIndividualObservationBatch.action.exportMultiPost.help"}; } -#tablePopup { - label: "tutti.editIndividualObservationBatch.title.batchActions"; -} - -#table { - selectionMode: {ListSelectionModel.SINGLE_SELECTION}; - /*selectionBackground: {null};*/ - selectionForeground: {Color.BLACK}; - sortable: false; -} - #createIndividualObservationBatchButton { actionIcon: batch-create; text: "tutti.editIndividualObservationBatch.action.createBatch"; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -43,6 +43,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent; @@ -89,6 +90,13 @@ protected ValidationService validationService = getContext().getValidationService(); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + public IndividualObservationBatchUIHandler(TuttiUI<?, ?> parentUi, IndividualObservationBatchUI ui) { super(parentUi, ui, IndividualObservationBatchRowModel.PROPERTY_SPECIES, @@ -101,6 +109,8 @@ // IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE, IndividualObservationBatchRowModel.PROPERTY_COMMENT, IndividualObservationBatchRowModel.PROPERTY_ATTACHMENT); + + weightUnit = getConfig().getIndividualObservationWeightUnit(); } //------------------------------------------------------------------------// @@ -155,7 +165,9 @@ IndividualObservationBatchRowModel newRow = new IndividualObservationBatchRowModel( - aBatch, getModel().getDefaultCaracteristic()); + weightUnit, + aBatch, + getModel().getDefaultCaracteristic()); List<Attachment> attachments = persistenceService.getAllAttachments(newRow.getObjectType(), @@ -328,7 +340,9 @@ DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); Decorator<Caracteristic> caracteristicDecorator = - getDecorator(Caracteristic.class, null); + getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_PARAMETER_ONLY_WITH_UNIT); + Decorator<Caracteristic> caracteristicTipDecorator = + getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_WITH_UNIT); Decorator<CaracteristicQualitativeValue> caracteristicQualitativeDecorator = getDecorator(CaracteristicQualitativeValue.class, null); @@ -346,7 +360,8 @@ addFloatColumnToModel(columnModel, IndividualObservationBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + weightUnit); } { // Size column @@ -360,7 +375,8 @@ addComboDataColumnToModel(columnModel, IndividualObservationBatchTableModel.LENGTH_STEP_CARACTERISTIC, - caracteristicDecorator, getDataContext().getLengthStepCaracteristics()); + getDecorator(Caracteristic.class, null), + getDataContext().getLengthStepCaracteristics()); } @@ -370,12 +386,13 @@ for (Caracteristic caracteristic : defaultCaracteristic) { String header = caracteristicDecorator.toString(caracteristic); + String headerTip = caracteristicTipDecorator.toString(caracteristic); CaracteristicColumnIdentifier id = CaracteristicColumnIdentifier.newCaracteristicId( caracteristic, IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS, header, - header + headerTip ); switch (caracteristic.getCaracteristicType()) { @@ -446,7 +463,8 @@ // create table model IndividualObservationBatchTableModel tableModel = - new IndividualObservationBatchTableModel(columnModel); + new IndividualObservationBatchTableModel(weightUnit, + columnModel); table.setModel(tableModel); table.setColumnModel(columnModel); @@ -515,7 +533,9 @@ saveRow(newRow); tableModel.addNewRow(newRow); - AbstractSelectTableAction.doSelectCell(getTable(), tableModel.getRowCount() - 1, 0); + AbstractSelectTableAction.doSelectCell(getTable(), + tableModel.getRowCount() - 1, + 0); } recomputeBatchActionEnable(); @@ -542,12 +562,12 @@ protected void saveRow(IndividualObservationBatchRowModel row) { - IndividualObservationBatch catchBean = row.toBean(); + IndividualObservationBatch entityToSave = row.toEntity(); CaracteristicMap caracteristics = new CaracteristicMap(); - catchBean.setCaracteristics(caracteristics); + entityToSave.setCaracteristics(caracteristics); - // push back not null caracteristics + // push back not null extra caracteristics for (Map.Entry<Caracteristic, Serializable> entry : row.getCaracteristics().entrySet()) { Serializable value = entry.getValue(); if (value != null) { @@ -564,24 +584,18 @@ } FishingOperation fishingOperation = getModel().getFishingOperation(); - catchBean.setFishingOperation(fishingOperation); + entityToSave.setFishingOperation(fishingOperation); - // convert grams into kilograms - Float weightInG = catchBean.getWeight(); - if (weightInG != null) { - catchBean.setWeight(weightInG / 1000.0f); - } - if (log.isInfoEnabled()) { log.info("Selected fishingOperation: " + fishingOperation.getId()); } - if (TuttiEntities.isNew(catchBean)) { + if (TuttiEntities.isNew(entityToSave)) { - catchBean = persistenceService.createIndividualObservationBatch(catchBean); - row.setId(catchBean.getId()); + entityToSave = persistenceService.createIndividualObservationBatch(entityToSave); + row.setId(entityToSave.getId()); } else { - persistenceService.saveIndividualObservationBatch(catchBean); + persistenceService.saveIndividualObservationBatch(entityToSave); } getModel().fireBatchUpdated(row); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -52,6 +52,7 @@ toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationWeight.tip"; labelFor: {individualObservationWeightField}; _help: {"tutti.createIndividualObservationBatch.field.individualObservationWeight.help"}; + _addWeightUnit: {handler.getConfig().getIndividualObservationWeightUnit()}; } #individualObservationWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchRowModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchRowModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -32,6 +32,7 @@ import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -64,6 +65,13 @@ */ protected final List<Attachment> attachment = Lists.newArrayList(); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + protected static final Binder<MarineLitterBatch, MarineLitterBatchRowModel> fromBeanBinder = BinderFactory.newBinder(MarineLitterBatch.class, MarineLitterBatchRowModel.class); @@ -72,20 +80,43 @@ BinderFactory.newBinder(MarineLitterBatchRowModel.class, MarineLitterBatch.class); - public MarineLitterBatchRowModel() { + public MarineLitterBatchRowModel(WeightUnit weightUnit) { super(MarineLitterBatch.class, fromBeanBinder, toBeanBinder); + this.weightUnit = weightUnit; } - public MarineLitterBatchRowModel(MarineLitterBatch aBatch) { - this(); - fromBean(aBatch); + public MarineLitterBatchRowModel(WeightUnit weightUnit, + MarineLitterBatch entity) { + this(weightUnit); + fromEntity(entity); } + //------------------------------------------------------------------------// + //-- AbstractTuttiBeanUIModel --// + //------------------------------------------------------------------------// + @Override protected MarineLitterBatch newEntity() { return TuttiBeanFactory.newMarineLitterBatch(); } + @Override + public void fromEntity(MarineLitterBatch entity) { + super.fromEntity(entity); + + // convert weight + setWeight(weightUnit.fromEntity(getWeight())); + } + + @Override + public MarineLitterBatch toEntity() { + MarineLitterBatch result = super.toEntity(); + + // convert weight + result.setWeight(weightUnit.toEntity(getWeight())); + return result; + } + //------------------------------------------------------------------------// //-- MarineLitterBatch --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchTableModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchTableModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -24,6 +24,7 @@ * #L% */ +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; @@ -68,15 +69,25 @@ n_("tutti.editMarineLitterBatch.table.header.file"), n_("tutti.editMarineLitterBatch.table.header.file.tip")); - public MarineLitterBatchTableModel(TableColumnModelExt columnModel) { + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public MarineLitterBatchTableModel(WeightUnit weightUnit, + TableColumnModelExt columnModel) { super(columnModel, false, false); + this.weightUnit = weightUnit; setNoneEditableCols(MACRO_WASTE_CATEGORY, MACRO_WASTE_SIZE_CATEGORY); } @Override public MarineLitterBatchRowModel createNewRow() { - MarineLitterBatchRowModel result = new MarineLitterBatchRowModel(); + MarineLitterBatchRowModel result = + new MarineLitterBatchRowModel(weightUnit); // by default empty row is not valid result.setValid(false); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -65,6 +65,7 @@ toolTipText: "tutti.editMarineLitterBatch.field.marineLitterTotalWeight.tip"; labelFor: {marineLitterTotalWeightField}; _help: {"tutti.editMarineLitterBatch.field.marineLitterTotalWeight.help"}; + _addWeightUnit: {handler.getConfig().getMarineLitterWeightUnit()}; } #marineLitterTotalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -43,6 +43,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; import fr.ifremer.tutti.ui.swing.util.comment.CommentCellEditor; @@ -78,6 +79,13 @@ protected ValidationService validationService = getContext().getValidationService(); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + public MarineLitterBatchUIHandler(TuttiUI<?, ?> parentUi, MarineLitterBatchUI ui) { super(parentUi, ui, MarineLitterBatchRowModel.PROPERTY_MARINE_LITTER_CATEGORY, @@ -85,6 +93,8 @@ MarineLitterBatchRowModel.PROPERTY_WEIGHT, MarineLitterBatchRowModel.PROPERTY_NUMBER, MarineLitterBatchRowModel.PROPERTY_COMMENT); + + weightUnit = getConfig().getMarineLitterWeightUnit(); } //------------------------------------------------------------------------// @@ -128,7 +138,8 @@ protected MarineLitterBatchRowModel loadBatch(MarineLitterBatch aBatch) { - MarineLitterBatchRowModel newRow = new MarineLitterBatchRowModel(aBatch); + MarineLitterBatchRowModel newRow = + new MarineLitterBatchRowModel(weightUnit, aBatch); List<Attachment> attachments = persistenceService.getAllAttachments(newRow.getObjectType(), @@ -337,7 +348,8 @@ addFloatColumnToModel(columnModel, MarineLitterBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + weightUnit); } { // Comment column @@ -358,7 +370,7 @@ // create table model MarineLitterBatchTableModel tableModel = - new MarineLitterBatchTableModel(columnModel); + new MarineLitterBatchTableModel(weightUnit, columnModel); table.setModel(tableModel); table.setColumnModel(columnModel); @@ -401,6 +413,7 @@ newRow.setMarineLitterCategory(model.getMarineLitterCategory()); newRow.setMarineLitterSizeCategory(model.getMarineLitterSizeCategory()); newRow.setNumber(model.getNumber()); + newRow.setWeight(model.getWeight()); recomputeRowValidState(newRow); @@ -437,20 +450,20 @@ protected void saveRow(MarineLitterBatchRowModel row) { - MarineLitterBatch catchBean = row.toBean(); + MarineLitterBatch entityToSave = row.toEntity(); FishingOperation fishingOperation = getModel().getFishingOperation(); - catchBean.setFishingOperation(fishingOperation); + entityToSave.setFishingOperation(fishingOperation); if (log.isInfoEnabled()) { log.info("Selected fishingOperation: " + fishingOperation.getId()); } - if (TuttiEntities.isNew(catchBean)) { + if (TuttiEntities.isNew(entityToSave)) { - catchBean = persistenceService.createMarineLitterBatch(catchBean); - row.setId(catchBean.getId()); + entityToSave = persistenceService.createMarineLitterBatch(entityToSave); + row.setId(entityToSave.getId()); } else { - persistenceService.saveMarineLitterBatch(catchBean); + persistenceService.saveMarineLitterBatch(entityToSave); } getModel().fireBatchUpdated(row); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -31,6 +31,7 @@ autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; showReset: true; + bean: {model}; } #createMarineLitterBatchTopPanel { @@ -61,21 +62,35 @@ selectedItem: {model.getMarineLitterSizeCategory()}; } -#numberLabel { +#marineLitterNumberLabel { text: "tutti.createMarineLitterBatch.field.number"; toolTipText: "tutti.createMarineLitterBatch.field.number.tip"; - labelFor: {numberField}; + labelFor: {marineLitterNumberField}; _help: {"tutti.createMarineLitterBatch.field.number.help"}; } -#numberField { +#marineLitterNumberField { property: number; model: {model.getNumber()}; useFloat: true; numberPattern: {DECIMAL3_PATTERN}; - bean: {model}; } +#marineLitterWeightLabel { + text: "tutti.createMarineLitterBatch.field.weight"; + toolTipText: "tutti.createMarineLitterBatch.field.weight.tip"; + labelFor: {marineLitterWeightField}; + _help: {"tutti.createMarineLitterBatch.field.weight.help"}; + _addWeightUnit: {handler.getConfig().getMarineLitterWeightUnit()}; +} + +#marineLitterWeightField { + property: weight; + model: {model.getWeight()}; + useFloat: true; + numberPattern: {DECIMAL3_PATTERN}; +} + #saveAndContinueButton { actionIcon: save; text: "tutti.createMarineLitterBatch.action.saveAndContinue"; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx 2013-09-23 09:39:50 UTC (rev 1203) @@ -61,7 +61,8 @@ component='marineLitterCategoryComboBox'/> <field name='marineLitterSizeCategory' component='marineLitterSizeCategoryComboBox'/> - <field name='number' component='numberField'/> + <field name='number' component='marineLitterNumberField'/> + <field name='weight' component='marineLitterWeightField'/> </BeanValidator> <TuttiHelpBroker id='broker' @@ -96,13 +97,23 @@ <!-- MarineLitter number --> <row> <cell anchor='west'> - <JLabel id='numberLabel'/> + <JLabel id='marineLitterNumberLabel'/> </cell> <cell weightx='1.0' columns='2'> - <NumberEditor id='numberField' constructorParams='this'/> + <NumberEditor id='marineLitterNumberField' constructorParams='this'/> </cell> </row> + <!-- MarineLitter weight --> + <row> + <cell anchor='west'> + <JLabel id='marineLitterWeightLabel'/> + </cell> + <cell weightx='1.0' columns='2'> + <NumberEditor id='marineLitterWeightField' constructorParams='this'/> + </cell> + </row> + </Table> <!-- Form Actions --> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -91,6 +91,16 @@ firePropertyChange(MarineLitterBatch.PROPERTY_NUMBER, oldValue, number); } + public Float getWeight() { + return editObject.getWeight(); + } + + public void setWeight(Float weight) { + Object oldValue = getWeight(); + editObject.setWeight(weight); + firePropertyChange(MarineLitterBatch.PROPERTY_WEIGHT, oldValue, weight); + } + public Multimap<CaracteristicQualitativeValue, CaracteristicQualitativeValue> getMarineLitterCategoryUsed() { return marineLitterCategoryUsed; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriAction.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/ImportPupitriAction.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -144,7 +144,7 @@ EditCatchesUIModel model = getUI().getHandler().getParentUi().getModel(); FishingOperation operation = model.getFishingOperation(); - CatchBatch catchBatch = model.getCatchBatch(); + CatchBatch catchBatch = model.toEntity(); // import int rejectedSpeciesNb = Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -24,6 +24,7 @@ * #L% */ +import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum; @@ -40,6 +41,7 @@ import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -136,8 +138,20 @@ */ protected List<SpeciesBatchRowModel> childBatch; + /** + * Sample categories model. + * + * @since 2.4 + */ protected final SampleCategoryModel sampleCategoryModel; + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + protected static final Binder<SpeciesBatch, SpeciesBatchRowModel> fromBeanBinder = BinderFactory.newBinder(SpeciesBatch.class, SpeciesBatchRowModel.class); @@ -146,8 +160,10 @@ BinderFactory.newBinder(SpeciesBatchRowModel.class, SpeciesBatch.class); - public SpeciesBatchRowModel(SampleCategoryModel sampleCategoryModel) { + public SpeciesBatchRowModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel) { super(SpeciesBatch.class, fromBeanBinder, toBeanBinder); + this.weightUnit = weightUnit; this.sampleCategoryModel = sampleCategoryModel; categories = new SampleCategory[sampleCategoryModel.getNbSampling()]; @@ -163,22 +179,60 @@ computedOrNotNumber.addPropagateListener(PROPERTY_COMPUTED_NUMBER, this); } - public SpeciesBatchRowModel(SampleCategoryModel sampleCategoryModel, + public SpeciesBatchRowModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel, SpeciesBatch aBatch, List<SpeciesBatchFrequency> frequencies) { - this(sampleCategoryModel); - fromBean(aBatch); + this(weightUnit, sampleCategoryModel); + + fromEntity(aBatch); + List<SpeciesFrequencyRowModel> frequencyRows = - SpeciesFrequencyRowModel.fromBeans(frequencies); + SpeciesFrequencyRowModel.fromEntity(weightUnit, frequencies); frequency.addAll(frequencyRows); Collections.sort(frequency); } + //------------------------------------------------------------------------// + //-- AbstractTuttiBeanUIModel --// + //------------------------------------------------------------------------// + @Override protected SpeciesBatch newEntity() { return TuttiBeanFactory.newSpeciesBatch(); } + @Override + public void fromEntity(SpeciesBatch entity) { + super.fromEntity(entity); + + // convert weight + setWeight(weightUnit.fromEntity(getWeight())); + } + + @Override + public SpeciesBatch toEntity() { + SpeciesBatch result = super.toEntity(); + + // convert weight + result.setWeight(weightUnit.toEntity(getWeight())); + + SampleCategory<?> sampleCategory = getFinestCategory(); + Preconditions.checkNotNull(sampleCategory); + Preconditions.checkNotNull(sampleCategory.getCategoryId()); + Preconditions.checkNotNull(sampleCategory.getCategoryValue()); + + // apply sample category + result.setSampleCategoryId(sampleCategory.getCategoryId()); + result.setSampleCategoryValue(sampleCategory.getCategoryValue()); + + // convert sample category weight + Float categoryWeight = sampleCategory.getCategoryWeight(); + result.setSampleCategoryWeight(weightUnit.toEntity(categoryWeight)); + + return result; + } + //------------------------------------------------------------------------// //-- SpeciesBatch --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -29,6 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryColumnIdentifier; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.apache.commons.logging.Log; @@ -91,17 +92,31 @@ protected final Set<ColumnIdentifier<SpeciesBatchRowModel>> frequencyCols; /** - * Columns implies in the sample category definition. + * Columns implied in the sample category definition. * * @since 0.2 */ protected final Set<SampleCategoryColumnIdentifier<SpeciesBatchRowModel>> sampleCols; + /** + * Sample categories model. + * + * @since 2.4 + */ protected final SampleCategoryModel sampleCategoryModel; - public SpeciesBatchTableModel(SampleCategoryModel sampleCategoryModel, + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public SpeciesBatchTableModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel, TableColumnModelExt columnModel) { super(columnModel, false, false); + this.weightUnit = weightUnit; this.sampleCategoryModel = sampleCategoryModel; setNoneEditableCols(SPECIES); @@ -123,7 +138,8 @@ @Override public SpeciesBatchRowModel createNewRow() { - SpeciesBatchRowModel result = new SpeciesBatchRowModel(sampleCategoryModel); + SpeciesBatchRowModel result = + new SpeciesBatchRowModel(weightUnit, sampleCategoryModel); // by default empty row is not valid result.setValid(false); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -84,6 +84,7 @@ toolTipText: "tutti.editSpeciesBatch.field.speciesTotalWeight.tip"; labelFor: {speciesTotalWeightField}; _help: {"tutti.editSpeciesBatch.field.speciesTotalWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalWeightField { @@ -96,6 +97,7 @@ toolTipText: "tutti.editSpeciesBatch.field.speciesTotalSortedWeight.tip"; labelFor: {speciesTotalSortedWeightField}; _help: {"tutti.editSpeciesBatch.field.speciesTotalSortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalSortedWeightField { @@ -108,6 +110,7 @@ toolTipText: "tutti.editSpeciesBatch.field.speciesTotalSampleSortedWeight.tip"; labelFor: {speciesTotalSampleSortedWeightField}; _help: {"tutti.editSpeciesBatch.field.speciesTotalSampleSortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalSampleSortedWeightField { @@ -120,6 +123,7 @@ toolTipText: "tutti.editSpeciesBatch.field.speciesTotalUnsortedWeight.tip"; labelFor: {speciesTotalUnsortedWeightField}; _help: {"tutti.editSpeciesBatch.field.speciesTotalUnsortedWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalUnsortedWeightField { @@ -132,6 +136,7 @@ toolTipText: "tutti.editSpeciesBatch.field.speciesTotalInertWeight.tip"; labelFor: {speciesTotalInertWeightField}; _help: {"tutti.editSpeciesBatch.field.speciesTotalInertWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalInertWeightField { @@ -144,6 +149,7 @@ toolTipText: "tutti.editSpeciesBatch.field.speciesTotalLivingNotItemizedWeight.tip"; labelFor: {speciesTotalLivingNotItemizedWeightField}; _help: {"tutti.editSpeciesBatch.field.speciesTotalLivingNotItemizedWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #speciesTotalLivingNotItemizedWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -55,6 +55,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchUI; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; import fr.ifremer.tutti.ui.swing.util.comment.CommentCellEditor; @@ -118,6 +119,13 @@ protected final SampleCategoryModel sampleCategoryModel; + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + public SpeciesBatchUIHandler(EditCatchesUI parentUi, SpeciesBatchUI ui) { super(parentUi, ui, @@ -130,6 +138,8 @@ SpeciesBatchRowModel.PROPERTY_FREQUENCY, SpeciesBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM); + weightUnit = getConfig().getSpeciesWeightUnit(); + sampleCategoryModel = getDataContext().getSampleCategoryModel(); this.parentUi = parentUi; @@ -251,7 +261,7 @@ @Override protected boolean isRowValid(SpeciesBatchRowModel row) { - SpeciesBatch batch = convertRowToBean(row, true); + SpeciesBatch batch = convertRowToEntity(row, true); NuitonValidatorResult validator = validationService.validateSpeciesBatch(batch); boolean result = !validator.hasErrorMessagess(); @@ -261,7 +271,9 @@ && row.isBatchLeaf()) { List<SpeciesBatchFrequency> frequencies = - SpeciesFrequencyRowModel.toBeans(row.getFrequency(), batch); + SpeciesFrequencyRowModel.toEntity( + row.getFrequency(), + batch); result = TuttiProtocols.isSpeciesBatchValid(getDataContext().getProtocol(), batch, frequencies); @@ -535,7 +547,8 @@ addSampleCategoryColumnToModel(columnModel, columnIdentifier, caracteristicDecorator, - defaultRenderer); + defaultRenderer, + weightUnit); } { // Weight column @@ -545,7 +558,8 @@ Float.class, false, true, 3, computedDataColor), TuttiComputedOrNotDataTableCell.newRender( defaultRenderer, true, 3, computedDataColor), - SpeciesBatchTableModel.WEIGHT); + SpeciesBatchTableModel.WEIGHT, + weightUnit); } { // Number column (from frequencies) @@ -581,7 +595,9 @@ // create table model SpeciesBatchTableModel tableModel = - new SpeciesBatchTableModel(sampleCategoryModel, columnModel); + new SpeciesBatchTableModel(weightUnit, + sampleCategoryModel, + columnModel); table.setModel(tableModel); table.setColumnModel(columnModel); @@ -788,7 +804,6 @@ model.setLeafNumber(model.getLeafNumber() + newBatches.size() - 1); recomputeBatchActionEnable(); - } public void updateTotalFromFrequencies(SpeciesBatchRowModel row) { @@ -829,18 +844,27 @@ Preconditions.checkNotNull(sampleCategory.getCategoryValue()); SpeciesBatch catchBean = row.toBean(); + + // convert weight + Float weight = catchBean.getWeight(); + catchBean.setWeight(weightUnit.toEntity(weight)); + catchBean.setFishingOperation(fishingOperation); SpeciesBatchRowModel parent = row.getParentBatch(); if (parent != null) { + //FIXME Check no need to convert parent weight ? :( catchBean.setParentBatch(parent.toBean()); } // apply sample category catchBean.setSampleCategoryId(sampleCategory.getCategoryId()); catchBean.setSampleCategoryValue(sampleCategory.getCategoryValue()); - catchBean.setSampleCategoryWeight(sampleCategory.getCategoryWeight()); + // convert sample category weight + Float categoryWeight = sampleCategory.getCategoryWeight(); + catchBean.setSampleCategoryWeight(weightUnit.toEntity(categoryWeight)); + if (TuttiEntities.isNew(catchBean)) { String parentBatchId = null; @@ -865,7 +889,9 @@ List<SpeciesFrequencyRowModel> frequencyRows = row.getFrequency(); List<SpeciesBatchFrequency> frequency = - SpeciesFrequencyRowModel.toBeans(frequencyRows, catchBean); + SpeciesFrequencyRowModel.toEntity( + frequencyRows, + catchBean); if (log.isInfoEnabled()) { log.info("Will save " + frequency.size() + " frequencies."); @@ -874,7 +900,8 @@ catchBean.getId(), frequency); // push it back to row model - frequencyRows = SpeciesFrequencyRowModel.fromBeans(frequency); + frequencyRows = SpeciesFrequencyRowModel.fromEntity(weightUnit, + frequency); row.setFrequency(frequencyRows); getModel().fireBatchUpdated(row); @@ -1009,7 +1036,8 @@ persistenceService.getAllSpeciesBatchFrequency(id); SpeciesBatchRowModel newRow = - new SpeciesBatchRowModel(sampleCategoryModel, + new SpeciesBatchRowModel(weightUnit, + sampleCategoryModel, aBatch, frequencies); @@ -1040,8 +1068,8 @@ newRow, sampleCategoryId, aBatch.getSampleCategoryValue(), - aBatch.getSampleCategoryWeight(), - aBatch.getSampleCategoryComputedWeight()); + weightUnit.fromEntity(aBatch.getSampleCategoryWeight()), + weightUnit.fromEntity(aBatch.getSampleCategoryComputedWeight())); rows.add(newRow); @@ -1120,14 +1148,16 @@ protected <C extends Serializable> void addSampleCategoryColumnToModel(TableColumnModel columnModel, ColumnIdentifier<SpeciesBatchRowModel> columnIdentifier, Decorator<C> decorator, - TableCellRenderer defaultRenderer) { + TableCellRenderer defaultRenderer, + WeightUnit weightUnit) { addColumnToModel( columnModel, SampleCategoryComponent.newEditor(decorator), SampleCategoryComponent.newRender(defaultRenderer, decorator, getConfig().getColorComputedWeights()), - columnIdentifier); + columnIdentifier, + weightUnit); } public void removeFromSpeciesUsed(SpeciesBatchRowModel row) { @@ -1175,21 +1205,29 @@ return model.getSelectedSpecies(); } - protected SpeciesBatch convertRowToBean(SpeciesBatchRowModel row, boolean convertParent) { - SampleCategory<?> sampleCategory = row.getFinestCategory(); - Preconditions.checkNotNull(sampleCategory); - Preconditions.checkNotNull(sampleCategory.getCategoryId()); - Preconditions.checkNotNull(sampleCategory.getCategoryValue()); + protected SpeciesBatch convertRowToEntity(SpeciesBatchRowModel row, + boolean convertParent) { + Preconditions.checkNotNull(row.getFinestCategory()); + Preconditions.checkNotNull(row.getFinestCategory().getCategoryId()); + Preconditions.checkNotNull(row.getFinestCategory().getCategoryValue()); - SpeciesBatch catchBean = row.toBean(); +// SampleCategory<?> sampleCategory = row.getFinestCategory(); +// Preconditions.checkNotNull(sampleCategory); +// Preconditions.checkNotNull(sampleCategory.getCategoryId()); +// Preconditions.checkNotNull(sampleCategory.getCategoryValue()); - // apply sample category - catchBean.setSampleCategoryId(sampleCategory.getCategoryId()); - catchBean.setSampleCategoryValue(sampleCategory.getCategoryValue()); - catchBean.setSampleCategoryWeight(sampleCategory.getCategoryWeight()); + SpeciesBatch catchBean = row.toEntity(); +// // apply sample category +// catchBean.setSampleCategoryId(sampleCategory.getCategoryId()); +// catchBean.setSampleCategoryValue(sampleCategory.getCategoryValue()); +// +// // convert sample category weight +// Float categoryWeight = sampleCategory.getCategoryWeight(); +// catchBean.setSampleCategoryWeight(weightUnit.toEntity(categoryWeight)); + if (convertParent && row.getParentBatch() != null) { - SpeciesBatch parent = convertRowToBean(row.getParentBatch(), true); + SpeciesBatch parent = convertRowToEntity(row.getParentBatch(), true); catchBean.setParentBatch(parent); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -72,6 +72,7 @@ toolTipText: "tutti.createSpeciesBatch.field.batchWeight.tip"; labelFor: {batchWeightField}; _help: {"tutti.createSpeciesBatch.field.batchWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #batchWeightField { @@ -99,7 +100,7 @@ #categoryLabel { text: "tutti.createSpeciesBatch.field.category"; - toolTipText: "tutti.createSpeciesBatch.field.categoryField.tip"; + toolTipText: "tutti.createSpeciesBatch.field.category.tip"; labelFor: {categoryComboBox}; _help: {"tutti.createSpeciesBatch.field.categoryField.help"}; } @@ -115,9 +116,10 @@ #sampleWeightLabel { text: "tutti.createSpeciesBatch.field.sampleWeight"; - toolTipText: "tutti.createSpeciesBatch.field.sampleWeightField.tip"; + toolTipText: "tutti.createSpeciesBatch.field.sampleWeight.tip"; labelFor: {sampleWeightField}; _help: {"tutti.createSpeciesBatch.field.sampleWeightField.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #sampleWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -498,7 +498,8 @@ editableCategoryValue = true; addFloatColumnToModel(columnModel, SplitSpeciesBatchTableModel.EDITABLE_CATEGORY_VALUE, - TuttiUI.DECIMAL1_PATTERN); + TuttiUI.DECIMAL1_PATTERN, + getConfig().getSpeciesWeightUnit()); } if (data != null) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -31,6 +31,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -82,6 +83,13 @@ */ protected Caracteristic lengthStepCaracteristic; + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + protected static final Binder<SpeciesBatchFrequency, SpeciesFrequencyRowModel> fromBeanBinder = BinderFactory.newBinder(SpeciesBatchFrequency.class, SpeciesFrequencyRowModel.class); @@ -92,33 +100,71 @@ private static final Ordering<Float> ordering = Ordering.natural().nullsFirst(); - public static List<SpeciesFrequencyRowModel> fromBeans(List<SpeciesBatchFrequency> frequency) { + //------------------------------------------------------------------------// + //-- Factory methods --// + //------------------------------------------------------------------------// + + public static List<SpeciesFrequencyRowModel> fromEntity(WeightUnit weightUnit, + List<SpeciesBatchFrequency> entities) { List<SpeciesFrequencyRowModel> result = Lists.newArrayList(); - for (SpeciesBatchFrequency b : frequency) { - SpeciesFrequencyRowModel model = new SpeciesFrequencyRowModel(); - fromBeanBinder.copy(b, model); - result.add(model); + for (SpeciesBatchFrequency entity : entities) { + + SpeciesFrequencyRowModel row = + new SpeciesFrequencyRowModel(weightUnit); + row.fromEntity(entity); + result.add(row); } return result; } - public static List<SpeciesBatchFrequency> toBeans(List<SpeciesFrequencyRowModel> frequency, SpeciesBatch batch) { + public static List<SpeciesBatchFrequency> toEntity(List<SpeciesFrequencyRowModel> rows, + SpeciesBatch batch) { List<SpeciesBatchFrequency> result = Lists.newArrayList(); - for (SpeciesFrequencyRowModel b : frequency) { - SpeciesBatchFrequency model = - TuttiBeanFactory.newSpeciesBatchFrequency(); - toBeanBinder.copy(b, model); - model.setBatch(batch); - result.add(model); + for (SpeciesFrequencyRowModel row : rows) { + + SpeciesBatchFrequency entity = row.toEntity(); + entity.setBatch(batch); + result.add(entity); } return result; } - public SpeciesFrequencyRowModel() { + public SpeciesFrequencyRowModel(WeightUnit weightUnit) { super(SpeciesBatchFrequency.class, fromBeanBinder, toBeanBinder); + this.weightUnit = weightUnit; } + //------------------------------------------------------------------------// + //-- AbstractTuttiBeanUIModel --// + //------------------------------------------------------------------------// + @Override + protected SpeciesBatchFrequency newEntity() { + return TuttiBeanFactory.newSpeciesBatchFrequency(); + } + + @Override + public void fromEntity(SpeciesBatchFrequency entity) { + super.fromEntity(entity); + + // convert weight + setWeight(weightUnit.fromEntity(getWeight())); + } + + @Override + public SpeciesBatchFrequency toEntity() { + SpeciesBatchFrequency result = super.toEntity(); + + // convert weight + result.setWeight(weightUnit.toEntity(getWeight())); + return result; + } + + //------------------------------------------------------------------------// + //-- SpeciesBatchFrequency --// + //------------------------------------------------------------------------// + + @Override public Float getLengthStep() { return lengthStep; } @@ -182,11 +228,6 @@ } @Override - protected SpeciesBatchFrequency newEntity() { - return TuttiBeanFactory.newSpeciesBatchFrequency(); - } - - @Override public Integer getRankOrder() { return null; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -25,6 +25,7 @@ */ import com.google.common.collect.Maps; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; @@ -65,9 +66,18 @@ private final Map<Float, SpeciesFrequencyRowModel> rowCache; - public SpeciesFrequencyTableModel(TableColumnModelExt columnModel, + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public SpeciesFrequencyTableModel(WeightUnit weightUnit, + TableColumnModelExt columnModel, SpeciesFrequencyUIModel uiModel) { super(columnModel, true, true); + this.weightUnit = weightUnit; this.uiModel = uiModel; this.rowCache = Maps.newTreeMap(); setNoneEditableCols(); @@ -87,7 +97,8 @@ lengthStep + uiModel.getStep()); } } - SpeciesFrequencyRowModel result = new SpeciesFrequencyRowModel(); + SpeciesFrequencyRowModel result = + new SpeciesFrequencyRowModel(weightUnit); result.addPropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_LENGTH_STEP, new PropertyChangeListener() { @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -76,6 +76,7 @@ labelFor: {totalWeightField}; enabled: {model.getTotalWeight() != null}; _help: {"tutti.editSpeciesFrequencies.field.totalWeight.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #totalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -43,6 +43,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.SwingUtil; @@ -89,12 +90,20 @@ protected Set<SpeciesFrequencyRowModel> withWeightRows = Sets.newHashSet(); + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + public SpeciesFrequencyUIHandler(TuttiUIContext context, SpeciesFrequencyUI ui) { super(context, ui, SpeciesFrequencyRowModel.PROPERTY_LENGTH_STEP, SpeciesFrequencyRowModel.PROPERTY_NUMBER, SpeciesFrequencyRowModel.PROPERTY_WEIGHT); + this.weightUnit = context.getConfig().getSpeciesWeightUnit(); } //------------------------------------------------------------------------// @@ -202,7 +211,8 @@ SampleCategoryModel sampleCategoryModel = getDataContext().getSampleCategoryModel(); - SpeciesFrequencyUIModel model = new SpeciesFrequencyUIModel(sampleCategoryModel); + SpeciesFrequencyUIModel model = new SpeciesFrequencyUIModel( + weightUnit, sampleCategoryModel); ui.setContextValue(model); } @@ -312,12 +322,16 @@ addFloatColumnToModel(columnModel, SpeciesFrequencyTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + weightUnit); } // create table model SpeciesFrequencyTableModel tableModel = - new SpeciesFrequencyTableModel(columnModel, model); + new SpeciesFrequencyTableModel( + weightUnit, + columnModel, + model); JXTable table = getTable(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; import java.util.List; @@ -152,14 +153,34 @@ protected Set<SpeciesFrequencyRowModel> emptyRows; - protected SampleCategoryModel sampleCategoryModel; + /** + * Sample categories model. + * + * @since 2.4 + */ + protected final SampleCategoryModel sampleCategoryModel; - public SpeciesFrequencyUIModel(SampleCategoryModel sampleCategoryModel) { + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public SpeciesFrequencyUIModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel) { super(SpeciesBatchRowModel.class, null, null); + this.weightUnit = weightUnit; this.sampleCategoryModel = sampleCategoryModel; setEmptyRows(Sets.<SpeciesFrequencyRowModel>newHashSet()); } + @Override + protected SpeciesBatchRowModel newEntity() { + return new SpeciesBatchRowModel(weightUnit, sampleCategoryModel); + } + + @Override public void setRows(List<SpeciesFrequencyRowModel> rows) { super.setRows(rows); setEmptyRows(Sets.<SpeciesFrequencyRowModel>newHashSet()); @@ -317,9 +338,4 @@ emptyRows.remove(row); firePropertyChange(PROPERTY_EMPTY_ROWS, null, emptyRows); } - - @Override - protected SpeciesBatchRowModel newEntity() { - return new SpeciesBatchRowModel(sampleCategoryModel); - } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-09-23 09:39:50 UTC (rev 1203) @@ -46,6 +46,7 @@ toolTipText: "tutti.splitSpeciesBatch.field.batchWeightField.tip"; labelFor: {batchWeightField}; _help: {"tutti.splitSpeciesBatch.field.batchWeightField.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #batchWeightField { @@ -59,6 +60,7 @@ toolTipText: "tutti.splitSpeciesBatch.field.sampleWeightField.tip"; labelFor: {sampleWeightField}; _help: {"tutti.splitSpeciesBatch.field.sampleWeightField.help"}; + _addWeightUnit: {handler.getConfig().getSpeciesWeightUnit()}; } #sampleWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -155,7 +155,8 @@ SampleCategoryModel sampleCategoryModel = getDataContext().getSampleCategoryModel(); - SplitSpeciesBatchUIModel model = new SplitSpeciesBatchUIModel(sampleCategoryModel); + SplitSpeciesBatchUIModel model = new SplitSpeciesBatchUIModel( + getConfig().getSpeciesWeightUnit(), sampleCategoryModel); ui.setContextValue(model); } @@ -392,7 +393,8 @@ addFloatColumnToModel(columnModel, SplitSpeciesBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + getConfig().getSpeciesWeightUnit()); } } @@ -424,7 +426,7 @@ if (data != null) { - // add a row for each qualitive value + // add a row for each qualitative value for (CaracteristicQualitativeValue qualitativeValue : data.getQualitativeValue()) { if (log.isDebugEnabled()) { log.debug("Add QV: " + qualitativeValue); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; import java.util.List; @@ -86,11 +87,25 @@ */ protected SampleCategoryModel sampleCategoryModel; - public SplitSpeciesBatchUIModel(SampleCategoryModel sampleCategoryModel) { + /** + * Weight unit. + * + * @since 2.5 + */ + protected final WeightUnit weightUnit; + + public SplitSpeciesBatchUIModel(WeightUnit weightUnit, + SampleCategoryModel sampleCategoryModel) { super(SpeciesBatchRowModel.class, null, null); + this.weightUnit = weightUnit; this.sampleCategoryModel = sampleCategoryModel; } + @Override + protected SpeciesBatchRowModel newEntity() { + return new SpeciesBatchRowModel(weightUnit, sampleCategoryModel); + } + public SpeciesBatchRowModel getBatch() { return batch; } @@ -136,11 +151,6 @@ firePropertyChange(PROPERTY_SAMPLE_WEIGHT, oldValue, sampleWeight); } - @Override - protected SpeciesBatchRowModel newEntity() { - return new SpeciesBatchRowModel(sampleCategoryModel); - } - public SampleCategoryModel getSampleCategoryModel() { return sampleCategoryModel; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -55,8 +55,6 @@ protected boolean valid; -// private final Class<E> entityType; - private final Binder<E, B> fromBeanBinder; private final Binder<B, E> toBeanBinder; @@ -64,11 +62,18 @@ protected AbstractTuttiBeanUIModel(Class<E> entityType, Binder<E, B> fromBeanBinder, Binder<B, E> toBeanBinder) { -// this.entityType = entityType; this.fromBeanBinder = fromBeanBinder; this.toBeanBinder = toBeanBinder; } + public void fromEntity(E entity) { + fromBean(entity); + } + + public E toEntity() { + return toBean(); + } + public final void fromBean(E bean) { fromBeanBinder.copy(bean, (B) this); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -437,6 +437,15 @@ style |= Font.ITALIC; } jLabel.setFont(font.deriveFont(style)); + + WeightUnit weightUnit = (WeightUnit) jLabel.getClientProperty("addWeightUnit"); + if (weightUnit != null) { + String text = weightUnit.decorateLabel(jLabel.getText()); + jLabel.setText(text); + + String tip = weightUnit.decorateTip(jLabel.getToolTipText()); + jLabel.setToolTipText(tip); + } } protected void initButtonAttachment(ButtonAttachment component) { @@ -821,17 +830,34 @@ validator.setBean(bean); } - protected <R extends AbstractTuttiBeanUIModel> void addColumnToModel(TableColumnModel model, TableCellEditor editor, TableCellRenderer renderer, ColumnIdentifier<R> identifier) { + addColumnToModel(model, editor, renderer, identifier, null); + } + + + protected <R extends AbstractTuttiBeanUIModel> void addColumnToModel(TableColumnModel model, + TableCellEditor editor, + TableCellRenderer renderer, + ColumnIdentifier<R> identifier, + WeightUnit weightUnit) { + TableColumnExt col = new TableColumnExt(model.getColumnCount()); col.setCellEditor(editor); col.setCellRenderer(renderer); - col.setHeaderValue(_(identifier.getHeaderI18nKey())); - col.setToolTipText(_(identifier.getHeaderTipI18nKey())); + String label = _(identifier.getHeaderI18nKey()); + if (weightUnit != null) { + label = weightUnit.decorateLabel(label); + } + col.setHeaderValue(label); + String tip = _(identifier.getHeaderTipI18nKey()); + if (weightUnit != null) { + tip = weightUnit.decorateTip(tip); + } + col.setToolTipText(tip); col.setIdentifier(identifier); model.addColumn(col); @@ -840,7 +866,7 @@ protected <R extends AbstractTuttiBeanUIModel> void addColumnToModel(TableColumnModel model, ColumnIdentifier<R> identifier) { - addColumnToModel(model, null, null, identifier); + addColumnToModel(model, null, null, identifier, null); } protected <R extends AbstractTuttiBeanUIModel> void addFloatColumnToModel(TableColumnModel model, @@ -853,8 +879,21 @@ editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); editor.getNumberEditor().setNumberPattern(numberPattern); - addColumnToModel(model, editor, null, identifier); + addColumnToModel(model, editor, null, identifier, null); + } + protected <R extends AbstractTuttiBeanUIModel> void addFloatColumnToModel(TableColumnModel model, + ColumnIdentifier<R> identifier, + String numberPattern, + WeightUnit weightUnit) { + + NumberCellEditor<Float> editor = + JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); + editor.getNumberEditor().setSelectAllTextOnError(true); + editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); + editor.getNumberEditor().setNumberPattern(numberPattern); + + addColumnToModel(model, editor, null, identifier, weightUnit); } protected <R extends AbstractTuttiBeanUIModel> void addIntegerColumnToModel(TableColumnModel model, @@ -867,7 +906,7 @@ editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); editor.getNumberEditor().setNumberPattern(numberPattern); - addColumnToModel(model, editor, null, identifier); + addColumnToModel(model, editor, null, identifier, null); } protected <R extends AbstractTuttiBeanUIModel> void addBooleanColumnToModel(TableColumnModel model, @@ -877,7 +916,8 @@ addColumnToModel(model, table.getDefaultEditor(Boolean.class), table.getDefaultRenderer(Boolean.class), - identifier); + identifier, + null); } protected <R extends AbstractTuttiBeanUIModel, B> void addComboDataColumnToModel(TableColumnModel model, @@ -902,7 +942,8 @@ addColumnToModel(model, editor, newTableCellRender(decorator), - identifier); + identifier, + null); } protected <O> TableCellRenderer newTableCellRender(Class<O> type) { Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/WeightUnit.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/WeightUnit.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/WeightUnit.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -0,0 +1,103 @@ +package fr.ifremer.tutti.ui.swing.util; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import static org.nuiton.i18n.I18n._; +import static org.nuiton.i18n.I18n.n_; + +/** + * Different types of weight unit. + * <p/> + * Created on 09/22/13. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 2.5 + */ +public enum WeightUnit { + G(n_("tutti.common.unit.g"), n_("tutti.common.unit.short.g")) { + @Override + public Float fromEntity(Float weight) { + return weight == null ? null : weight * 1000; + } + + @Override + public Float toEntity(Float weight) { + return weight == null ? null : weight / 1000.0f; + } + }, + KG(n_("tutti.common.unit.kg"), n_("tutti.common.unit.short.kg")) { + @Override + public Float fromEntity(Float weight) { + return weight; + } + + @Override + public Float toEntity(Float weight) { + return weight; + } + }; + + private final String i18nShortKey; + + private final String i18nKey; + + WeightUnit(String i18nKey, String i18nShortKey) { + this.i18nKey = i18nKey; + this.i18nShortKey = i18nShortKey; + } + + public String getLabel() { + return _(i18nKey); + } + + public String getShortLabel() { + return _(i18nShortKey); + } + + /** + * Transform the given {@code weight} coming from db to ui. + * + * @param weight weigth to transform + * @return the ui representation of the given {@code weight}. + */ + public abstract Float fromEntity(Float weight); + + /** + * Transform the given {@code weight} coming from ui to db. + * + * @param weight weigth to transform + * @return the db representation of the given {@code weight}. + */ + public abstract Float toEntity(Float weight); + + public String decorateLabel(String label) { + return String.format("%s (%s)", label, getShortLabel()); + } + + public String decorateTip(String tip) { + String unit = _("tutti.common.unit"); + return String.format("%s (%s %s)", tip, unit, getLabel()); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/WeightUnit.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicColumnIdentifier.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicColumnIdentifier.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicColumnIdentifier.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -1,5 +1,29 @@ package fr.ifremer.tutti.ui.swing.util.table; +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicColumnIdentifier.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL 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-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-23 09:39:50 UTC (rev 1203) @@ -92,6 +92,11 @@ tutti.common.file.tuttiSpecies= tutti.common.file.zip= tutti.common.protocol.categories.not.compatible= +tutti.common.unit=Unit +tutti.common.unit.g=Gramme +tutti.common.unit.kg=kilogram +tutti.common.unit.short.g=g +tutti.common.unit.short.kg=Kg tutti.common.validate= tutti.common.validate.mnemonic= tutti.config.action.reload.actions= @@ -107,6 +112,8 @@ tutti.config.category.technical.description= tutti.config.category.ui= tutti.config.category.ui.description= +tutti.config.category.weightUnit= +tutti.config.category.weightUnit.description= tutti.config.option.cruiseId.description= tutti.config.option.help.directory.description= tutti.config.option.i18n.directory.description= @@ -116,6 +123,7 @@ tutti.config.option.protocolId.description= tutti.config.option.startActionFile.description= tutti.config.option.tremieCarousselVessel.description= +tutti.config.option.ui.adminPassword.description= tutti.config.option.ui.autoPopupNumberEditor.description= tutti.config.option.ui.color.blockingLayer.description= tutti.config.option.ui.color.cellWithValue.description= @@ -128,6 +136,11 @@ tutti.config.option.ui.dateFormat.description= tutti.config.option.ui.shortcut.closePopup.description= tutti.config.option.ui.showNumberEditorButton.description= +tutti.config.option.ui.weight.unit.accidentalCatch.description= +tutti.config.option.ui.weight.unit.benthos.description= +tutti.config.option.ui.weight.unit.individualObservation.description= +tutti.config.option.ui.weight.unit.marineLitter.description= +tutti.config.option.ui.weight.unit.species.description= tutti.config.option.update.application.url.description= tutti.config.option.update.db.url.description= tutti.config.option.update.url.description= @@ -188,10 +201,11 @@ tutti.createBenthosBatch.field.batchWeight= tutti.createBenthosBatch.field.batchWeight.tip= tutti.createBenthosBatch.field.category= -tutti.createBenthosBatch.field.categoryField.tip= +tutti.createBenthosBatch.field.category.tip= tutti.createBenthosBatch.field.sampleCategory= tutti.createBenthosBatch.field.sampleCategory.tip= tutti.createBenthosBatch.field.sampleWeight= +tutti.createBenthosBatch.field.sampleWeight.tip= tutti.createBenthosBatch.field.sampleWeightField.tip= tutti.createBenthosBatch.field.species= tutti.createBenthosBatch.field.species.tip= @@ -243,6 +257,8 @@ tutti.createMarineLitterBatch.field.marineLitterSizeCategory.tip= tutti.createMarineLitterBatch.field.number= tutti.createMarineLitterBatch.field.number.tip= +tutti.createMarineLitterBatch.field.weight= +tutti.createMarineLitterBatch.field.weight.tip= tutti.createMarineLitterBatch.title= tutti.createSpeciesBatch.action.addSpecies= tutti.createSpeciesBatch.action.addSpecies.mnemonic= @@ -264,11 +280,11 @@ tutti.createSpeciesBatch.field.batchWeight= tutti.createSpeciesBatch.field.batchWeight.tip= tutti.createSpeciesBatch.field.category= -tutti.createSpeciesBatch.field.categoryField.tip= +tutti.createSpeciesBatch.field.category.tip= tutti.createSpeciesBatch.field.sampleCategory= tutti.createSpeciesBatch.field.sampleCategory.tip= tutti.createSpeciesBatch.field.sampleWeight= -tutti.createSpeciesBatch.field.sampleWeightField.tip= +tutti.createSpeciesBatch.field.sampleWeight.tip= tutti.createSpeciesBatch.field.species= tutti.createSpeciesBatch.field.species.tip= tutti.createSpeciesBatch.title= @@ -730,6 +746,10 @@ tutti.editIndividualObservationBatch.table.header.species.tip= tutti.editIndividualObservationBatch.table.header.weight= tutti.editIndividualObservationBatch.table.header.weight.tip= +tutti.editIndividualObservationBatch.table.header.weightG= +tutti.editIndividualObservationBatch.table.header.weightG.tip= +tutti.editIndividualObservationBatch.table.header.weightKG= +tutti.editIndividualObservationBatch.table.header.weightKG.tip= tutti.editIndividualObservationCaracteristics.action.cancel= tutti.editIndividualObservationCaracteristics.action.cancel.mnemonic= tutti.editIndividualObservationCaracteristics.action.cancel.tip= @@ -773,6 +793,10 @@ tutti.editMarineLitterBatch.table.header.number.tip= tutti.editMarineLitterBatch.table.header.weight= tutti.editMarineLitterBatch.table.header.weight.tip= +tutti.editMarineLitterBatch.table.header.weightG= +tutti.editMarineLitterBatch.table.header.weightG.tip= +tutti.editMarineLitterBatch.table.header.weightKG= +tutti.editMarineLitterBatch.table.header.weightKG.tip= tutti.editProgram.action.closeEditProgram= tutti.editProgram.action.closeEditProgram.mnemonic= tutti.editProgram.action.closeEditProgram.tip= @@ -1378,11 +1402,11 @@ tutti.splitBenthosBatch.action.save.mnemonic= tutti.splitBenthosBatch.action.save.tip= tutti.splitBenthosBatch.field.batchWeight= -tutti.splitBenthosBatch.field.batchWeightField.tip= +tutti.splitBenthosBatch.field.batchWeight.tip= tutti.splitBenthosBatch.field.category= -tutti.splitBenthosBatch.field.categoryField.tip= +tutti.splitBenthosBatch.field.category.tip= tutti.splitBenthosBatch.field.sampleWeight= -tutti.splitBenthosBatch.field.sampleWeightField.tip= +tutti.splitBenthosBatch.field.sampleWeight.tip= tutti.splitBenthosBatch.field.species= tutti.splitBenthosBatch.field.speciesField.tip= tutti.splitBenthosBatch.table.header.category= 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-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-23 09:39:50 UTC (rev 1203) @@ -77,7 +77,6 @@ tutti.common.askSaveBeforeLeaving.title=Modifications non enregistrées tutti.common.cancel=Annuler tutti.common.cancel.mnemonic=A -tutti.common.caracteristic.notFound=Caractéristique inconnue tutti.common.datefield.tip=Format attendu \: %s tutti.common.file.csv=Extension d'un fichier csv tutti.common.file.pdf=Extension d'un fichier pdf @@ -88,6 +87,11 @@ tutti.common.file.tuttiMarineLitter=Fichier d'import/export des lots de déchets tutti.common.file.tuttiSpecies=Fichier d'import/export des lots d'espèces tutti.common.file.zip=Extension d'une archive zip +tutti.common.unit=Unité +tutti.common.unit.g=Gramme +tutti.common.unit.kg=Kilogramme +tutti.common.unit.short.g=g +tutti.common.unit.short.kg=kg tutti.common.validate=Valider tutti.common.validate.mnemonic=V tutti.config.action.reload.actions=Recharger les actions @@ -103,6 +107,8 @@ tutti.config.category.technical.description=Informations techniques tutti.config.category.ui=Interface utilisateur tutti.config.category.ui.description=Options de l'interface utilisateur +tutti.config.category.weightUnit=Unité des poids +tutti.config.category.weightUnit.description=Configurer les Unités des poids capturés selon de type de capture (espèce, benthos, ...) tutti.config.option.cruiseId.description=Identifiant de la dernière campagne utilisée tutti.config.option.help.directory.description=Répertoire des fichiers d'aide tutti.config.option.i18n.directory.description=Répertoire des fichiers de traductions @@ -112,6 +118,7 @@ tutti.config.option.protocolId.description=Identifiant du dernier protocole utilisé tutti.config.option.startActionFile.description=Fichier tutti.config.option.tremieCarousselVessel.description=Navire ayant un carrousel et une trémie (ex. Thalassa) +tutti.config.option.ui.adminPassword.description=MD5 du mot de passe des zones sensibles 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 tutti.config.option.ui.color.cellWithValue.description=Couleur d'une cellule avec des données @@ -124,6 +131,11 @@ tutti.config.option.ui.dateFormat.description=Format de dates tutti.config.option.ui.shortcut.closePopup.description=Fermer une popup tutti.config.option.ui.showNumberEditorButton.description=Afficher le pavé numérique de saisie +tutti.config.option.ui.weight.unit.accidentalCatch.description=Unité de poids à utiliser dans la saisies des captures accidentelles +tutti.config.option.ui.weight.unit.benthos.description=Unité de poids à utiliser dans la saisies du benthos +tutti.config.option.ui.weight.unit.individualObservation.description=Unité de poids à utiliser dans la saisies des données individuelles +tutti.config.option.ui.weight.unit.marineLitter.description=Unité de poids à utiliser dans la saisies des macro-déchêts +tutti.config.option.ui.weight.unit.species.description=Unité de poids à utiliser dans la saisies des espèces tutti.config.option.update.application.url.description=URL de mise à jour des applicatifs tutti.config.option.update.db.url.description=URL de mise à jour de la base de données tutti.config.option.weights.rate.difference.totalAndSorted.description=Pourcentage de différence entre les Poids totaux VRAC triés et les poids totaux VRAC en dessous duquel on demande confirmation sur la saisie @@ -152,8 +164,8 @@ tutti.createAccidentalBatch.field.accidentalSize.tip=Taille tutti.createAccidentalBatch.field.accidentalSpecies=Espèce tutti.createAccidentalBatch.field.accidentalSpecies.tip=Espèce -tutti.createAccidentalBatch.field.accidentalWeight=Poids (kg) -tutti.createAccidentalBatch.field.accidentalWeight.tip=Poids (kg) +tutti.createAccidentalBatch.field.accidentalWeight=Poids +tutti.createAccidentalBatch.field.accidentalWeight.tip=Poids tutti.createAccidentalBatch.title=Créer une capture accidentelle tutti.createBenthosBatch.action.addSpecies=... tutti.createBenthosBatch.action.addSpecies.mnemonic=. @@ -169,14 +181,14 @@ tutti.createBenthosBatch.action.saveAndContinue.tip=Enregistrer la création du lot espèce et en saisir un autre tutti.createBenthosBatch.field.batchCount=Nombre tutti.createBenthosBatch.field.batchCount.tip=Saisir le nombre d'individus dans le lot -tutti.createBenthosBatch.field.batchWeight=Poids du lot (kg) -tutti.createBenthosBatch.field.batchWeight.tip=Poids du lot (kg) +tutti.createBenthosBatch.field.batchWeight=Poids du lot +tutti.createBenthosBatch.field.batchWeight.tip=Poids du lot tutti.createBenthosBatch.field.category=Catégorie -tutti.createBenthosBatch.field.categoryField.tip=Choisir le mode de catégorisation +tutti.createBenthosBatch.field.category.tip=Choisir le mode de catégorisation tutti.createBenthosBatch.field.sampleCategory=V / HV tutti.createBenthosBatch.field.sampleCategory.tip=Catégorie Vrac / Hors Vrac -tutti.createBenthosBatch.field.sampleWeight=Poids total catégorisé (kg) -tutti.createBenthosBatch.field.sampleWeightField.tip=Somme des poids saisis ci-dessous (kg) +tutti.createBenthosBatch.field.sampleWeight=Poids total catégorisé +tutti.createBenthosBatch.field.sampleWeight.tip=Somme des poids saisis ci-dessous tutti.createBenthosBatch.field.species=Espèce du lot tutti.createBenthosBatch.field.species.tip=Espèce du lot tutti.createBenthosBatch.title=Créer un lot @@ -203,7 +215,7 @@ tutti.createIndividualObservationBatch.field.individualObservationSize.tip=Taille tutti.createIndividualObservationBatch.field.individualObservationSpecies=Espèce tutti.createIndividualObservationBatch.field.individualObservationSpecies.tip=Espèce -tutti.createIndividualObservationBatch.field.individualObservationWeight=Poids (g) +tutti.createIndividualObservationBatch.field.individualObservationWeight=Poids tutti.createIndividualObservationBatch.field.individualObservationWeight.tip=Poids tutti.createIndividualObservationBatch.title=Créer une observation tutti.createMarineLitterBatch.action.cancel=Annuler @@ -221,6 +233,8 @@ tutti.createMarineLitterBatch.field.marineLitterSizeCategory.tip=Classe de taille des déchets observés tutti.createMarineLitterBatch.field.number=Nombre tutti.createMarineLitterBatch.field.number.tip=Nombre d'objets dans la catégorie +tutti.createMarineLitterBatch.field.weight=Poids +tutti.createMarineLitterBatch.field.weight.tip=Poids tutti.createMarineLitterBatch.title=Créer un lot tutti.createSpeciesBatch.action.addSpecies=... tutti.createSpeciesBatch.action.addSpecies.mnemonic=. @@ -236,14 +250,14 @@ tutti.createSpeciesBatch.action.saveAndContinue.tip=Enregistrer la création du lot espèce et en saisir un autre tutti.createSpeciesBatch.field.batchCount=Nombre tutti.createSpeciesBatch.field.batchCount.tip=Saisir le nombre d'individus dans le lot -tutti.createSpeciesBatch.field.batchWeight=Poids du lot (kg) +tutti.createSpeciesBatch.field.batchWeight=Poids du lot tutti.createSpeciesBatch.field.batchWeight.tip=Poids du lot (non obligatoire à ce stade) tutti.createSpeciesBatch.field.category=Catégorie -tutti.createSpeciesBatch.field.categoryField.tip=Choisir le mode de catégorisation +tutti.createSpeciesBatch.field.category.tip=Choisir le mode de catégorisation tutti.createSpeciesBatch.field.sampleCategory=V / HV tutti.createSpeciesBatch.field.sampleCategory.tip=Catégorie Vrac / Hors Vrac -tutti.createSpeciesBatch.field.sampleWeight=Poids total catégorisé (kg) -tutti.createSpeciesBatch.field.sampleWeightField.tip=Somme des poids saisis ci-dessous (kg) +tutti.createSpeciesBatch.field.sampleWeight=Poids total catégorisé +tutti.createSpeciesBatch.field.sampleWeight.tip=Somme des poids saisis ci-dessous tutti.createSpeciesBatch.field.species=Espèce du lot tutti.createSpeciesBatch.field.species.tip=Code campagne ou Code Rubin – Nom scientifique du lot à créer tutti.createSpeciesBatch.title=Créer un lot @@ -351,7 +365,7 @@ tutti.editAccidentalBatch.table.header.size.tip=Taille (l'unité dépend de la classe de taille) tutti.editAccidentalBatch.table.header.species=Espèce tutti.editAccidentalBatch.table.header.species.tip=Espèce -tutti.editAccidentalBatch.table.header.weight=Poids observé (kg) +tutti.editAccidentalBatch.table.header.weight=Poids observé tutti.editAccidentalBatch.table.header.weight.tip=Poids observé tutti.editBenthosBatch.action.createBatch=Créer un lot pour une espèce tutti.editBenthosBatch.action.createBatch.mnemonic=C @@ -390,17 +404,17 @@ tutti.editBenthosBatch.action.splitBatch=Catégoriser le lot tutti.editBenthosBatch.action.splitBatch.mnemonic=C tutti.editBenthosBatch.action.splitBatch.tip=Catégoriser le lot courant (celui de la ligne sélectionné) -tutti.editBenthosBatch.field.benthosTotalInertWeight=Poids inerte trié (kg) +tutti.editBenthosBatch.field.benthosTotalInertWeight=Poids inerte trié tutti.editBenthosBatch.field.benthosTotalInertWeight.tip=Poids de la fraction inerte restante après le tri du benthos (cailloux, vase, débris coquilliers, etc.) -tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight=Poids vivant non détaillé trié (kg) +tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight=Poids vivant non détaillé trié tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight.tip=Poids de la fraction vivante restante après le tri du benthos (algues, matières vivantes non reconnaissable, etc.) -tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight=Poids VRAC trié (kg) +tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight=Poids VRAC trié tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight.tip=Poids total du benthos trié -tutti.editBenthosBatch.field.benthosTotalSortedWeight=Poids total VRAC (kg) +tutti.editBenthosBatch.field.benthosTotalSortedWeight=Poids total VRAC tutti.editBenthosBatch.field.benthosTotalSortedWeight.tip=Poids total VRAC des espèces de type benthos dans la capture -tutti.editBenthosBatch.field.benthosTotalUnsortedWeight=Poids total HORS VRAC (kg) +tutti.editBenthosBatch.field.benthosTotalUnsortedWeight=Poids total HORS VRAC tutti.editBenthosBatch.field.benthosTotalUnsortedWeight.tip=Poids total HORS VRAC des espèces de type benthos dans la capture -tutti.editBenthosBatch.field.benthosTotalWeight=Poids TOTAL (kg) +tutti.editBenthosBatch.field.benthosTotalWeight=Poids TOTAL tutti.editBenthosBatch.field.benthosTotalWeight.tip=Poids total des espèces de type benthos dans la capture (Vrac + Hors Vrac) tutti.editBenthosBatch.filterBatch=Filtre tutti.editBenthosBatch.filterBatch.mode.all=Aucun @@ -423,7 +437,7 @@ tutti.editBenthosBatch.table.header.species.tip=Code campagne ou code Rubin – Nom scientifique tutti.editBenthosBatch.table.header.toConfirm=A Confirmer tutti.editBenthosBatch.table.header.toConfirm.tip=Case à cocher si il y a un doute sur l'identification de l'espèce -tutti.editBenthosBatch.table.header.weight=Poids sous-échantillonné (kg) +tutti.editBenthosBatch.table.header.weight=Poids sous-échantillonné tutti.editBenthosBatch.table.header.weight.tip=Poids du lot mesuré ou dénombré tutti.editBenthosFrequencies.action.cancel=Annuler tutti.editBenthosFrequencies.action.cancel.mnemonic=A @@ -461,8 +475,8 @@ tutti.editBenthosFrequencies.field.step.tip=Pas de la classe de taille pour cette espèce (ex. \: 1 cm, 0,5 cm, 1 mm etc.) tutti.editBenthosFrequencies.field.totalNumber=Nombre total tutti.editBenthosFrequencies.field.totalNumber.tip=Nombre total d'individus des lignes valides -tutti.editBenthosFrequencies.field.totalWeight=Poids total (kg) -tutti.editBenthosFrequencies.field.totalWeight.tip=Poids total des lignes valides (kg) +tutti.editBenthosFrequencies.field.totalWeight=Poids total +tutti.editBenthosFrequencies.field.totalWeight.tip=Poids total des lignes valides tutti.editBenthosFrequencies.label.no.configuration=< Pas de configuration > tutti.editBenthosFrequencies.simpleCountingAndFrequencies=Des mensurations ont été saisies dans le tableau. Saisir un simple dénombrement les effacera. tutti.editBenthosFrequencies.title=Mensuration @@ -482,36 +496,36 @@ tutti.editCatchBatch.action.saveCatchBatch.tip=Enregistrer la capture tutti.editCatchBatch.askCancelEditBeforeLeaving.cancelEditCatchBatch=La capture n'est pas valide et ne peut pas être enregistrée tutti.editCatchBatch.askSaveBeforeLeaving.saveCatchBatch=Des modifications sur la capture n'ont pas été enregistrées -tutti.editCatchBatch.field.benthosTotalSampleSortedWeight=Poids VRAC trié (kg) -tutti.editCatchBatch.field.benthosTotalSampleSortedWeight.tip=Poids du VRAC trié dans le benthos (kg) -tutti.editCatchBatch.field.benthosTotalSortedWeight=Poids total VRAC (kg) -tutti.editCatchBatch.field.benthosTotalSortedWeight.tip=Poids total du VRAC benthos (kg) -tutti.editCatchBatch.field.benthosTotalUnsortedWeight=Poids total HORS VRAC (kg) -tutti.editCatchBatch.field.benthosTotalUnsortedWeight.tip=Poids total du HORS VRAC benthos (kg) -tutti.editCatchBatch.field.benthosTotalWeight=Poids TOTAL (kg) -tutti.editCatchBatch.field.benthosTotalWeight.tip=Poids total du benthos dans la capture (\= poids total Vrac + poids total Hors Vrac) (kg) -tutti.editCatchBatch.field.catchTotalRejectedWeight=Poids total NON TRIÉ (kg) -tutti.editCatchBatch.field.catchTotalRejectedWeight.tip=Poids de la fraction non triée à bord (kg) -tutti.editCatchBatch.field.catchTotalSortedCarousselWeight=Carrousel observé (kg) -tutti.editCatchBatch.field.catchTotalSortedCarousselWeight.tip=Sur Thalassa, poids total de la capture pesé sur la balance carrousel (kg) -tutti.editCatchBatch.field.catchTotalSortedTremisWeight=Trémie (kg) -tutti.editCatchBatch.field.catchTotalSortedTremisWeight.tip=Sur Thalassa, poids total de la capture pesé sur la balance trémie et envoyée sur la chaîne de tri (kg) -tutti.editCatchBatch.field.catchTotalSortedWeight=Poids total VRAC (kg) -tutti.editCatchBatch.field.catchTotalSortedWeight.tip=Poids total VRAC des espèces dans la capture (sans les captures accidentelles) (kg) -tutti.editCatchBatch.field.catchTotalUnsortedWeight=Poids total HORS VRAC (kg) -tutti.editCatchBatch.field.catchTotalUnsortedWeight.tip=Poids total HORS VRAC des espèces dans la capture (sans les captures accidentelles) (kg) -tutti.editCatchBatch.field.catchTotalWeight=Poids TOTAL (kg) -tutti.editCatchBatch.field.catchTotalWeight.tip=Poids total de la capture (sauf macro déchets et captures accidentelles) (kg) -tutti.editCatchBatch.field.marineLitterTotalWeight=Poids TOTAL (kg) -tutti.editCatchBatch.field.marineLitterTotalWeight.tip=Poids total des macro déchets dans la capture (kg) -tutti.editCatchBatch.field.speciesTotalSampleSortedWeight=Poids VRAC trié (kg) -tutti.editCatchBatch.field.speciesTotalSampleSortedWeight.tip=Poids total des espèces triées (poissons, crustacés etc.) (kg) -tutti.editCatchBatch.field.speciesTotalSortedWeight=Poids total VRAC (kg) -tutti.editCatchBatch.field.speciesTotalSortedWeight.tip=Poids total VRAC des espèces dans la capture (poissons, crustacés etc.) (kg) -tutti.editCatchBatch.field.speciesTotalUnsortedWeight=Poids total HORS VRAC (kg) -tutti.editCatchBatch.field.speciesTotalUnsortedWeight.tip=Poids total HORS VRAC des espèces dans la capture (poissons, crustacés etc.) (kg) -tutti.editCatchBatch.field.speciesTotalWeight=Poids TOTAL (kg) -tutti.editCatchBatch.field.speciesTotalWeight.tip=Poids total des espèces dans la capture (poissons, crustacés etc.) (kg) +tutti.editCatchBatch.field.benthosTotalSampleSortedWeight=Poids VRAC trié +tutti.editCatchBatch.field.benthosTotalSampleSortedWeight.tip=Poids du VRAC trié dans le benthos +tutti.editCatchBatch.field.benthosTotalSortedWeight=Poids total VRAC +tutti.editCatchBatch.field.benthosTotalSortedWeight.tip=Poids total du VRAC benthos +tutti.editCatchBatch.field.benthosTotalUnsortedWeight=Poids total HORS VRAC +tutti.editCatchBatch.field.benthosTotalUnsortedWeight.tip=Poids total du HORS VRAC benthos +tutti.editCatchBatch.field.benthosTotalWeight=Poids TOTAL +tutti.editCatchBatch.field.benthosTotalWeight.tip=Poids total du benthos dans la capture (\= poids total Vrac + poids total Hors Vrac) +tutti.editCatchBatch.field.catchTotalRejectedWeight=Poids total NON TRIÉ +tutti.editCatchBatch.field.catchTotalRejectedWeight.tip=Poids de la fraction non triée à bord +tutti.editCatchBatch.field.catchTotalSortedCarousselWeight=Carrousel observé +tutti.editCatchBatch.field.catchTotalSortedCarousselWeight.tip=Sur Thalassa, poids total de la capture pesé sur la balance carrousel +tutti.editCatchBatch.field.catchTotalSortedTremisWeight=Trémie +tutti.editCatchBatch.field.catchTotalSortedTremisWeight.tip=Sur Thalassa, poids total de la capture pesé sur la balance trémie et envoyée sur la chaîne de tri +tutti.editCatchBatch.field.catchTotalSortedWeight=Poids total VRAC +tutti.editCatchBatch.field.catchTotalSortedWeight.tip=Poids total VRAC des espèces dans la capture (sans les captures accidentelles) +tutti.editCatchBatch.field.catchTotalUnsortedWeight=Poids total HORS VRAC +tutti.editCatchBatch.field.catchTotalUnsortedWeight.tip=Poids total HORS VRAC des espèces dans la capture (sans les captures accidentelles) +tutti.editCatchBatch.field.catchTotalWeight=Poids TOTAL +tutti.editCatchBatch.field.catchTotalWeight.tip=Poids total de la capture (sauf macro déchets et captures accidentelles) +tutti.editCatchBatch.field.marineLitterTotalWeight=Poids TOTAL +tutti.editCatchBatch.field.marineLitterTotalWeight.tip=Poids total des macro déchets dans la capture +tutti.editCatchBatch.field.speciesTotalSampleSortedWeight=Poids VRAC trié +tutti.editCatchBatch.field.speciesTotalSampleSortedWeight.tip=Poids total des espèces triées (poissons, crustacés etc.) +tutti.editCatchBatch.field.speciesTotalSortedWeight=Poids total VRAC +tutti.editCatchBatch.field.speciesTotalSortedWeight.tip=Poids total VRAC des espèces dans la capture (poissons, crustacés etc.) +tutti.editCatchBatch.field.speciesTotalUnsortedWeight=Poids total HORS VRAC +tutti.editCatchBatch.field.speciesTotalUnsortedWeight.tip=Poids total HORS VRAC des espèces dans la capture (poissons, crustacés etc.) +tutti.editCatchBatch.field.speciesTotalWeight=Poids TOTAL +tutti.editCatchBatch.field.speciesTotalWeight.tip=Poids total des espèces dans la capture (poissons, crustacés etc.) tutti.editCatchBatch.legend.benthos=Benthos tutti.editCatchBatch.legend.marineLitter=Macro déchets tutti.editCatchBatch.legend.species=Espèces @@ -682,7 +696,7 @@ tutti.editIndividualObservationBatch.action.removeBatch.confirm.title=Suppression d'une observation individuelle tutti.editIndividualObservationBatch.action.removeBatch.mnemonic=S tutti.editIndividualObservationBatch.action.removeBatch.tip=Supprimer la ligne sélectionnée -tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode=Code de prélèvement pièce calcifiée +tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode= tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode.tip=Code de prélèvement pièce calcifiée tutti.editIndividualObservationBatch.table.header.comment=Commentaire tutti.editIndividualObservationBatch.table.header.comment.tip=Commentaire @@ -692,14 +706,14 @@ tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic.tip=Classe de taille tutti.editIndividualObservationBatch.table.header.otherCaracteristics=Autres caractéristiques tutti.editIndividualObservationBatch.table.header.otherCaracteristics.tip=Autres caractéristiques -tutti.editIndividualObservationBatch.table.header.samplingCode=Code prélèvement autre +tutti.editIndividualObservationBatch.table.header.samplingCode= tutti.editIndividualObservationBatch.table.header.samplingCode.tip=Code prélèvement autre tutti.editIndividualObservationBatch.table.header.size=Taille tutti.editIndividualObservationBatch.table.header.size.tip=Taille tutti.editIndividualObservationBatch.table.header.species=Espèce tutti.editIndividualObservationBatch.table.header.species.tip=Espèce -tutti.editIndividualObservationBatch.table.header.weight=Poids (g) -tutti.editIndividualObservationBatch.table.header.weight.tip=Poids (g) +tutti.editIndividualObservationBatch.table.header.weight=Poids +tutti.editIndividualObservationBatch.table.header.weight.tip=Poids tutti.editIndividualObservationCaracteristics.action.cancel=Annuler tutti.editIndividualObservationCaracteristics.action.cancel.mnemonic=A tutti.editIndividualObservationCaracteristics.action.cancel.tip=Annuler l'édition des caractéristiques de l'observation @@ -729,8 +743,8 @@ tutti.editMarineLitterBatch.action.removeBatch.confirm.title=Suppression d'un lot de déchets tutti.editMarineLitterBatch.action.removeBatch.mnemonic=S tutti.editMarineLitterBatch.action.removeBatch.tip=Supprimer la ligne sélectionnée -tutti.editMarineLitterBatch.field.marineLitterTotalWeight=Poids total (kg) -tutti.editMarineLitterBatch.field.marineLitterTotalWeight.tip=Poids total (kg) +tutti.editMarineLitterBatch.field.marineLitterTotalWeight=Poids total +tutti.editMarineLitterBatch.field.marineLitterTotalWeight.tip=Poids total tutti.editMarineLitterBatch.table.header.comment=Commentaire tutti.editMarineLitterBatch.table.header.comment.tip=Commentaire tutti.editMarineLitterBatch.table.header.file=Pièces jointes @@ -741,8 +755,8 @@ tutti.editMarineLitterBatch.table.header.marineLitterSizeCategory.tip=Catégorie de taille tutti.editMarineLitterBatch.table.header.number=Nombre tutti.editMarineLitterBatch.table.header.number.tip=Nombre d'objets -tutti.editMarineLitterBatch.table.header.weight=Poids (kg) -tutti.editMarineLitterBatch.table.header.weight.tip=Poids (kg) +tutti.editMarineLitterBatch.table.header.weight=Poids +tutti.editMarineLitterBatch.table.header.weight.tip=Poids tutti.editProgram.action.closeEditProgram=Fermer tutti.editProgram.action.closeEditProgram.mnemonic=r tutti.editProgram.action.closeEditProgram.tip=Annuler l'édition (ou la création) de la série de campagne, ou fermer l'éditeur suite à un enregistrement @@ -919,18 +933,18 @@ tutti.editSpeciesBatch.action.splitBatch=Catégoriser le lot tutti.editSpeciesBatch.action.splitBatch.mnemonic=C tutti.editSpeciesBatch.action.splitBatch.tip=Catégoriser le lot courant (celui de la ligne sélectionné) -tutti.editSpeciesBatch.field.speciesTotalInertWeight=Poids inerte trié (kg) -tutti.editSpeciesBatch.field.speciesTotalInertWeight.tip=Poids de la fraction inerte restante après le tri des espèces (cailloux, vase, débris coquilliers, etc.) (kg) -tutti.editSpeciesBatch.field.speciesTotalLivingNotItemizedWeight=Poids vivant non détaillé trié (kg) -tutti.editSpeciesBatch.field.speciesTotalLivingNotItemizedWeight.tip=Poids de la fraction vivante restante après le tri des espèces (algues, matières vivantes non reconnaissable, etc.) (kg) -tutti.editSpeciesBatch.field.speciesTotalSampleSortedWeight=Poids VRAC trié (kg) -tutti.editSpeciesBatch.field.speciesTotalSampleSortedWeight.tip=Poids total des espèces triées (poissons, crustacés etc.) (kg) -tutti.editSpeciesBatch.field.speciesTotalSortedWeight=Poids total VRAC (kg) -tutti.editSpeciesBatch.field.speciesTotalSortedWeight.tip=Poids total VRAC des espèces dans la capture (poissons, crustacés etc.) (kg) -tutti.editSpeciesBatch.field.speciesTotalUnsortedWeight=Poids total HORS VRAC (kg) -tutti.editSpeciesBatch.field.speciesTotalUnsortedWeight.tip=Poids total HORS VRAC des espèces dans la capture (sans les captures accidentelles) (kg) -tutti.editSpeciesBatch.field.speciesTotalWeight=Poids TOTAL (kg) -tutti.editSpeciesBatch.field.speciesTotalWeight.tip=Poids total des espèces dans la capture (poissons, crustacés etc.) (kg) +tutti.editSpeciesBatch.field.speciesTotalInertWeight=Poids inerte trié +tutti.editSpeciesBatch.field.speciesTotalInertWeight.tip=Poids de la fraction inerte restante après le tri des espèces (cailloux, vase, débris coquilliers, etc.) +tutti.editSpeciesBatch.field.speciesTotalLivingNotItemizedWeight=Poids vivant non détaillé trié +tutti.editSpeciesBatch.field.speciesTotalLivingNotItemizedWeight.tip=Poids de la fraction vivante restante après le tri des espèces (algues, matières vivantes non reconnaissable, etc.) +tutti.editSpeciesBatch.field.speciesTotalSampleSortedWeight=Poids VRAC trié +tutti.editSpeciesBatch.field.speciesTotalSampleSortedWeight.tip=Poids total des espèces triées (poissons, crustacés etc.) +tutti.editSpeciesBatch.field.speciesTotalSortedWeight=Poids total VRAC +tutti.editSpeciesBatch.field.speciesTotalSortedWeight.tip=Poids total VRAC des espèces dans la capture (poissons, crustacés etc.) +tutti.editSpeciesBatch.field.speciesTotalUnsortedWeight=Poids total HORS VRAC +tutti.editSpeciesBatch.field.speciesTotalUnsortedWeight.tip=Poids total HORS VRAC des espèces dans la capture (sans les captures accidentelles) +tutti.editSpeciesBatch.field.speciesTotalWeight=Poids TOTAL +tutti.editSpeciesBatch.field.speciesTotalWeight.tip=Poids total des espèces dans la capture (poissons, crustacés etc.) tutti.editSpeciesBatch.filterBatch=Filtre tutti.editSpeciesBatch.filterBatch.mode.all=Aucun tutti.editSpeciesBatch.filterBatch.mode.all.tip=Pas de filtre (tous les lots sont visibles) @@ -947,7 +961,8 @@ tutti.editSpeciesBatch.table.header.file=Pièces jointes tutti.editSpeciesBatch.table.header.species=Espèce tutti.editSpeciesBatch.table.header.toConfirm=A Confirmer -tutti.editSpeciesBatch.table.header.weight=Poids sous-échantillonné (kg) +tutti.editSpeciesBatch.table.header.weight=Poids sous-échantillonné +tutti.editSpeciesBatch.table.header.weight.tip=Poids sous-échantillonné tutti.editSpeciesFrequencies.action.cancel=Annuler tutti.editSpeciesFrequencies.action.cancel.mnemonic=A tutti.editSpeciesFrequencies.action.cancel.tip=Annuler l'édition des mensurations @@ -984,13 +999,14 @@ tutti.editSpeciesFrequencies.field.step.tip=Pas de la classe de taille pour cette espèce (ex. \: 1 cm, 0,5 cm, 1 mm etc.) tutti.editSpeciesFrequencies.field.totalNumber=Nombre total tutti.editSpeciesFrequencies.field.totalNumber.tip=Nombre total d'individus des lignes valides -tutti.editSpeciesFrequencies.field.totalWeight=Poids total (kg) -tutti.editSpeciesFrequencies.field.totalWeight.tip=Poids total des lignes valides (kg) +tutti.editSpeciesFrequencies.field.totalWeight=Poids total +tutti.editSpeciesFrequencies.field.totalWeight.tip=Poids total des lignes valides tutti.editSpeciesFrequencies.label.no.configuration=< Pas de configuration > tutti.editSpeciesFrequencies.simpleCountingAndFrequencies=Des mensurations ont été saisies dans le tableau. Saisir un simple dénombrement les effacera. tutti.editSpeciesFrequencies.table.header.lengthStep=Classe de taille tutti.editSpeciesFrequencies.table.header.number=Nombre -tutti.editSpeciesFrequencies.table.header.weight=Poids observé (kg) +tutti.editSpeciesFrequencies.table.header.weight=Poids observé +tutti.editSpeciesFrequencies.table.header.weight.tip=Poids observé tutti.editSpeciesFrequencies.title=Mensuration tutti.error.about.could.not.reach.url=Récupération des versions de mises à jour impossible (l'url <strong>%s</strong> n'est pas joignable) tutti.error.delete.startActionFile=Impossible de supprimer le fichier %s @@ -1324,17 +1340,18 @@ tutti.splitBenthosBatch.action.save=Enregistrer tutti.splitBenthosBatch.action.save.mnemonic=E tutti.splitBenthosBatch.action.save.tip=Sauver le sous-échantillonnage -tutti.splitBenthosBatch.field.batchWeight=Poids total à catégoriser (kg) -tutti.splitBenthosBatch.field.batchWeightField.tip=Poids du lot père (si renseigné) (kg) +tutti.splitBenthosBatch.field.batchWeight=Poids total à catégoriser +tutti.splitBenthosBatch.field.batchWeight.tip=Poids du lot père (si renseigné) tutti.splitBenthosBatch.field.category=Catégorie -tutti.splitBenthosBatch.field.categoryField.tip=Choisir le mode de catégorisation -tutti.splitBenthosBatch.field.sampleWeight=Poids total catégorisé (kg) -tutti.splitBenthosBatch.field.sampleWeightField.tip=Somme des poids saisis ci-dessous (kg) +tutti.splitBenthosBatch.field.category.tip=Choisir le mode de catégorisation +tutti.splitBenthosBatch.field.sampleWeight=Poids total catégorisé +tutti.splitBenthosBatch.field.sampleWeight.tip=Somme des poids saisis ci-dessous tutti.splitBenthosBatch.field.species=Espèce tutti.splitBenthosBatch.field.speciesField.tip=Espèce du lot père tutti.splitBenthosBatch.table.header.category=Catégorie tutti.splitBenthosBatch.table.header.selected=Sélection -tutti.splitBenthosBatch.table.header.weight=Poids (kg) +tutti.splitBenthosBatch.table.header.weight=Poids +tutti.splitBenthosBatch.table.header.weight.tip=Poids tutti.splitBenthosBatch.title=Catégorisation du lot tutti.splitSpeciesBatch.action.cancel=Annuler tutti.splitSpeciesBatch.action.cancel.mnemonic=A @@ -1342,17 +1359,18 @@ tutti.splitSpeciesBatch.action.save=Enregistrer tutti.splitSpeciesBatch.action.save.mnemonic=E tutti.splitSpeciesBatch.action.save.tip=Sauver le sous-échantillonnage -tutti.splitSpeciesBatch.field.batchWeight=Poids total à catégoriser (kg) -tutti.splitSpeciesBatch.field.batchWeightField.tip=Poids du lot père (si renseigné) (kg) +tutti.splitSpeciesBatch.field.batchWeight=Poids total à catégoriser +tutti.splitSpeciesBatch.field.batchWeightField.tip=Poids du lot père (si renseigné) tutti.splitSpeciesBatch.field.category=Catégorie tutti.splitSpeciesBatch.field.categoryField.tip=Choisir le mode de catégorisation -tutti.splitSpeciesBatch.field.sampleWeight=Poids total catégorisé (kg) -tutti.splitSpeciesBatch.field.sampleWeightField.tip=Somme des poids saisis ci-dessous (kg) +tutti.splitSpeciesBatch.field.sampleWeight=Poids total catégorisé +tutti.splitSpeciesBatch.field.sampleWeightField.tip=Somme des poids saisis ci-dessous tutti.splitSpeciesBatch.field.species=Espèce tutti.splitSpeciesBatch.field.speciesField.tip=Espèce du lot père tutti.splitSpeciesBatch.table.header.category=Catégorie tutti.splitSpeciesBatch.table.header.selected=Sélection -tutti.splitSpeciesBatch.table.header.weight=Poids (kg) +tutti.splitSpeciesBatch.table.header.weight=Poids +tutti.splitSpeciesBatch.table.header.weight.tip=Poids tutti.splitSpeciesBatch.title=Catégorisation du lot tutti.timeeditor.H=H tutti.update.db=Base de données Modified: trunk/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModelTest.java =================================================================== --- trunk/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModelTest.java 2013-09-22 11:29:17 UTC (rev 1202) +++ trunk/tutti-ui-swing/src/test/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModelTest.java 2013-09-23 09:39:50 UTC (rev 1203) @@ -24,6 +24,7 @@ * #L% */ +import fr.ifremer.tutti.ui.swing.util.WeightUnit; import org.junit.Assert; import org.junit.Test; @@ -36,8 +37,8 @@ @Test public void compareTo() throws Exception { - SpeciesFrequencyRowModel s0 = new SpeciesFrequencyRowModel(); - SpeciesFrequencyRowModel s1 = new SpeciesFrequencyRowModel(); + SpeciesFrequencyRowModel s0 = new SpeciesFrequencyRowModel(WeightUnit.KG); + SpeciesFrequencyRowModel s1 = new SpeciesFrequencyRowModel(WeightUnit.KG); // s0=null, s1=null Assert.assertTrue(s0.compareTo(s1) == 0);