This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 5a19d3ad6b5ff13d36d37f154c8cf508eb3874de Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 16 20:41:43 2015 +0200 refs #6976 Add default measurements when creating a new gearusefeature --- .../src/main/java/fr/ird/observe/DataService.java | 28 ++++++++++++++++ .../impl/seine/GearUseFeaturesSeineTableModel.java | 37 ++++++++++++++++++++-- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 20 ++++++++++++ .../EditableTableWithCacheTableModelSupport.java | 4 +-- 4 files changed, 84 insertions(+), 5 deletions(-) diff --git a/observe-business/src/main/java/fr/ird/observe/DataService.java b/observe-business/src/main/java/fr/ird/observe/DataService.java index 029675a..9a0df89 100644 --- a/observe-business/src/main/java/fr/ird/observe/DataService.java +++ b/observe-business/src/main/java/fr/ird/observe/DataService.java @@ -53,6 +53,8 @@ import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.longline.TripLonglineDAO; import fr.ird.observe.entities.longline.WeightMeasure; import fr.ird.observe.entities.longline.WeightMeasureImpl; +import fr.ird.observe.entities.referentiel.Gear; +import fr.ird.observe.entities.referentiel.GearCaracteristic; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.LengthWeightParemeterHelper; import fr.ird.observe.entities.referentiel.Ocean; @@ -1591,6 +1593,32 @@ public class DataService { } } + public List<GearUseFeaturesMeasurementSeine> getDefaultGearUseFeaturesMeasurementSeine(DataSource source, String gearId) throws DataSourceException { + + String txName = "getDefaultGearUseFeaturesMeasurementSeine : " + gearId; + TopiaContext tx = beginTransaction(source, txName); + try { + + TopiaDAO<Gear> gearDao = source.getDAO(tx, Gear.class); + Gear gear = gearDao.findByTopiaId(gearId); + + Collection<GearCaracteristic> gearCaracteristic = gear.getGearCaracteristic(); + List<GearUseFeaturesMeasurementSeine> result = new ArrayList<GearUseFeaturesMeasurementSeine>(); + for (GearCaracteristic caracteristic : gearCaracteristic) { + GearUseFeaturesMeasurementSeine target = new GearUseFeaturesMeasurementSeineImpl(); + target.setGearCaracteristic(caracteristic); + result.add(target); + } + + return result; + + } catch (TopiaException e) { + throw new DataSourceException(e, txName); + } finally { + closeTransaction(source, tx, txName); + } + } + public List<GearUseFeaturesMeasurementSeine> getGearUseFeaturesMeasurementSeine(DataSource source, GearUseFeaturesSeine bean, final TopiaEntityBinder<GearUseFeaturesMeasurementSeine> binder) throws DataSourceException { String txName = "getGearUseFeaturesMeasurementSeine : " + bean.getTopiaId(); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineTableModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineTableModel.java index 5f79632..07a7b24 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineTableModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineTableModel.java @@ -22,11 +22,14 @@ package fr.ird.observe.ui.content.table.impl.seine; * #L% */ +import fr.ird.observe.entities.referentiel.Gear; +import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; import fr.ird.observe.entities.seine.GearUseFeaturesSeine; import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.ui.content.table.ContentTableMeta; import fr.ird.observe.ui.content.table.ContentTableModel; import fr.ird.observe.ui.content.table.ObserveContentTableUI; +import org.apache.commons.collections4.CollectionUtils; import java.util.List; @@ -40,11 +43,17 @@ public class GearUseFeaturesSeineTableModel extends ContentTableModel<TripSeine, private static final long serialVersionUID = 1L; + private GearUseFeaturesSeineUIHandler gearUseFeaturesSeineUIHandler; + public GearUseFeaturesSeineTableModel(ObserveContentTableUI<TripSeine, GearUseFeaturesSeine> context, List<ContentTableMeta<GearUseFeaturesSeine>> contentTableMetas) { super(context, contentTableMetas); } + public void setGearUseFeaturesSeineUIHandler(GearUseFeaturesSeineUIHandler gearUseFeaturesSeineUIHandler) { + this.gearUseFeaturesSeineUIHandler = gearUseFeaturesSeineUIHandler; + } + @Override public void addNewEntry() { @@ -67,12 +76,34 @@ public class GearUseFeaturesSeineTableModel extends ContentTableModel<TripSeine, super.updateRowFromEditBean(); - // store sizes and weights for the selected row + GearUseFeaturesSeineUIModel model = getModel(); int editingRow = getSelectedRow(); + GearUseFeaturesSeine rowBean = getRowBean(); + GearUseFeaturesMeasurementSeinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); - GearUseFeaturesSeineUIModel model = getModel(); - model.getMeasurementsTableModel().storeInCacheForRow(editingRow); + if (rowBean.getTopiaId() == null && CollectionUtils.isEmpty(measurementsTableModel.getCacheForRow(editingRow))) { + + // new gear usage, add default measurements + + Gear gear = rowBean.getGear(); + List<GearUseFeaturesMeasurementSeine> measurements = + gearUseFeaturesSeineUIHandler.getDefaultGearUseFeaturesMeasurementSeine(gear.getTopiaId()); + if (log.isInfoEnabled()) { + log.info("Create mode, use default measurements: " + measurements.size()); + } + measurementsTableModel.removeCacheForRow(editingRow); + measurementsTableModel.initCacheForRow(editingRow, measurements); + + measurementsTableModel.setData(measurements); + measurementsTableModel.setModified(false); + + } else { + + // store current measurements for the selected row + measurementsTableModel.storeInCacheForRow(editingRow); + + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java index baa9c9b..e97d570 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/GearUseFeaturesSeineUIHandler.java @@ -277,6 +277,8 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei setTableModelEditable(getModel().isEditable()); + getTableModel().setGearUseFeaturesSeineUIHandler(this); + } @Override @@ -330,7 +332,12 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei super.startEditUI(binding); + } + + @Override + protected TripSeine onCreate(TopiaContext tx, Object parentBean, TripSeine editBean) throws TopiaException { + return super.onCreate(tx, parentBean, editBean); } @Override @@ -470,4 +477,17 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } + public List<GearUseFeaturesMeasurementSeine> getDefaultGearUseFeaturesMeasurementSeine(String gearId) { + + try { + List<GearUseFeaturesMeasurementSeine> measurements = getDataService().getDefaultGearUseFeaturesMeasurementSeine(getDataSource(), gearId); + if (log.isInfoEnabled()) { + log.info("Create mode, use default measurements: " + measurements.size()); + } + return measurements; + } catch (DataSourceException e) { + throw new ObserveTechnicalException("Could not create default measurements", e); + } + + } } \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/table/EditableTableWithCacheTableModelSupport.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/table/EditableTableWithCacheTableModelSupport.java index 7a8a23a..54f2cc1 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/table/EditableTableWithCacheTableModelSupport.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/table/EditableTableWithCacheTableModelSupport.java @@ -74,7 +74,7 @@ public abstract class EditableTableWithCacheTableModelSupport<E extends TopiaEnt public void initCacheForRow(int editingRow, List<E> data) { EditableList<E> editableList = cacheByRow.get(editingRow); - Preconditions.checkState(editableList == null); + Preconditions.checkState(editableList == null, "Cant have a list for row: " + editingRow); editableList = new EditableList<E>(); // Get a copy of the list (to avoid to edit the content of the list) @@ -89,7 +89,7 @@ public abstract class EditableTableWithCacheTableModelSupport<E extends TopiaEnt List<E> measures = getData(); EditableList<E> editableList = cacheByRow.get(editingRow); - Preconditions.checkState(editableList != null); + Preconditions.checkState(editableList != null, "No list found for row: " + editingRow); editableList.setData(measures); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.