r765 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content java/fr/ifremer/tutti/ui/swing/content/operation/catches java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create resources/i18n
Author: kmorin Date: 2013-04-11 13:12:42 +0200 (Thu, 11 Apr 2013) New Revision: 765 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/765 Log: fixes #2259 [MACRODECHET] - Je ne peux cr?\195?\169er deux lignes "A2: Plastic, Feuille" avec des cat?\195?\169gories de taille diff?\195?\169rentes Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.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/marinelitter/MarineLitterBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 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/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-04-11 11:12:42 UTC (rev 765) @@ -522,6 +522,8 @@ // selected protocol TuttiProtocol protocol = getDataContext().getProtocol(); + log.fatal(protocol.getId() + " " + protocol.getName()); + title += _("tutti.main.title.selectedProtocol", protocol.getName()); } else { @@ -543,7 +545,6 @@ title = _("tutti.main.title.nodb"); } - return title; } 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-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-04-11 11:12:42 UTC (rev 765) @@ -118,6 +118,14 @@ protected final Multimap<CaracteristicQualitativeValue, Species> speciesUsed = ArrayListMultimap.create(); + /** + * Categories already used in some batches. + * + * @since 1.4 + */ + protected final Multimap<CaracteristicQualitativeValue, CaracteristicQualitativeValue> + marineLitterCategoriesUsed = ArrayListMultimap.create(); + public EditCatchesUIModel() { super(CatchBatch.class, fromBeanBinder, toBeanBinder); speciesTotalSortedComputedOrNotWeight.addPropagateListener( @@ -190,6 +198,10 @@ return speciesUsed; } + public Multimap<CaracteristicQualitativeValue, CaracteristicQualitativeValue> getMarineLitterCategoriesUsed() { + return marineLitterCategoriesUsed; + } + //------------------------------------------------------------------------// //-- Total --// //------------------------------------------------------------------------// 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-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-11 11:12:42 UTC (rev 765) @@ -24,6 +24,7 @@ * #L% */ +import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import fr.ifremer.tutti.PropagatePropertyChangeListener; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -203,6 +204,16 @@ } @Override + protected void onModelRowsChanged(List<MarineLitterBatchRowModel> rows) { + super.onModelRowsChanged(rows); + + for (MarineLitterBatchRowModel row : rows) { + // update categoriesUsed + addToMarineLitterCategoriesUsed(row); + } + } + + @Override protected void onRowValidStateChanged(int rowIndex, MarineLitterBatchRowModel row, Boolean oldValue, @@ -391,7 +402,7 @@ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); CreateMarineLitterBatchUI createBatchEditor = parent.getMarineLitterTabCreateBatch(); - createBatchEditor.getHandler().openUI(); + createBatchEditor.getHandler().openUI(getModel()); parent.getHandler().setMarineLitterSelectedCard(EditCatchesUIHandler.CREATE_BATCH_CARD); } @@ -411,6 +422,9 @@ tableModel.addNewRow(newRow); AbstractSelectTableAction.doSelectCell(getTable(), tableModel.getRowCount() - 1, 0); + + //update categories used + addToMarineLitterCategoriesUsed(newRow); } recomputeBatchActionEnable(); @@ -453,4 +467,34 @@ persistenceService.saveMarineLitterBatch(catchBean); } } + + public void removeFromMarineLitterCategoriesUsed(MarineLitterBatchRowModel row) { + Preconditions.checkNotNull(row); + Preconditions.checkNotNull(row.getMarineLitterCategory()); + Preconditions.checkNotNull(row.getMarineLitterSizeCategory()); + if (log.isInfoEnabled()) { + log.info("Remove from speciesUsed: " + + decorate(row.getMarineLitterSizeCategory()) + + " - " + decorate(row.getMarineLitterCategory())); + } + MarineLitterBatchUIModel model = getModel(); + model.getMarineLitterCategoriesUsed().remove(row.getMarineLitterSizeCategory(), + row.getMarineLitterCategory()); + + } + + protected void addToMarineLitterCategoriesUsed(MarineLitterBatchRowModel row) { + Preconditions.checkNotNull(row); + Preconditions.checkNotNull(row.getMarineLitterCategory()); + Preconditions.checkNotNull(row.getMarineLitterSizeCategory()); + if (log.isDebugEnabled()) { + log.debug("Add to marineLitterCategoriesUsed: " + + decorate(row.getMarineLitterSizeCategory()) + + " - " + decorate(row.getMarineLitterCategory())); + } + MarineLitterBatchUIModel model = getModel(); + model.getMarineLitterCategoriesUsed().put(row.getMarineLitterSizeCategory(), + row.getMarineLitterCategory()); + + } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java 2013-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java 2013-04-11 11:12:42 UTC (rev 765) @@ -25,8 +25,10 @@ */ import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum; import fr.ifremer.tutti.persistence.entities.data.Attachment; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.TabContentModel; @@ -91,6 +93,10 @@ return rootBatchId; } + public Multimap<CaracteristicQualitativeValue, CaracteristicQualitativeValue> getMarineLitterCategoriesUsed() { + return catchesUIModel.getMarineLitterCategoriesUsed(); + } + //------------------------------------------------------------------------// //-- AttachmentModelAware --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java 2013-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java 2013-04-11 11:12:42 UTC (rev 765) @@ -84,6 +84,9 @@ persistenceService.deleteMarineLitterBatch(id); } + + // update speciesUsed + handler.removeFromMarineLitterCategoriesUsed(selectedBatch); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-04-11 11:12:42 UTC (rev 765) @@ -24,14 +24,15 @@ * #L% */ +import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.TuttiPersistence; -import fr.ifremer.tutti.persistence.entities.data.SortedUnsortedEnum; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.Cancelable; import fr.ifremer.tutti.ui.swing.util.TuttiUI; @@ -139,7 +140,7 @@ //-- Public methods --// //------------------------------------------------------------------------// - public void openUI() { + public void openUI(MarineLitterBatchUIModel batchModel) { CreateMarineLitterBatchUIModel model = getModel(); @@ -147,6 +148,15 @@ ui.getValidator().setBean(model); model.reset(); + + Multimap<CaracteristicQualitativeValue, CaracteristicQualitativeValue> categoryUsed = + model.getMarineLitterCategoryUsed(); + categoryUsed.clear(); + + if (batchModel != null) { + categoryUsed.putAll(batchModel.getMarineLitterCategoriesUsed()); + } + } public void save() { 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-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java 2013-04-11 11:12:42 UTC (rev 765) @@ -24,6 +24,8 @@ * #L% */ +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; @@ -47,6 +49,14 @@ protected final MarineLitterBatch editObject = TuttiBeanFactory.newMarineLitterBatch(); + /** + * Already used categories by size category. + * + * @since 1.4 + */ + protected final Multimap<CaracteristicQualitativeValue, CaracteristicQualitativeValue> marineLitterCategoryUsed = + ArrayListMultimap.create(); + public CreateMarineLitterBatchUIModel() { super(CreateMarineLitterBatchUIModel.class, null, null); } @@ -81,6 +91,25 @@ firePropertyChange(MarineLitterBatch.PROPERTY_NUMBER, oldValue, number); } + public Multimap<CaracteristicQualitativeValue, CaracteristicQualitativeValue> getMarineLitterCategoryUsed() { + return marineLitterCategoryUsed; + } + + public boolean isCategoryAndSizeCategoryAvailable() { + CaracteristicQualitativeValue category = getMarineLitterCategory(); + CaracteristicQualitativeValue sizeCategory = getMarineLitterSizeCategory(); + + boolean result = category != null && sizeCategory != null && + isCategoryAndSizeCategoryAvailable(category, sizeCategory); + return result; + } + + public boolean isCategoryAndSizeCategoryAvailable(CaracteristicQualitativeValue category, + CaracteristicQualitativeValue sizeCategory) { + boolean result = !marineLitterCategoryUsed.containsEntry(sizeCategory, category); + return result; + } + @Override protected CreateMarineLitterBatchUIModel newEntity() { return new CreateMarineLitterBatchUIModel(); Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml 2013-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml 2013-04-11 11:12:42 UTC (rev 765) @@ -33,6 +33,14 @@ tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required </message> </field-validator> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ marineLitterCategory == null || categoryAndSizeCategoryAvailable ]]> + </param> + <message> + tutti.validator.error.createMarineLitterBatch.categoryAndSizeCategory.notAvailable + </message> + </field-validator> </field> <field name="marineLitterSizeCategory"> @@ -41,6 +49,14 @@ tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required </message> </field-validator> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ marineLitterSizeCategory == null || categoryAndSizeCategoryAvailable ]]> + </param> + <message> + tutti.validator.error.createMarineLitterBatch.categoryAndSizeCategory.notAvailable + </message> + </field-validator> </field> <field name="number"> Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-11 08:46:30 UTC (rev 764) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-11 11:12:42 UTC (rev 765) @@ -1069,11 +1069,12 @@ tutti.update.jre=Java tutti.update.tutti=Tutti tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères) -tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required= -tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required= -tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required= -tutti.validator.error.createMarineLitterBatch.number.invalidValue= -tutti.validator.error.createMarineLitterBatch.number.required= +tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required=L'espèce est obligatoire +tutti.validator.error.createMarineLitterBatch.categoryAndSizeCategory.notAvailable=Couple (catégorie de déchet - catégorie de taille) déjà utilisée +tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=La catégorie de déchet est obligatoire +tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=La catégorie de taille est obligatoire +tutti.validator.error.createMarineLitterBatch.number.invalidValue=Le nombre doit être strictement positif +tutti.validator.error.createMarineLitterBatch.number.required=Le nombre est obligatoire tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=La catégorie Vrac / Hors Vrac est obligatoire tutti.validator.error.createSpeciesBatch.species.required=L'espèce est obligatoire
participants (1)
-
kmorin@users.forge.codelutin.com