This is an automated email from the git hooks/post-receive script. New commit to branch feature/7017 in repository observe. See http://git.codelutin.com/observe.git commit a0cad760e785461eee2ae86d6059cd7281f05f88 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Apr 30 11:25:00 2015 +0200 savegarde des caractéristiques des équipements --- .../seine/GearUseFeaturesSeineServiceImpl.java | 76 +++++++++++++++++++++- .../impl/seine/GearUseFeaturesSeineUIHandler.java | 21 ++++++ 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java index f28616f..db5f437 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineServiceImpl.java @@ -1,5 +1,6 @@ package fr.ird.observe.services.data.seine; +import com.google.common.collect.Lists; import fr.ird.observe.BinderService; import fr.ird.observe.entities.referentiel.Gear; import fr.ird.observe.entities.referentiel.GearCaracteristic; @@ -8,6 +9,7 @@ import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeineDAO; import fr.ird.observe.entities.seine.GearUseFeaturesSeine; import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.util.EntityListUpdator; import org.nuiton.topia.persistence.util.TopiaEntityBinder; @@ -77,6 +79,16 @@ public class GearUseFeaturesSeineServiceImpl extends AbstractObserveService impl copy(GearUseFeaturesSeine.class, BinderService.EDIT, childToLoad, childLoaded); + for (GearUseFeaturesMeasurementSeine measurementToLoad : childToLoad.getGearUseFeaturesMeasurement()) { + + GearUseFeaturesMeasurementSeine measurementLoaded = getDao(GearUseFeaturesMeasurementSeine.class).newInstance(); + + copy(GearUseFeaturesMeasurementSeine.class, BinderService.EDIT, measurementToLoad, measurementLoaded); + + childLoaded.addGearUseFeaturesMeasurement(measurementLoaded); + + } + loaded.addGearUseFeaturesSeine(childLoaded); } @@ -92,7 +104,69 @@ public class GearUseFeaturesSeineServiceImpl extends AbstractObserveService impl TopiaEntityBinder<GearUseFeaturesSeine> childbinder = getBinder(GearUseFeaturesSeine.class, BinderService.EDIT); doSaveList(parent, new SaveCollectionAction<TripSeine, GearUseFeaturesSeine>( - TripSeine.class, GearUseFeaturesSeine.class, getListUpdator(), parentBinder, childbinder)); + TripSeine.class, GearUseFeaturesSeine.class, getListUpdator(), parentBinder, childbinder) { + + @Override + public GearUseFeaturesSeine onCreateChild(GearUseFeaturesSeine childToCreate) { + GearUseFeaturesSeine childCreated = super.onCreateChild(childToCreate); + saveMeasurement(childToCreate, childCreated); + return childCreated; + + } + + @Override + public GearUseFeaturesSeine onUpdateChild(GearUseFeaturesSeine childToSave, GearUseFeaturesSeine childSaved) { + super.onUpdateChild(childToSave, childSaved); + saveMeasurement(childToSave, childSaved); + return childSaved; + } + + protected void saveMeasurement(GearUseFeaturesSeine childToSave, GearUseFeaturesSeine childSaved) { + + TopiaDAO<GearUseFeaturesMeasurementSeine> dao = getDao(GearUseFeaturesMeasurementSeine.class); + + TopiaEntityBinder<GearUseFeaturesMeasurementSeine> measurementBinder = getBinder(GearUseFeaturesMeasurementSeine.class, BinderService.EDIT); + + List<GearUseFeaturesMeasurementSeine> measurementsToDelete = Lists.newArrayList(childSaved.getGearUseFeaturesMeasurement()); + + List<GearUseFeaturesMeasurementSeine> measurementsNew = Lists.newArrayList(); + + for (GearUseFeaturesMeasurementSeine measurementToSave : childToSave.getGearUseFeaturesMeasurement()) { + + GearUseFeaturesMeasurementSeine measurementSaved; + + if (measurementToSave.getTopiaId() == null) { + + measurementSaved = dao.create(); + + measurementBinder.load(measurementToSave, measurementSaved, false); + + } else { + + measurementSaved = findByTopiaId(GearUseFeaturesMeasurementSeine.class, measurementToSave.getTopiaId()); + + measurementBinder.load(measurementToSave, measurementSaved, true); + + measurementsToDelete.remove(measurementSaved); + + } + + measurementsNew.add(measurementSaved); + + } + + childSaved.clearGearUseFeaturesMeasurement(); + + childSaved.addAllGearUseFeaturesMeasurement(measurementsNew); + + for (GearUseFeaturesMeasurementSeine toDelete : measurementsToDelete) { + + dao.delete(toDelete); + + } + + } + }); } @Override 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 f750158..d3fcf24 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 @@ -392,6 +392,27 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei @Override protected void doPersist(TripSeine editBean) { + + List<GearUseFeaturesSeine> gearUseFeatures = editBean.getGearUseFeaturesSeine(); + + GearUseFeaturesSeineUIModel model = getModel(); + + GearUseFeaturesMeasurementSeinesTableModel measurementsTableModel = model.getMeasurementsTableModel(); + + Set<Integer> rowsChanged = measurementsTableModel.getCacheRowsChanged(); + + for (Integer row : rowsChanged) { + + GearUseFeaturesSeine gearUseFeaturesSeine = gearUseFeatures.get(row); + + List<GearUseFeaturesMeasurementSeine> measurements = measurementsTableModel.getCacheForRow(row); + + gearUseFeaturesSeine.clearGearUseFeaturesMeasurement(); + + gearUseFeaturesSeine.addAllGearUseFeaturesMeasurement(measurements); + + } + getService(GearUseFeaturesSeineService.class).save(editBean); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.