Author: tchemit Date: 2012-12-27 13:51:33 +0100 (Thu, 27 Dec 2012) New Revision: 109 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/109 Log: refs #1902: [Onglet Poisson] Ajout de la caract?\195?\169ristique du type de mesure Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.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/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUIModel.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2012-12-27 12:51:33 UTC (rev 109) @@ -84,7 +84,7 @@ List<Caracteristic> getAllFishingOperationHydrologicCaracteristic(); - List<Caracteristic> getAllSpeciesFrequencyCaracteristic(); + List<Caracteristic> getAllSpeciesLengthStepCaracteristic(); Caracteristic getSizeCategoryCaracteristic(); Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo =================================================================== (Binary files differ) Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java =================================================================== --- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-27 12:51:33 UTC (rev 109) @@ -268,7 +268,7 @@ } @Override - public List<Caracteristic> getAllSpeciesFrequencyCaracteristic() { + public List<Caracteristic> getAllSpeciesLengthStepCaracteristic() { return getAllCaracteristicByCategory(CaracteristicEnum.SpeciesFrequency.name()); } @@ -660,22 +660,22 @@ // index them by id Map<String, B> existingById = TuttiEntities.splitById(existingData); - for (B toSave : newData) { + for (B source : newData) { - B saved; + B target; - if (TuttiEntities.isNew(toSave)) { + if (TuttiEntities.isNew(source)) { // must create it - saved = TuttiEntities.newEntity(beanType); + target = TuttiEntities.newEntity(beanType); } else { // get existing data - saved = existingById.get(toSave.getId()); + target = existingById.get(source.getId()); } // store it to be persist in one time - toPersist.put(toSave, saved); + toPersist.put(target, source); } // persist (entry with a value) and dettach (entry with no value) @@ -683,12 +683,12 @@ List<B> result = Lists.newArrayList(); for (Map.Entry<B, B> entry : toPersist.entrySet()) { - B source = entry.getKey(); - B target = entry.getValue(); - if (target == null) { + B source = entry.getValue(); + B target = entry.getKey(); + if (source == null) { // dettach entity - cache.remove(beanType, source); + cache.remove(beanType, target); } else { // persist entity Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2012-12-27 12:51:33 UTC (rev 109) @@ -203,9 +203,9 @@ } @Override - public List<Caracteristic> getAllSpeciesFrequencyCaracteristic() { + public List<Caracteristic> getAllSpeciesLengthStepCaracteristic() { checkDriverExists(); - return driver.getAllSpeciesFrequencyCaracteristic(); + return driver.getAllSpeciesLengthStepCaracteristic(); } @Override 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 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2012-12-27 12:51:33 UTC (rev 109) @@ -357,9 +357,9 @@ } public void setFrequency(List<SpeciesFrequencyRowModel> frequency) { - Object oldValue = getFrequency(); this.frequency = frequency; - firePropertyChange(PROPERTY_FREQUENCY, oldValue, frequency); + // force to propagate frequencies changes + firePropertyChange(PROPERTY_FREQUENCY, null, frequency); } public Float getComputedWeight() { 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 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2012-12-27 12:51:33 UTC (rev 109) @@ -137,8 +137,7 @@ protected String[] getRowPropertiesToIgnore() { return new String[]{ SpeciesBatchRowModel.PROPERTY_SAMPLE_WEIGHT, - SpeciesBatchRowModel.PROPERTY_SAMPLING_RATIO, - SpeciesBatchRowModel.PROPERTY_FREQUENCY}; + SpeciesBatchRowModel.PROPERTY_SAMPLING_RATIO}; } @Override @@ -172,7 +171,6 @@ addComboDataColumnToModel(columnModel, SpeciesBatchTableModel.SPECIES_BY_GENUS_CODE, decorator, allSpecies); - } { @@ -188,10 +186,8 @@ data.getQualitativeValue()); } - { + { // SizeCategory column - // SizeCategory column - Caracteristic data = persistenceService.getSizeCategoryCaracteristic(); @@ -201,10 +197,8 @@ data.getQualitativeValue()); } - { + { // SexCategory column - // SexCategory column - Caracteristic data = persistenceService.getSexCaracteristic(); addComboDataColumnToModel(columnModel, @@ -213,10 +207,8 @@ data.getQualitativeValue()); } - { + { // MaturityCategory column - // MaturityCategory column - Caracteristic data = persistenceService.getMaturityCaracteristic(); @@ -304,6 +296,9 @@ Object oldValue, Object newValue) { + if (log.isInfoEnabled()) { + log.info("Property " + propertyName + " has changed on row."); + } if (RECOMPUTE_TOTAL_WEIGHT.contains(propertyName)) { // Need to recompute totalHorsVracWeight @@ -561,7 +556,7 @@ PersistenceService service = context.getService(PersistenceService.class); List<Caracteristic> lengthCaracterics = - service.getAllSpeciesFrequencyCaracteristic(); + service.getAllSpeciesLengthStepCaracteristic(); ui.setContextValue(lengthCaracterics, SPECIES_FREQUENCY_LENGHTS); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyRowModel.java 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyRowModel.java 2012-12-27 12:51:33 UTC (rev 109) @@ -28,6 +28,7 @@ import com.google.common.collect.Ordering; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -52,6 +53,10 @@ public static final String PROPERTY_COMPUTED_WEIGHT = "computedWeight"; + + public static final String PROPERTY_LENGHT_STEP_CARACTERISTIC = "lengthStepCaracteristic"; + + /** * Length step. * @@ -80,6 +85,13 @@ */ protected Float computedWeight; + /** + * Length step caracteristic. + * + * @since 0.3 + */ + protected Caracteristic lengthStepCaracteristic; + protected static final Binder<SpeciesBatchFrequency, SpeciesFrequencyRowModel> fromBeanBinder = BinderFactory.newBinder(SpeciesBatchFrequency.class, SpeciesFrequencyRowModel.class); @@ -155,10 +167,20 @@ firePropertyChange(PROPERTY_COMPUTED_WEIGHT, oldValue, computedWeight); } + public Caracteristic getLengthStepCaracteristic() { + return lengthStepCaracteristic; + } + + public void setLengthStepCaracteristic(Caracteristic lengthStepCaracteristic) { + Object oldValue = getLengthStepCaracteristic(); + this.lengthStepCaracteristic = lengthStepCaracteristic; + firePropertyChange(PROPERTY_LENGHT_STEP_CARACTERISTIC, oldValue, lengthStepCaracteristic); + } + //TODO Use validator @Override public boolean isValid() { - return lengthStep != null && number != null; + return lengthStep != null && number != null && lengthStepCaracteristic != null; } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyTableModel.java 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyTableModel.java 2012-12-27 12:51:33 UTC (rev 109) @@ -130,6 +130,8 @@ Preconditions.checkNotNull(newValue, "can't add a null row"); + newValue.setLengthStepCaracteristic(uiModel.getLengthStepCaracteristic()); + // add new row to cache Float lengthStep = newValue.getLengthStep(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUI.css 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUI.css 2012-12-27 12:51:33 UTC (rev 109) @@ -148,6 +148,7 @@ actionIcon: "close"; text: "tutti.action.close"; mnemonic: F; + enabled: {model.getRows().size() == 0 || model.getLengthStepCaracteristic() != null}; } #table { @@ -155,4 +156,5 @@ selectionBackground: {null}; selectionForeground: {Color.BLACK}; sortable: false; + enabled: {model.getLengthStepCaracteristic() != null} } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUIHandler.java 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUIHandler.java 2012-12-27 12:51:33 UTC (rev 109) @@ -44,6 +44,8 @@ import java.awt.Color; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.List; import java.util.Map; @@ -173,6 +175,7 @@ SpeciesFrequencyUIModel model = getModel(); + //TODO Use protocol to have lengthStepCaracteristic to use (if any protocol) initBeanComboBox(ui.getLenghtStepCaracteristicComboBox(), lengthStepCaracterics, model.getLengthStepCaracteristic()); @@ -223,6 +226,17 @@ } } }); + + // when lengthStepCaracteristic changed, let's updates all row with the new value + model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_LENGHT_STEP_CARACTERISTIC, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Caracteristic newValue = (Caracteristic) evt.getNewValue(); + for (SpeciesFrequencyRowModel rowModel : getModel().getRows()) { + rowModel.setLengthStepCaracteristic(newValue); + } + } + }); } @Override @@ -306,10 +320,13 @@ public void editBatch(SpeciesBatchRowModel row) { List<SpeciesFrequencyRowModel> frequency = null; + + Caracteristic lengthStepCaracteristic = null; if (row != null) { frequency = row.getFrequency(); } + List<SpeciesFrequencyRowModel> editFrequency; if (CollectionUtils.isEmpty(frequency)) { @@ -318,16 +335,38 @@ } else { editFrequency = Lists.newArrayList(frequency); + lengthStepCaracteristic = frequency.get(0).getLengthStepCaracteristic(); } if (log.isInfoEnabled()) { log.info("Will edit batch row: " + row + " with " + editFrequency.size() + " frequency"); } - getModel().setRows(editFrequency); + SpeciesFrequencyUIModel model = getModel(); + + model.setRows(editFrequency); + + if (lengthStepCaracteristic == null) { + + // no lengthStep caracteristic to apply make sure it is not setted. + if (log.isInfoEnabled()) { + log.info("No lengthStepCaracteristic to set."); + } + model.setLengthStepCaracteristic(null); + } else { + + // apply existing lengthStepCaracteristic + + if (log.isInfoEnabled()) { + log.info("Use lengthStepCaracteristic: " + + lengthStepCaracteristic.getName()); + } + model.setLengthStepCaracteristic(lengthStepCaracteristic); + } + // keep batch (will be used to push back editing entry) - getModel().setBatch(row); + model.setBatch(row); } public void close() { @@ -336,10 +375,11 @@ log.info("Will close UI " + ui); } + SpeciesFrequencyUIModel model = getModel(); + // transfer rows to editor - List<SpeciesFrequencyRowModel> frequency = Lists.newArrayList(); - for (SpeciesFrequencyRowModel row : getModel().getRows()) { + for (SpeciesFrequencyRowModel row : model.getRows()) { if (row.isValid()) { // can keep this row @@ -349,11 +389,11 @@ if (log.isInfoEnabled()) { log.info("Push back " + frequency.size() + - " frequency to batch " + getModel().getBatch()); + " frequency to batch " + model.getBatch()); } // push back to batch - getModel().getBatch().setFrequency(frequency); + model.getBatch().setFrequency(frequency); ui.editBatch(null); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUIModel.java 2012-12-27 06:39:32 UTC (rev 108) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesFrequencyUIModel.java 2012-12-27 12:51:33 UTC (rev 109) @@ -94,6 +94,11 @@ */ protected Float maxStep; + /** + * Length step caracteristic. + * + * @since 0.3 + */ protected Caracteristic lengthStepCaracteristic; public SpeciesFrequencyUIModel() {