Author: kmorin Date: 2012-12-28 12:52:41 +0100 (Fri, 28 Dec 2012) New Revision: 119 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/119 Log: group the caracteritics by type Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2012-12-28 09:17:49 UTC (rev 118) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2012-12-28 11:52:41 UTC (rev 119) @@ -270,20 +270,18 @@ environmentModel.setEnvironmentCaracteristics(environmentCaracteristics); //init hydrology - HydrologyTabUIModel hydrologyModel = - ui.getHydrologyTabContent().getModel(); + HydrologyTabUIModel hydrologyModel = ui.getHydrologyTabContent().getModel(); hydrologyModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationHydrologicCaracteristic()); hydrologyModel.addPropertyChangeListener( EditFishingOperationUIModel.PROPERTY_HYDROLOGY_CARACTERISTICS, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { - model.setModify(true); + model.setHydrologyCaracteristics((CaracteristicMap) evt.getNewValue()); } } ); CaracteristicMap hydrologyCaracteristics = model.getHydrologyCaracteristics(); - ui.getModel().setHydrologyCaracteristics(hydrologyCaracteristics); hydrologyModel.setHydrologyCaracteristics(hydrologyCaracteristics); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyRowModel.java 2012-12-28 09:17:49 UTC (rev 118) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyRowModel.java 2012-12-28 11:52:41 UTC (rev 119) @@ -54,7 +54,7 @@ BinderFactory.newBinder(HydrologyRowModel.class, CaracteristicRow.class); - protected Caracteristic key; + protected String key; protected Object gearShootingStartValue; @@ -66,11 +66,11 @@ super(CaracteristicRow.class, fromBeanBinder, toBeanBinder); } - public HydrologyRowModel(Caracteristic key) { + public HydrologyRowModel(String key) { this(key, null, null, null); } - public HydrologyRowModel(Caracteristic key, Object gearShootingStartValue, + public HydrologyRowModel(String key, Object gearShootingStartValue, Object gearShootingEndValue, Object averageValue) { this(); this.key = key; @@ -79,11 +79,11 @@ this.averageValue = averageValue; } - public Caracteristic getKey() { + public String getKey() { return key; } - public void setKey(Caracteristic key) { + public void setKey(String key) { Object oldValue = getKey(); this.key = key; firePropertyChange(PROPERTY_KEY, oldValue, key); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2012-12-28 09:17:49 UTC (rev 118) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2012-12-28 11:52:41 UTC (rev 119) @@ -25,16 +25,23 @@ */ import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI; +import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil; +import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil.Type; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Collection; import java.util.List; +import java.util.Map; +import java.util.Set; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.event.ListDataEvent; @@ -58,6 +65,8 @@ protected HydrologyTabUI ui; + protected Map<String, Map<Type, Caracteristic>> availableCaracteristics; + public HydrologyTabUIHandler(EditFishingOperationUI parentUi, HydrologyTabUI ui) { super(parentUi.getHandler().getContext(), HydrologyRowModel.PROPERTY_GEAR_SHOOTING_START_VALUE, @@ -84,7 +93,7 @@ { - addColumnToModel(columnModel, null, newTableCellRender(Caracteristic.class), HydrologyTableModel.KEY); + addColumnToModel(columnModel, HydrologyTableModel.KEY); } { @@ -122,6 +131,26 @@ public void beforeInitUI() { HydrologyTabUIModel model = new HydrologyTabUIModel(); ui.setContextValue(model); + + model.addPropertyChangeListener(HydrologyTabUIModel.PROPERTY_AVAILABLE_CARACTERISTICS, new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + List<Caracteristic> hydrologyPmfm = (List<Caracteristic>) evt.getNewValue(); + availableCaracteristics = Maps.newHashMap(); + if (hydrologyPmfm != null) { + for (Caracteristic caracteristic : hydrologyPmfm) { + String name = HydrologicCaracteristicUtil.getGlobalName(caracteristic.getName()); + Map<Type, Caracteristic> values = availableCaracteristics.get(name); + if (values == null) { + values = Maps.newHashMap(); + availableCaracteristics.put(name, values); + } + Type type = HydrologicCaracteristicUtil.getTypeOfCaracteristic(caracteristic); + values.put(type, caracteristic); + } + } + } + }); } @Override @@ -172,11 +201,23 @@ TuttiBeanMonitor<HydrologyRowModel> monitor = getRowMonitor(); HydrologyRowModel row = monitor.getBean(); if (row != null) { - ui.getModel().setCaracteristic(row.getKey(), - row.getGearShootingStartValue(), - row.getGearShootingEndValue(), - row.getAverageValue() - ); + Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(row.getKey()); + CaracteristicMap map = new CaracteristicMap(); + for (Type type : caracteristics.keySet()) { + Object value = null; + switch (type) { + case START: + value = row.getGearShootingStartValue(); + break; + case END: + value = row.getGearShootingEndValue(); + break; + case AVERAGE: + value = row.getAverageValue(); + } + map.put(caracteristics.get(type), value); + } + ui.getModel().addCaracteristics(map); } } }; @@ -199,13 +240,19 @@ * Adds a row with the parameter selected in the combo box */ public void addRow() { -// JComboBox keyCombo = ui.getNewRowKey(); -// CaracteristicRow key = (CaracteristicRow) keyCombo.getSelectedItem(); -// HydrologyRowModel row = new HydrologyRowModel(key); -// getTableModel().addNewRow(getTable().getRowCount(), row); -// ui.getModel().setCaracteristic(row.getKey(), null, null, null); -// -// keyCombo.removeItem(key); + JComboBox keyCombo = ui.getNewRowKey(); + CaracteristicRow key = (CaracteristicRow) keyCombo.getSelectedItem(); + HydrologyRowModel row = new HydrologyRowModel(key.getName()); + getTableModel().addNewRow(getTable().getRowCount(), row); + + Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(key.getName()); + CaracteristicMap map = new CaracteristicMap(); + for (Caracteristic caracteristic : caracteristics.values()) { + map.put(caracteristic, null); + } + ui.getModel().addCaracteristics(map); + + keyCombo.removeItem(key); } /** @@ -213,28 +260,39 @@ */ public void reset() { CaracteristicMap hydrologyCaracteristics = ui.getModel().getHydrologyCaracteristics(); - - List<HydrologyRowModel> rows = Lists.newArrayList(); - Collection<Caracteristic> caracteristics = hydrologyCaracteristics.keySet(); - for (Caracteristic key : hydrologyCaracteristics.keySet()) { - rows.add(new HydrologyRowModel(key)); - } - - AbstractTuttiTableModel<HydrologyRowModel> tableModel = getTableModel(); - tableModel.setRows(rows, false); - JComboBox keyCombo = ui.getNewRowKey(); DefaultComboBoxModel keyComboModel = (DefaultComboBoxModel) keyCombo.getModel(); keyComboModel.removeAllElements(); - List<Caracteristic> availableCaracteristics = ui.getModel().getAvailableCaracteristics(); - log.info(availableCaracteristics); - for (Caracteristic caracteristic : availableCaracteristics) { - if (!caracteristics.contains(caracteristic)) { + List<HydrologyRowModel> rows = Lists.newArrayList(); + Collection<Caracteristic> selectedCaracteristics = hydrologyCaracteristics.keySet(); + Set<String> availableCaracteristicIds = availableCaracteristics.keySet(); + + for (String caracteristicId : availableCaracteristicIds) { + Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(caracteristicId); + + //should add the global caracteristic to the combo or to the table? + boolean selectedCaracteristic = false; + for (Caracteristic caracteristic : caracteristics.values()) { + selectedCaracteristic = selectedCaracteristic || selectedCaracteristics.contains(caracteristic); + } + + if (selectedCaracteristic) { + HydrologyRowModel row = new HydrologyRowModel(caracteristicId, + hydrologyCaracteristics.get(caracteristics.get(Type.START)), + hydrologyCaracteristics.get(caracteristics.get(Type.END)), + hydrologyCaracteristics.get(caracteristics.get(Type.AVERAGE))); + rows.add(row); + + } else { + Caracteristic caracteristic = HydrologicCaracteristicUtil.createGlobalCaracteristic(caracteristicId); CaracteristicRow row = new CaracteristicRow(caracteristic.getName(), caracteristic); keyComboModel.addElement(row); } } + + AbstractTuttiTableModel<HydrologyRowModel> tableModel = getTableModel(); + tableModel.setRows(rows, false); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java 2012-12-28 09:17:49 UTC (rev 118) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java 2012-12-28 11:52:41 UTC (rev 119) @@ -42,6 +42,8 @@ */ public class HydrologyTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, HydrologyRowModel, HydrologyTabUIModel> { + public static final String PROPERTY_AVAILABLE_CARACTERISTICS = "availableCaracteristics"; + protected CaracteristicMap hydrologyCaracteristics = new CaracteristicMap(); protected List<Caracteristic> availableCaracteristics; @@ -67,13 +69,9 @@ this.hydrologyCaracteristics = hydrologyCaracteristics; } - public void setCaracteristic(Caracteristic param, Object gearShootingStartValue, - Object gearShootingEndValue, Object averageValue) { - + public void addCaracteristics(CaracteristicMap caracteristics) { Object oldValue = Maps.newLinkedHashMap(hydrologyCaracteristics); -// hydrologyCaracteristics.put(param + "." + GEAR_SHOOTING_START, gearShootingStartValue); -// hydrologyCaracteristics.put(param + "." + GEAR_SHOOTING_END, gearShootingEndValue); -// hydrologyCaracteristics.put(param + "." + AVERAGE, averageValue); + hydrologyCaracteristics.putAll(caracteristics); firePropertyChange(EditFishingOperationUIModel.PROPERTY_HYDROLOGY_CARACTERISTICS, oldValue, hydrologyCaracteristics); } @@ -82,7 +80,9 @@ } public void setAvailableCaracteristics(List<Caracteristic> availableCaracteristics) { + Object oldValue = getAvailableCaracteristics(); this.availableCaracteristics = availableCaracteristics; + firePropertyChange(PROPERTY_AVAILABLE_CARACTERISTICS, oldValue, availableCaracteristics); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java 2012-12-28 09:17:49 UTC (rev 118) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java 2012-12-28 11:52:41 UTC (rev 119) @@ -33,6 +33,12 @@ */ public class HydrologicCaracteristicUtil { + public enum Type { + START, + END, + AVERAGE + } + public static String getGlobalName(String name) { if (name.charAt(name.length() - 2) == '_') { name = name.substring(0, name.length() - 2); @@ -46,4 +52,23 @@ caracteristic.setId(name); return caracteristic; } + + public static Type getTypeOfCaracteristic(Caracteristic caracteristic) { + String name = caracteristic.getName(); + Type result = null; + if (name.charAt(name.length() - 2) == '_') { + char lastChar = name.charAt(name.length() - 1); + switch (lastChar) { + case 'S': + result = Type.START; + break; + case 'E': + result = Type.END; + break; + case 'A': + result = Type.AVERAGE; + } + } + return result; + } }