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 2d648bff15cef6ba75509db9c37741dc5f41a998 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Apr 29 11:23:26 2015 +0200 refactor save action for table entities (in ObjectObservedSpecies) --- .../data/seine/ObjectObservedSpeciesService.java | 3 + .../seine/ObjectObservedSpeciesServiceImpl.java | 138 +++++++++++++++++++++ .../impl/seine/ObjectObservedSpeciesUIHandler.java | 13 ++ 3 files changed, 154 insertions(+) diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java index 4d50592..cf46428 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java @@ -5,6 +5,7 @@ import fr.ird.observe.entities.seine.ObjectObservedSpecies; import fr.ird.observe.services.Commit; import fr.ird.observe.services.NoTransaction; import fr.ird.observe.services.ObserveService; +import org.nuiton.topia.persistence.util.EntityListUpdator; import org.nuiton.topia.persistence.util.TopiaEntityBinder; /** @@ -31,4 +32,6 @@ public interface ObjectObservedSpeciesService extends ObserveService { @NoTransaction void copyForEdit(ObjectObservedSpecies source, ObjectObservedSpecies target); + + EntityListUpdator<FloatingObject, ObjectObservedSpecies> getListUpdator(); } \ No newline at end of file diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesServiceImpl.java new file mode 100644 index 0000000..e7d37c2 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesServiceImpl.java @@ -0,0 +1,138 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.seine.FloatingObject; +import fr.ird.observe.entities.seine.ObjectObservedSpecies; +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; +import org.nuiton.util.beans.BinderModelBuilder; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObjectObservedSpeciesServiceImpl extends AbstractObserveService implements ObjectObservedSpeciesService { + @Override + public FloatingObject loadForEdit(String floatingObjectId) { + + FloatingObject parentToLoad = findByTopiaId(FloatingObject.class, floatingObjectId); + + FloatingObject parentLoaded = getDao(FloatingObject.class).newInstance(); + + copyForEdit(parentToLoad, parentLoaded); + + if (!parentToLoad.isObjectObservedSpeciesEmpty()) { + + TopiaDAO<ObjectObservedSpecies> childDao = getDao(ObjectObservedSpecies.class); + + List<ObjectObservedSpecies> childs = new ArrayList<ObjectObservedSpecies>(); + + for (ObjectObservedSpecies sourceChild : parentToLoad.getObjectObservedSpecies()) { + + ObjectObservedSpecies targetChild = childDao.newInstance(); + copyForEdit(sourceChild, targetChild); + childs.add(targetChild); + + } + + parentLoaded.setObjectObservedSpecies(childs); + + } + + return parentLoaded; + } + + @Override + public void save(FloatingObject floatingObject) { + doSaveList(floatingObject, new SaveCollectionAction<FloatingObject, ObjectObservedSpecies>(FloatingObject.class, ObjectObservedSpecies.class, getListUpdator()) { + + @Override + public FloatingObject onUpdateParent(FloatingObject parentToSave, FloatingObject parentSaved) { + getBinderForFloatingObjectEdit().copyExcluding(parentToSave, parentSaved, FloatingObject.PROPERTY_OBJECT_OBSERVED_SPECIES); + getDao(FloatingObject.class).update(parentSaved); + return parentSaved; + } + + @Override + public ObjectObservedSpecies onCreateChild(ObjectObservedSpecies childToSave) { + ObjectObservedSpecies childSaved = getDao(ObjectObservedSpecies.class).newInstance(); + getBinderForObjectObservedSpeciesEdit().copy(childToSave, childSaved); + getDao(ObjectObservedSpecies.class).create(childSaved); + return childSaved; + } + + @Override + public ObjectObservedSpecies onUpdateChild(ObjectObservedSpecies childToSave, ObjectObservedSpecies childSaved) { + getBinderForObjectObservedSpeciesEdit().copy(childToSave, childSaved); + getDao(ObjectObservedSpecies.class).update(childSaved); + return childSaved; + } + }); + + } + + @Override + public TopiaEntityBinder<FloatingObject> getBinderForFloatingObjectEdit() { + TopiaEntityBinder<FloatingObject> binder = loadBinder("-forObjectObservedSpeciesEdit", FloatingObject.class, new CreateBinder<FloatingObject>() { + + @Override + public BinderModelBuilder<FloatingObject, FloatingObject> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<FloatingObject, FloatingObject> builder = binderService.newBinderBuilder( + FloatingObject.class, + FloatingObject.PROPERTY_OBJECT_OBSERVED_SPECIES, + FloatingObject.PROPERTY_COMMENT); + + return builder; + + } + + }); + + return binder; + } + + @Override + public void copyForEdit(FloatingObject source, FloatingObject target) { + getBinderForFloatingObjectEdit().load(source, target, true); + } + + @Override + public TopiaEntityBinder<ObjectObservedSpecies> getBinderForObjectObservedSpeciesEdit() { + TopiaEntityBinder<ObjectObservedSpecies> binder = loadBinder("-forEdit", ObjectObservedSpecies.class, new CreateBinder<ObjectObservedSpecies>() { + + @Override + public BinderModelBuilder<ObjectObservedSpecies, ObjectObservedSpecies> createBinderBuilder(BinderService binderService, String name) { + + BinderModelBuilder<ObjectObservedSpecies, ObjectObservedSpecies> builder = binderService.newBinderBuilder( + ObjectObservedSpecies.class, + ObjectObservedSpecies.PROPERTY_SPECIES, + ObjectObservedSpecies.PROPERTY_SPECIES_STATUS, + ObjectObservedSpecies.PROPERTY_COUNT); + + return builder; + + } + + }); + + return binder; + } + + @Override + public void copyForEdit(ObjectObservedSpecies source, ObjectObservedSpecies target) { + getBinderForObjectObservedSpeciesEdit().load(source, target, true); + } + + @Override + public EntityListUpdator<FloatingObject, ObjectObservedSpecies> getListUpdator() { + return EntityListUpdator.newEntityListUpdator( + FloatingObject.class, + ObjectObservedSpecies.class, + FloatingObject.PROPERTY_OBJECT_OBSERVED_SPECIES); + } +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java index e1e7460..771e474 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/ObjectObservedSpeciesUIHandler.java @@ -115,4 +115,17 @@ public class ObjectObservedSpeciesUIHandler extends ContentTableUIHandler<Floati } + @Override + protected void doPersist(FloatingObject editBean) { + getService(ObjectObservedSpeciesService.class).save(editBean); + } + + + //TODO Supprimer saveUI et mettre saveUI2 a la place + @Override + public final void saveUI(boolean refresh) { + saveUI2(refresh); + } + + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.