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 b694f31bdd369a48638a4a41aca74637978c421c Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Apr 29 17:39:28 2015 +0200 échantillon acessoire capturé. --- .../main/java/fr/ird/observe/BinderService.java | 53 +++++++++- .../data/seine/NonTargetLengthService.java | 23 +++++ .../data/seine/NonTargetLengthServiceImpl.java | 73 ++++++++++++++ .../data/seine/NonTargetSampleService.java | 11 ++- .../data/seine/NonTargetSampleServiceImpl.java | 74 ++++++++++++-- .../data/seine/TargetLengthServiceImpl.java | 4 +- .../data/seine/TargetSampleServiceImpl.java | 2 +- .../table/impl/seine/NonTargetSampleUIHandler.java | 108 ++++++--------------- .../table/impl/seine/TargetSampleUIHandler.java | 2 +- 9 files changed, 257 insertions(+), 93 deletions(-) diff --git a/observe-business/src/main/java/fr/ird/observe/BinderService.java b/observe-business/src/main/java/fr/ird/observe/BinderService.java index 6aea2c7..797b595 100644 --- a/observe-business/src/main/java/fr/ird/observe/BinderService.java +++ b/observe-business/src/main/java/fr/ird/observe/BinderService.java @@ -39,6 +39,8 @@ import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.longline.WeightMeasure; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.FloatingObject; +import fr.ird.observe.entities.seine.NonTargetLength; +import fr.ird.observe.entities.seine.NonTargetSample; import fr.ird.observe.entities.seine.ObjectObservedSpecies; import fr.ird.observe.entities.seine.ObjectSchoolEstimate; import fr.ird.observe.entities.seine.Route; @@ -83,7 +85,7 @@ public class BinderService { public static final String EDIT_TDR = "editTdr"; - public static final String EDIT_TARGET_LENGHT = "editTargetLenght"; + public static final String EDIT_TARGET_LENGTH = "editTargetLength"; public static final String EDIT_SCHOOL_ESTIMATE = "editSchoolEstimate"; @@ -91,6 +93,8 @@ public class BinderService { public static final String EDIT_OBJECT_OBSERVED_SPECIES = "editObjectObservedSpecies"; + public static final String EDIT_NON_TARGET_LENGTH = "editNonTargetLength"; + static { registerBinders(); @@ -618,7 +622,7 @@ public class BinderService { TargetSample.PROPERTY_TARGET_LENGTH, TargetSample.PROPERTY_COMMENT); - registerTopiaBinder(TargetSample.class, builder, EDIT_TARGET_LENGHT); + registerTopiaBinder(TargetSample.class, builder, EDIT_TARGET_LENGTH); } @@ -774,6 +778,46 @@ public class BinderService { } + { + + BinderModelBuilder<NonTargetLength, NonTargetLength> builder = newBinderBuilder( + NonTargetLength.class, + NonTargetLength.PROPERTY_SPECIES, + NonTargetLength.PROPERTY_LENGTH, + NonTargetLength.PROPERTY_LENGTH_SOURCE, + NonTargetLength.PROPERTY_WEIGHT, + NonTargetLength.PROPERTY_WEIGHT_SOURCE, + NonTargetLength.PROPERTY_SEX, + NonTargetLength.PROPERTY_COUNT, + NonTargetLength.PROPERTY_ACQUISITION_MODE, + NonTargetLength.PROPERTY_PICTURES_REFERENCES); + + registerTopiaBinder(NonTargetLength.class, builder, EDIT); + + } + + { + + BinderModelBuilder<NonTargetSample, NonTargetSample> builder = newBinderBuilder( + NonTargetSample.class, + NonTargetSample.PROPERTY_NON_TARGET_LENGTH, + NonTargetSample.PROPERTY_COMMENT); + + registerTopiaBinder(NonTargetSample.class, builder, EDIT_NON_TARGET_LENGTH); + + } + + { + + BinderModelBuilder<NonTargetSample, NonTargetSample> builder = newBinderBuilder( + NonTargetSample.class, + NonTargetSample.PROPERTY_NON_TARGET_LENGTH, + NonTargetSample.PROPERTY_COMMENT); + + registerTopiaBinder(NonTargetSample.class, builder, EDIT); + + } + } @@ -789,6 +833,11 @@ public class BinderService { binder.copyExcluding(source, target, propertyNames); + /* FIXME sbavencoff 29/04/2015 bind techincal fields */ + target.setTopiaId(source.getTopiaId()); + target.setTopiaVersion(source.getTopiaVersion()); + target.setTopiaCreateDate(source.getTopiaCreateDate()); + } public <E extends TopiaEntity> void copy(Class<E> type, String context, E source, E target, boolean bindTechnical) { diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthService.java new file mode 100644 index 0000000..c52635d --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthService.java @@ -0,0 +1,23 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.seine.NonTargetLength; +import fr.ird.observe.entities.seine.NonTargetSample; +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; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public interface NonTargetLengthService extends ObserveService { + + NonTargetSample loadForEdit(String setId); + + @Commit + void save(NonTargetSample parent); + + @NoTransaction + EntityListUpdator<NonTargetSample, NonTargetLength> getListUpdator(); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthServiceImpl.java new file mode 100644 index 0000000..2e068b6 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetLengthServiceImpl.java @@ -0,0 +1,73 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.seine.NonTargetLength; +import fr.ird.observe.entities.seine.NonTargetSample; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.persistence.util.EntityListUpdator; +import org.nuiton.topia.persistence.util.TopiaEntityBinder; + +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class NonTargetLengthServiceImpl extends AbstractObserveService implements NonTargetLengthService { + + @Override + public NonTargetSample loadForEdit(String setId) { + + SetSeine setSeine = findByTopiaId(SetSeine.class, setId); + + NonTargetSample toLoad = null; + + if (setSeine.isNonTargetSampleEmpty()) { + + toLoad = null; + + } else { + + List<NonTargetSample> nonTargetSamples = setSeine.getNonTargetSample(); + toLoad = nonTargetSamples.get(0); + + } + + NonTargetSample loaded = getDao(NonTargetSample.class).newInstance(); + + if (toLoad != null) { + + copyExcluding(NonTargetSample.class, BinderService.EDIT_NON_TARGET_LENGTH, toLoad, loaded, NonTargetSample.PROPERTY_NON_TARGET_LENGTH); + + for (NonTargetLength childToLoad : toLoad.getNonTargetLength()) { + + NonTargetLength childLoaded = getDao(NonTargetLength.class).newInstance(); + + copy(NonTargetLength.class, BinderService.EDIT, childToLoad, childLoaded); + + loaded.addNonTargetLength(childLoaded); + + } + } + + return loaded; + } + + @Override + public void save(NonTargetSample parent) { + + TopiaEntityBinder<NonTargetSample> parentBinder = getBinder(NonTargetSample.class, BinderService.EDIT_NON_TARGET_LENGTH); + TopiaEntityBinder<NonTargetLength> childbinder = getBinder(NonTargetLength.class, BinderService.EDIT); + + doSaveList(parent, new SaveCollectionAction<NonTargetSample, NonTargetLength>( + NonTargetSample.class, NonTargetLength.class, getListUpdator(), parentBinder, childbinder)); + } + + @Override + public EntityListUpdator<NonTargetSample, NonTargetLength> getListUpdator() { + return EntityListUpdator.newEntityListUpdator( + NonTargetSample.class, + NonTargetLength.class, + NonTargetSample.PROPERTY_NON_TARGET_LENGTH); + } +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java index 6464335..c4bc584 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java @@ -2,6 +2,8 @@ package fr.ird.observe.services.data.seine; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.NonTargetLength; +import fr.ird.observe.entities.seine.NonTargetSample; +import fr.ird.observe.services.Commit; import fr.ird.observe.services.ObserveService; import java.util.Collection; @@ -17,7 +19,7 @@ public interface NonTargetSampleService extends ObserveService { List<Species> getAvailableEspeceForNonTargetSample(String setSeineId); - String getNonTargetSampleId(String setSeineId); + NonTargetSample getNonTargetSample(String setSeineId); boolean canUseNonTargetSample(String setSeineId); @@ -25,4 +27,11 @@ public interface NonTargetSampleService extends ObserveService { List<Species> speciessUsed, Collection<Species> speciessToDelete, List<NonTargetLength> tailleToDelete); + + @Commit + void delete(String setId, NonTargetSample editBean); + + @Commit + String save(String setId, NonTargetSample editBean); + } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java index d3c700a..06eeb03 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleServiceImpl.java @@ -1,9 +1,11 @@ package fr.ird.observe.services.data.seine; +import fr.ird.observe.BinderService; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.NonTargetCatch; import fr.ird.observe.entities.seine.NonTargetLength; import fr.ird.observe.entities.seine.NonTargetSample; +import fr.ird.observe.entities.seine.NonTargetSampleDAO; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.services.AbstractObserveService; import org.apache.commons.logging.Log; @@ -23,7 +25,11 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement /** Logger. */ private static final Log log = LogFactory.getLog(NonTargetSampleServiceImpl.class); - + + protected NonTargetSampleDAO getDao() { + return (NonTargetSampleDAO) getDao(NonTargetSample.class); + } + @Override public List<Species> getAvailableEspeceForNonTargetSample(String setSeineId) { @@ -50,24 +56,42 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement } @Override - public String getNonTargetSampleId(String setSeineId) { + public NonTargetSample getNonTargetSample(String setSeineId) { SetSeine setSeine = findByTopiaId(SetSeine.class, setSeineId); - String nonTargetSampleId; + NonTargetSample toLoad; if (setSeine.isNonTargetSampleEmpty()) { - nonTargetSampleId = null; + toLoad = null; } else { List<NonTargetSample> nonTargetSamples = setSeine.getNonTargetSample(); - nonTargetSampleId = nonTargetSamples.get(0).getTopiaId(); + toLoad = nonTargetSamples.get(0); } - return nonTargetSampleId; + NonTargetSample loaded = getDao().newInstance(); + + if (toLoad != null) { + + copyExcluding(NonTargetSample.class, BinderService.EDIT_NON_TARGET_LENGTH, toLoad, loaded, NonTargetSample.PROPERTY_NON_TARGET_LENGTH); + + for (NonTargetLength childToLoad : toLoad.getNonTargetLength()) { + + NonTargetLength childLoaded = getDao(NonTargetLength.class).newInstance(); + + copy(NonTargetLength.class, BinderService.EDIT, childToLoad, childLoaded); + + loaded.addNonTargetLength(childLoaded); + + } + } + + + return loaded; } @@ -113,4 +137,42 @@ public class NonTargetSampleServiceImpl extends AbstractObserveService implement } + @Override + public void delete(String setId, NonTargetSample bean) { + doDelete(setId, bean.getTopiaId(), new DeleteAction<SetSeine, NonTargetSample>(SetSeine.class, NonTargetSample.class) { + @Override + public void onDelete(SetSeine parent, NonTargetSample toDelete) { + super.onDelete(parent, toDelete); + parent.removeNonTargetSample(toDelete); + } + }); + + } + + @Override + public String save(String setSeineId, NonTargetSample toSave) { + + String savedId = doSave(setSeineId, toSave, new SaveAction<SetSeine, NonTargetSample>(SetSeine.class, NonTargetSample.class) { + @Override + public NonTargetSample onCreate(SetSeine parent, NonTargetSample toCreate) { + + NonTargetSample created = getDao().create(); + copyExcluding(NonTargetSample.class, BinderService.EDIT, toCreate, created, NonTargetSample.PROPERTY_NON_TARGET_LENGTH); + parent.addNonTargetSample(created); + getDao().update(created); + return created; + } + + @Override + public NonTargetSample onUpdate(SetSeine parentBean, NonTargetSample toSave, NonTargetSample beanToSave) { + copyExcluding(NonTargetSample.class, BinderService.EDIT, toSave, beanToSave, NonTargetSample.PROPERTY_NON_TARGET_LENGTH); + getDao().update(beanToSave); + return beanToSave; + } + }); + + return savedId; + + } + } diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthServiceImpl.java index 87f5db8..d6b6a85 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetLengthServiceImpl.java @@ -42,7 +42,7 @@ public class TargetLengthServiceImpl extends AbstractObserveService implements T if (toLoad != null) { - copyExcluding(TargetSample.class, BinderService.EDIT_TARGET_LENGHT, toLoad, loaded, TargetSample.PROPERTY_TARGET_LENGTH); + copyExcluding(TargetSample.class, BinderService.EDIT_TARGET_LENGTH, toLoad, loaded, TargetSample.PROPERTY_TARGET_LENGTH); for (TargetLength childToLoad : toLoad.getTargetLength()) { @@ -62,7 +62,7 @@ public class TargetLengthServiceImpl extends AbstractObserveService implements T @Override public void save(TargetSample parent) { - TopiaEntityBinder<TargetSample> parentBinder = getBinder(TargetSample.class, BinderService.EDIT_TARGET_LENGHT); + TopiaEntityBinder<TargetSample> parentBinder = getBinder(TargetSample.class, BinderService.EDIT_TARGET_LENGTH); TopiaEntityBinder<TargetLength> childbinder = getBinder(TargetLength.class, BinderService.EDIT); doSaveList(parent, new SaveCollectionAction<TargetSample, TargetLength>( diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java index 1b6f8a1..084a408 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleServiceImpl.java @@ -104,7 +104,7 @@ public class TargetSampleServiceImpl extends AbstractObserveService implements T if (toLoad != null) { - copyExcluding(TargetSample.class, BinderService.EDIT_TARGET_LENGHT, toLoad, loaded, TargetSample.PROPERTY_TARGET_LENGTH); + copyExcluding(TargetSample.class, BinderService.EDIT_TARGET_LENGTH, toLoad, loaded, TargetSample.PROPERTY_TARGET_LENGTH); for (TargetLength childToLoad : toLoad.getTargetLength()) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java index 7d3cd34..2bd8bfa 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetSampleUIHandler.java @@ -21,17 +21,16 @@ */ package fr.ird.observe.ui.content.table.impl.seine; -import fr.ird.observe.DataService; +import fr.ird.observe.BinderService; import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataContext; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.referentiel.Sex; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.NonTargetLength; import fr.ird.observe.entities.seine.NonTargetSample; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.data.seine.NonTargetLengthService; import fr.ird.observe.services.data.seine.NonTargetSampleService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; @@ -118,119 +117,68 @@ public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSam } @Override - protected String getEditBeanIdToLoad(DataContext dataContext, - DataService dataService, - DataSource dataSource) throws DataSourceException { + protected void loadEditBean() { - String setId = dataContext.getSelectedSetId(); + String setId = getDataContext().getSelectedSetId(); - // on doit récupérer l'unique échantillonThon de la calée - NonTargetSampleService service = getService(NonTargetSampleService.class); - String id = service.getNonTargetSampleId(setId); - return id; + NonTargetSample nonTargetSample = getService(NonTargetLengthService.class).loadForEdit(setId); + + copy(NonTargetSample.class, BinderService.EDIT_NON_TARGET_LENGTH, nonTargetSample, getBean()); } @Override - protected NonTargetSample loadEditBean(ContentMode mode, - DataContext dataContext, - DataService dataService, - DataSource dataSource) throws DataSourceException { + protected void loadTableEditBeanForm(ContentMode mode) { List<Species> speciesList; - String setId = dataContext.getSelectedSetId(); - if (mode == ContentMode.UPDATE) { + String setId = getDataContext().getSelectedSetId(); + NonTargetSampleService service = getService(NonTargetSampleService.class); speciesList = service.getAvailableEspeceForNonTargetSample(setId); - } else { - speciesList = new ArrayList<Species>(); - } - - ALL_ESPECES_ENTRY.setContextValue(getUi(), speciesList); - - // on doit récupérer l'unique échantillonThon de la calée - String id = getEditBeanIdToLoad(dataContext, dataService, dataSource); - - NonTargetSample editBean = getBean(); - - if (log.isInfoEnabled()) { - log.info(prefix + " - set id : " + setId); - log.info(prefix + " - echantillon faune id : " + id); - log.info(prefix + " - edit bean id : " + editBean.getTopiaId()); - } - - if (id == null) { - - // l'échantillon n'existe pas encore, donc rien a faire - getLoadBinder().load(null, editBean, true); - - getModel().getChildsUpdator().setChilds(editBean, new ArrayList<NonTargetLength>()); - - } else { - - // preparation du bean d'édition - dataService.loadEditEntity(dataSource, id, getLoadExecutor()); + ALL_ESPECES_ENTRY.setContextValue(getUi(), speciesList); } getModel().setMode(mode); + // initialisation du modèle du tableau getUi().getTableModel().attachModel(); - return editBean; } @Override - protected boolean prepareSave(NonTargetSample bean, List<NonTargetLength> objets) throws DataSourceException { - - boolean withLengths = !objets.isEmpty(); + protected void doPersist(NonTargetSample editBean) { - if (withLengths) { + String setId = getDataContext().getSelectedSetId(); - if (bean.getTopiaId() == null) { + if (editBean.getTopiaId() != null && editBean.isNonTargetLengthEmpty()) { - String setId = getDataContext().getSelectedSetId(); + // remove orphan target sample + if (log.isInfoEnabled()) { + log.info("Remove obsolete nonTargetSample " + editBean.getTopiaId() + " from Set: " + setId); + } - // l'échantillon n'existe pas encore, il faut le créer + getService(NonTargetSampleService.class).delete(setId, editBean); - if (log.isDebugEnabled()) { - log.debug("Will create nonTargetSample " + bean + " for " + setId); - } + } else { - getDataService().create(getDataSource(), setId, bean, null, getCreateExecutor()); + String savedId = getService(NonTargetSampleService.class).save(setId, editBean); - } + editBean.setTopiaId(savedId); + getService(NonTargetLengthService.class).save(editBean); } - - return true; - } - @Override - protected void doPersist(NonTargetSample bean, DataService dataService, DataSource dataSource) throws DataSourceException { - - if (bean.getTopiaId() != null && bean.isNonTargetLengthEmpty()) { - - // remove orphan non target sample - - String setId = getDataContext().getSelectedSetId(); - if (log.isInfoEnabled()) { - log.info("Remove obsolete nonTargetSample " + bean.getTopiaId() + " from Set: " + setId); - } - getDataService().delete(getDataSource(), setId, bean, getDeleteExecutor()); - - } else { - - // normal persist - super.doPersist(bean, dataService, dataSource); - - } + //TODO Supprimer saveUI et mettre saveUI2 a la place + @Override + public final void saveUI(boolean refresh) { + saveUI2(refresh); } @Override diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java index 15b28a1..91434fa 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/TargetSampleUIHandler.java @@ -139,7 +139,7 @@ public class TargetSampleUIHandler extends ContentTableUIHandler<TargetSample, T TargetSample targetSample = getService(TargetLengthService.class).loadForEdit(setId, discarded); - copy(TargetSample.class, BinderService.EDIT_TARGET_LENGHT, targetSample, getBean()); + copy(TargetSample.class, BinderService.EDIT_TARGET_LENGTH, targetSample, getBean()); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.