r767 - in trunk: tutti-persistence/src/main/xmi tutti-service/src/main/java/fr/ifremer/tutti/service tutti-service/src/main/java/fr/ifremer/tutti/service/catches tutti-service/src/main/resources/i18n tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter
Author: kmorin Date: 2013-04-11 18:20:35 +0200 (Thu, 11 Apr 2013) New Revision: 767 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/767 Log: refs #2272 [MACRODECHET] - l'?\195?\169l?\195?\169vation des poids ne marche pas Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/ValidationService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 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/EditCatchesUI.jaxx 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/MarineLitterBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo =================================================================== (Binary files differ) Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/ValidationService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/ValidationService.java 2013-04-11 15:00:54 UTC (rev 766) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/ValidationService.java 2013-04-11 16:20:35 UTC (rev 767) @@ -24,10 +24,7 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.data.*; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import org.nuiton.validator.NuitonValidator; import org.nuiton.validator.NuitonValidatorFactory; @@ -70,4 +67,10 @@ NuitonValidatorResult result = validator.validate(speciesBatch); return result; } + + public NuitonValidatorResult validateMarineLitterBatch(MarineLitterBatch marineLitterBatch) { + NuitonValidator<MarineLitterBatch> validator = NuitonValidatorFactory.newValidator(MarineLitterBatch.class); + NuitonValidatorResult result = validator.validate(marineLitterBatch); + return result; + } } Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-11 15:00:54 UTC (rev 766) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-11 16:20:35 UTC (rev 767) @@ -63,7 +63,8 @@ public void computeCatchBatchWeights(CatchBatch catchBatch, BatchContainer<SpeciesBatch> rootSpeciesBatch, - BatchContainer<SpeciesBatch> rootBenthosBatch) { + BatchContainer<SpeciesBatch> rootBenthosBatch, + BatchContainer<MarineLitterBatch> rootMarineLitterBatch) { // Species Float speciesTotalComputedSortedWeight = 0f; @@ -173,6 +174,29 @@ Float benthosTotalWeight = benthosTotalComputedUnsortedWeight + benthosTotalSortedWeight; catchBatch.setBenthosTotalComputedWeight(benthosTotalWeight); + // Marine litter + Float marineLitterTotalComputedWeight = 0f; + + for (int i = 0; i < rootMarineLitterBatch.getChildren().size(); i++) { + MarineLitterBatch row = rootMarineLitterBatch.getChildren().get(i); + Float rowWeight = row.getWeight(); + if (rowWeight == null) { + marineLitterTotalComputedWeight = null; + break; + } + marineLitterTotalComputedWeight += rowWeight; + } + catchBatch.setMarineLitterTotalComputedWeight(marineLitterTotalComputedWeight); + + Float marineLitterTotalWeight = catchBatch.getMarineLitterTotalWeight(); + if (marineLitterTotalWeight == null) { + marineLitterTotalWeight = marineLitterTotalComputedWeight; + + } else if (marineLitterTotalComputedWeight != null && marineLitterTotalWeight < marineLitterTotalComputedWeight) { + throw new TuttiBusinessException(_("tutti.service.catches.computeWeights.error.incoherentMarineLitterTotal")); + } + //TODO kmorin 20130411 add marine litter batch to the right category (or directly to the total weight) + // Catch Float totalUnsortedWeight = catchBatch.getSpeciesTotalUnsortedComputedWeight() + catchBatch.getBenthosTotalUnsortedComputedWeight(); @@ -242,6 +266,15 @@ return rootBenthosBatch; } + public BatchContainer<MarineLitterBatch> getComputedMarineLitterBatches(FishingOperation operation) { + + BatchContainer<MarineLitterBatch> rootMarineLitterBatch = + persistenceService.getRootMarineLitterBatch(operation.getId()); + + + return rootMarineLitterBatch; + } + protected Float computeSpeciesBatch(SpeciesBatch batch) { Float result = null; Float categoryWeight = batch.getSampleCategoryWeight(); Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-11 15:00:54 UTC (rev 766) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-11 16:20:35 UTC (rev 767) @@ -45,6 +45,7 @@ tutti.propety.vessel.nation.registrationCode=%s (nat.) tutti.service.catches.computeWeights.error.incoherentBenthosTotalSorted= tutti.service.catches.computeWeights.error.incoherentCategoryWeight=Le poids total des mensurations est supérieur au poids de la catégorie +tutti.service.catches.computeWeights.error.incoherentMarineLitterTotal=Le poids total des macro-déchets est inférieur à la somme des poids des macro-déchets saisis tutti.service.catches.computeWeights.error.incoherentParentCategoryWeight=Le poids de la catégorie est différent de la somme des poids de ses sous-catégories tutti.service.catches.computeWeights.error.incoherentRowWeightCategory=Le poids de la catégorie ne peut pas être nul si le poids de sous-échantillonage est renseigné tutti.service.catches.computeWeights.error.incoherentRowWeightFrequency=Le poids total des mensurations est différent du poids du sous-échantillon 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-04-11 15:00:54 UTC (rev 766) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-04-11 16:20:35 UTC (rev 767) @@ -27,13 +27,11 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.TuttiBusinessException; -import fr.ifremer.tutti.persistence.entities.data.BatchContainer; -import fr.ifremer.tutti.persistence.entities.data.CatchBatch; -import fr.ifremer.tutti.persistence.entities.data.SortedUnsortedEnum; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.data.*; import fr.ifremer.tutti.service.catches.TuttiWeightComputingService; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyRowModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; @@ -70,6 +68,10 @@ tuttiWeightComputingService.getComputedBenthosBatches(model.getFishingOperation()); Float totalBenthosSortedWeight = computeBenthosBatches(computedBenthosBatches); + BatchContainer<MarineLitterBatch> computedMarineLitterBatches = + tuttiWeightComputingService.getComputedMarineLitterBatches(model.getFishingOperation()); + Float totalMarineLitterWeight = computeMarineLitterBatches(computedMarineLitterBatches); + Float rate = getConfig().getDifferenceRateBetweenSortedAndTotalWeights(); if (model.getSpeciesTotalSortedWeight() != null && model.getSpeciesTotalSortedWeight() >= totalSpeciesSortedWeight @@ -126,7 +128,8 @@ CatchBatch catchBatch = model.toBean(); tuttiWeightComputingService.computeCatchBatchWeights(catchBatch, computedSpeciesBatches, - computedBenthosBatches); + computedBenthosBatches, + computedMarineLitterBatches); model.setCatchBatch(catchBatch); model.fromBean(catchBatch); model.setModify(modified); @@ -156,6 +159,7 @@ weight = row.getSortedUnsortedCategoryComputedWeight(); } if (weight == null) { + getUI().getTabPane().setSelectedIndex(1); AbstractSelectTableAction.doSelectCell(getUI().getSpeciesTabContent().getTable(), rowIndex, 1); throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.noWeight")); @@ -186,6 +190,7 @@ weight = row.getSortedUnsortedCategoryComputedWeight(); } if (weight == null) { + getUI().getTabPane().setSelectedIndex(2); AbstractSelectTableAction.doSelectCell(getUI().getBenthosTabContent().getTable(), rowIndex, 1); throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.noWeight")); @@ -202,4 +207,28 @@ return totalSortedWeight; } + + protected Float computeMarineLitterBatches(BatchContainer<MarineLitterBatch> computedMarineLitterBatches) { + Float totalWeight = 0f; + + List<MarineLitterBatchRowModel> rows = Lists.newArrayList(); + List<MarineLitterBatch> children = computedMarineLitterBatches.getChildren(); + for (int i = 0 ; i < children.size() ; i++) { + MarineLitterBatch batch = children.get(i); + Float weight = batch.getWeight(); + if (weight == null) { + if (getModel().getMarineLitterTotalWeight() != null) { + return null; + } + getUI().getTabPane().setSelectedIndex(3); + AbstractSelectTableAction.doSelectCell(getUI().getMarineLitterTabContent().getTable(), i, 1); + throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.noWeight")); + + } else { + totalWeight += weight; + } + } + + return totalWeight; + } } 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-04-11 15:00:54 UTC (rev 766) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-04-11 16:20:35 UTC (rev 767) @@ -296,10 +296,8 @@ } #marineLitterTotalWeightField { - property: marineLitterTotalWeight; + bean: {model.getMarineLitterTotalComputedOrNotWeight()}; model: {model.getMarineLitterTotalWeight()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; } #planktonTab { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-11 15:00:54 UTC (rev 766) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-11 16:20:35 UTC (rev 767) @@ -296,8 +296,9 @@ <JLabel id='marineLitterTotalWeightLabel'/> </cell> <cell weightx='1.0'> - <NumberEditor id='marineLitterTotalWeightField' - constructorParams='this'/> + <TuttiComputedOrNotDataEditor + id='marineLitterTotalWeightField' + constructorParams='this'/> </cell> </row> 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 15:00:54 UTC (rev 766) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-04-11 16:20:35 UTC (rev 767) @@ -88,7 +88,7 @@ protected Float planktonTotalSampleWeight; - protected Float marineLitterTotalWeight; + protected TuttiComputedOrNotData<Float> marineLitterTotalComputedOrNotWeight = new TuttiComputedOrNotData<Float>();; protected TuttiComputedOrNotData<Float> catchTotalComputedOrNotWeight = new TuttiComputedOrNotData<Float>(); @@ -142,6 +142,9 @@ benthosTotalLivingNotItemizedComputedOrNotWeight.addPropagateListener( PROPERTY_BENTHOS_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, this); + marineLitterTotalComputedOrNotWeight.addPropagateListener( + PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, this); + catchTotalComputedOrNotWeight.addPropagateListener( PROPERTY_CATCH_TOTAL_WEIGHT, this); catchTotalRejectedComputedOrNotWeight.addPropagateListener( @@ -590,18 +593,34 @@ //-- Marine Litter --// //------------------------------------------------------------------------// + public TuttiComputedOrNotData<Float> getMarineLitterTotalComputedOrNotWeight() { + return marineLitterTotalComputedOrNotWeight; + } + @Override public Float getMarineLitterTotalWeight() { - return marineLitterTotalWeight; + return marineLitterTotalComputedOrNotWeight.getData(); } @Override public void setMarineLitterTotalWeight(Float marineLitterTotalWeight) { Object oldValue = getMarineLitterTotalWeight(); - this.marineLitterTotalWeight = marineLitterTotalWeight; + this.marineLitterTotalComputedOrNotWeight.setData(marineLitterTotalWeight); firePropertyChange(PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, oldValue, marineLitterTotalWeight); } + @Override + public Float getMarineLitterTotalComputedWeight() { + return marineLitterTotalComputedOrNotWeight.getComputedData(); + } + + @Override + public void setMarineLitterTotalComputedWeight(Float marineLitterTotalComputedWeight) { + Object oldValue = getMarineLitterTotalComputedWeight(); + this.marineLitterTotalComputedOrNotWeight.setComputedData(marineLitterTotalComputedWeight); + firePropertyChange(PROPERTY_MARINE_LITTER_TOTAL_COMPUTED_WEIGHT, oldValue, marineLitterTotalComputedWeight); + } + //------------------------------------------------------------------------// //-- Attachment --// //------------------------------------------------------------------------// @@ -658,6 +677,7 @@ setBenthosTotalSortedComputedWeight(null); setBenthosTotalUnsortedComputedWeight(null); setBenthosTotalComputedWeight(null); + setMarineLitterTotalComputedWeight(null); setCatchTotalRejectedComputedWeight(null); setCatchTotalSortedComputedWeight(null); setCatchTotalUnsortedComputedWeight(null); 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-04-11 15:00:54 UTC (rev 766) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-04-11 16:20:35 UTC (rev 767) @@ -22,12 +22,14 @@ * #L% */ -NumberEditor { +TuttiComputedOrNotDataEditor { autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; - bean: {model}; showReset: true; - _selectOnFocus: {true}; + useFloat: true; + numberPattern: {DECIMAL3_PATTERN}; + decimalNumber: 3; + computedDataColor: {handler.getConfig().getColorComputedWeights()}; } #editMarineLitterBatchTopPanel { @@ -52,10 +54,8 @@ } #marineLitterTotalWeightField { - property: marineLitterTotalWeight; + bean: {model.getMarineLitterTotalComputedOrNotWeight()}; model: {model.getMarineLitterTotalWeight()}; - useFloat: false; - numberPattern: {DECIMAL3_PATTERN}; } #tablePopup { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-11 15:00:54 UTC (rev 766) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-11 16:20:35 UTC (rev 767) @@ -30,9 +30,8 @@ fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment + fr.ifremer.tutti.ui.swing.util.editor.TuttiComputedOrNotDataEditor - jaxx.runtime.swing.editor.NumberEditor - org.jdesktop.swingx.JXTable javax.swing.ListSelectionModel @@ -86,7 +85,7 @@ <JLabel id='marineLitterTotalWeightLabel'/> </cell> <cell weightx='1.0'> - <NumberEditor id='marineLitterTotalWeightField' + <TuttiComputedOrNotDataEditor id='marineLitterTotalWeightField' constructorParams='this'/> </cell> </row> 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 15:00:54 UTC (rev 766) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIModel.java 2013-04-11 16:20:35 UTC (rev 767) @@ -32,6 +32,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.TabContentModel; +import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.collections.CollectionUtils; @@ -65,6 +66,10 @@ EditCatchesUIModel.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT); } + public TuttiComputedOrNotData<Float> getMarineLitterTotalComputedOrNotWeight() { + return catchesUIModel.getMarineLitterTotalComputedOrNotWeight(); + } + public Float getMarineLitterTotalWeight() { return catchesUIModel.getMarineLitterTotalWeight(); } @@ -73,6 +78,14 @@ catchesUIModel.setMarineLitterTotalWeight(marineLitterTotalWeight); } + public Float getMarineLitterTotalComputedWeight() { + return catchesUIModel.getMarineLitterTotalComputedWeight(); + } + + public void setMarineLitterTotalComputedWeight(Float marineLitterTotalWeight) { + catchesUIModel.setMarineLitterTotalComputedWeight(marineLitterTotalWeight); + } + public boolean isRemoveBatchEnabled() { return removeBatchEnabled; }
participants (1)
-
kmorin@users.forge.codelutin.com