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 c5ffd2deed422fbbe4726d550f06c7ce7c400a76 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu Apr 30 09:45:46 2015 +0200 faunes accesoires et équipements --- .../data/seine/GearUseFeaturesSeineService.java | 12 ++- .../seine/GearUseFeaturesSeineServiceImpl.java | 46 +++++++---- .../services/data/seine/NonTargetCatchService.java | 23 ++++++ .../data/seine/NonTargetCatchServiceImpl.java | 77 +++++++++++++++++++ .../impl/seine/GearUseFeaturesSeineUIHandler.java | 26 ++++++- .../table/impl/seine/NonTargetCatchUIHandler.java | 88 ++++++++++++++++++---- 6 files changed, 239 insertions(+), 33 deletions(-) diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java index 23a4565..3e42f29 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java @@ -1,9 +1,12 @@ package fr.ird.observe.services.data.seine; 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.services.Commit; import fr.ird.observe.services.NoTransaction; import fr.ird.observe.services.ObserveService; -import org.nuiton.topia.persistence.util.TopiaEntityBinder; +import org.nuiton.topia.persistence.util.EntityListUpdator; import java.util.List; @@ -19,7 +22,12 @@ public interface GearUseFeaturesSeineService extends ObserveService { List<GearUseFeaturesMeasurementSeine> loadGearUseFeaturesMeasurementSeineForEdit(String gearUseFeaturesSeineId); + TripSeine loadForEdit(String tripId); + + @Commit + void save(TripSeine parent); + @NoTransaction - TopiaEntityBinder<GearUseFeaturesMeasurementSeine> getGearUseFeaturesMeasurementSeineBinderForEdit(); + EntityListUpdator<TripSeine, GearUseFeaturesSeine> getListUpdator(); } 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 ecb28cd..f28616f 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 @@ -6,9 +6,10 @@ import fr.ird.observe.entities.referentiel.GearCaracteristic; import fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine; 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.util.EntityListUpdator; import org.nuiton.topia.persistence.util.TopiaEntityBinder; -import org.nuiton.util.beans.BinderModelBuilder; import java.util.ArrayList; import java.util.Collection; @@ -44,7 +45,7 @@ public class GearUseFeaturesSeineServiceImpl extends AbstractObserveService impl public List<GearUseFeaturesMeasurementSeine> loadGearUseFeaturesMeasurementSeineForEdit(String gearUseFeaturesSeineId) { GearUseFeaturesMeasurementSeineDAO dao = getDao(); - TopiaEntityBinder<GearUseFeaturesMeasurementSeine> binder = getGearUseFeaturesMeasurementSeineBinderForEdit(); + TopiaEntityBinder<GearUseFeaturesMeasurementSeine> binder = getBinder(GearUseFeaturesMeasurementSeine.class, BinderService.EDIT); GearUseFeaturesSeine gearUseFeaturesSeine = findByTopiaId(GearUseFeaturesSeine.class, gearUseFeaturesSeineId); List<GearUseFeaturesMeasurementSeine> result = new ArrayList<GearUseFeaturesMeasurementSeine>(); @@ -61,26 +62,45 @@ public class GearUseFeaturesSeineServiceImpl extends AbstractObserveService impl } @Override - public TopiaEntityBinder<GearUseFeaturesMeasurementSeine> getGearUseFeaturesMeasurementSeineBinderForEdit() { + public TripSeine loadForEdit(String tripId) { + TripSeine toLoad = findByTopiaId(TripSeine.class, tripId); - TopiaEntityBinder<GearUseFeaturesMeasurementSeine> r = loadBinder("-forEdit", GearUseFeaturesMeasurementSeine.class, new CreateBinder<GearUseFeaturesMeasurementSeine>() { + TripSeine loaded = getDao(TripSeine.class).newInstance(); - @Override - public BinderModelBuilder<GearUseFeaturesMeasurementSeine, GearUseFeaturesMeasurementSeine> createBinderBuilder(BinderService binderService, String name) { + if (toLoad != null) { - BinderModelBuilder<GearUseFeaturesMeasurementSeine, GearUseFeaturesMeasurementSeine> builder = - binderService.newBinderBuilder(GearUseFeaturesMeasurementSeine.class, - GearUseFeaturesMeasurementSeine.PROPERTY_GEAR_CARACTERISTIC, - GearUseFeaturesMeasurementSeine.PROPERTY_MEASUREMENT_VALUE); + copyExcluding(TripSeine.class, BinderService.EDIT_GEAR_USE_FEATURES_SEINE, toLoad, loaded, TripSeine.PROPERTY_GEAR_USE_FEATURES_SEINE); - return builder; + for (GearUseFeaturesSeine childToLoad : toLoad.getGearUseFeaturesSeine()) { + + GearUseFeaturesSeine childLoaded = getDao(GearUseFeaturesSeine.class).newInstance(); + + copy(GearUseFeaturesSeine.class, BinderService.EDIT, childToLoad, childLoaded); + + loaded.addGearUseFeaturesSeine(childLoaded); } - }); + } + + return loaded; + } - return r; + @Override + public void save(TripSeine parent) { + TopiaEntityBinder<TripSeine> parentBinder = getBinder(TripSeine.class, BinderService.EDIT_GEAR_USE_FEATURES_SEINE); + TopiaEntityBinder<GearUseFeaturesSeine> childbinder = getBinder(GearUseFeaturesSeine.class, BinderService.EDIT); + doSaveList(parent, new SaveCollectionAction<TripSeine, GearUseFeaturesSeine>( + TripSeine.class, GearUseFeaturesSeine.class, getListUpdator(), parentBinder, childbinder)); + } + + @Override + public EntityListUpdator<TripSeine, GearUseFeaturesSeine> getListUpdator() { + return EntityListUpdator.newEntityListUpdator( + TripSeine.class, + GearUseFeaturesSeine.class, + TripSeine.PROPERTY_GEAR_USE_FEATURES_SEINE); } protected GearUseFeaturesMeasurementSeineDAO getDao() { diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchService.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchService.java new file mode 100644 index 0000000..538d153 --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchService.java @@ -0,0 +1,23 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.entities.seine.NonTargetCatch; +import fr.ird.observe.entities.seine.SetSeine; +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 NonTargetCatchService extends ObserveService { + + SetSeine loadForEdit(String setId); + + @Commit + void save(SetSeine parent); + + @NoTransaction + EntityListUpdator<SetSeine, NonTargetCatch> getListUpdator(); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchServiceImpl.java new file mode 100644 index 0000000..3166ffa --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchServiceImpl.java @@ -0,0 +1,77 @@ +package fr.ird.observe.services.data.seine; + +import fr.ird.observe.BinderService; +import fr.ird.observe.entities.seine.NonTargetCatch; +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.Collection; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class NonTargetCatchServiceImpl extends AbstractObserveService implements NonTargetCatchService { + + @Override + public SetSeine loadForEdit(String setId) { + + SetSeine toLoad = findByTopiaId(SetSeine.class, setId); + + SetSeine loaded = getDao(SetSeine.class).newInstance(); + + if (toLoad != null) { + + copyExcluding(SetSeine.class, BinderService.EDIT_NON_TARGET_CATCH, toLoad, loaded, SetSeine.PROPERTY_NON_TARGET_CATCH); + + for (NonTargetCatch childToLoad : toLoad.getNonTargetCatch()) { + + NonTargetCatch childLoaded = getDao(NonTargetCatch.class).newInstance(); + + copy(NonTargetCatch.class, BinderService.EDIT, childToLoad, childLoaded); + + loaded.addNonTargetCatch(childLoaded); + + } + + } + + return loaded; + } + + @Override + public void save(SetSeine parent) { + TopiaEntityBinder<SetSeine> parentBinder = getBinder(SetSeine.class, BinderService.EDIT_NON_TARGET_CATCH); + TopiaEntityBinder<NonTargetCatch> childbinder = getBinder(NonTargetCatch.class, BinderService.EDIT); + + doSaveList(parent, new SaveCollectionAction<SetSeine, NonTargetCatch>( + SetSeine.class, NonTargetCatch.class, getListUpdator(), parentBinder, childbinder) { + + @Override + public void prepareSave(SetSeine parent, Collection<NonTargetCatch> toSaves) { + + // mise a jour de la propriete nonTargetDiscarded + + boolean hasRejet = false; + for (NonTargetCatch c : toSaves) { + if (c.getReasonForDiscard() != null) { + // on a trouve un rejet de faune + hasRejet = true; + break; + } + } + parent.setNonTargetDiscarded(hasRejet); + } + }); + + } + + @Override + public EntityListUpdator<SetSeine, NonTargetCatch> getListUpdator() { + return EntityListUpdator.newEntityListUpdator( + SetSeine.class, + NonTargetCatch.class, + SetSeine.PROPERTY_NON_TARGET_CATCH); + } +} 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 08161ec..f750158 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 @@ -22,6 +22,7 @@ package fr.ird.observe.ui.content.table.impl.seine; * #L% */ +import fr.ird.observe.BinderService; import fr.ird.observe.DataService; import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveDAOHelper; @@ -299,15 +300,17 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } @Override - protected TripSeine loadEditBean(ContentMode mode, DataContext dataContext, DataService dataService, DataSource dataSource) throws DataSourceException { + protected void loadEditBean() throws DataSourceException { - TripSeine tripSeine = super.loadEditBean(mode, dataContext, dataService, dataSource); + String tripSeineId = getDataContext().getSelectedTripSeineId(); + + TripSeine tripSeine = getService(GearUseFeaturesSeineService.class).loadForEdit(tripSeineId); + + copy(TripSeine.class, BinderService.EDIT_GEAR_USE_FEATURES_SEINE, tripSeine, getBean()); // reset measurements getModel().getMeasurementsTableModel().clear(); - return tripSeine; - } @Override @@ -386,6 +389,19 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei } + + @Override + protected void doPersist(TripSeine editBean) { + getService(GearUseFeaturesSeineService.class).save(editBean); + } + + + //TODO Supprimer saveUI et mettre saveUI2 a la place + @Override + public final void saveUI(boolean refresh) { + saveUI2(refresh); + } + @Override protected void onUpdateFinalize(TopiaContext tx, TripSeine bean, Collection<GearUseFeaturesSeine> oldChilds) throws TopiaException { @@ -411,6 +427,8 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei for (GearUseFeaturesMeasurementSeine measure : measurements) { + + if (measurementsTableModel.isRowNotEmpty(measure)) { GearUseFeaturesMeasurementSeine measureToSave; diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java index 417e8fc..968330f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/table/impl/seine/NonTargetCatchUIHandler.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.ui.content.table.impl.seine; +import fr.ird.observe.BinderService; import fr.ird.observe.DataService; import fr.ird.observe.ObserveConfig; import fr.ird.observe.db.DataContext; @@ -39,6 +40,7 @@ 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.TripService; +import fr.ird.observe.services.data.seine.NonTargetCatchService; import fr.ird.observe.services.data.seine.NonTargetSampleService; import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.UIHelper; @@ -260,6 +262,53 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non } @Override + protected void loadEditBean() { + + String setId = getDataContext().getSelectedSetId(); + + SetSeine setSeine = getService(NonTargetCatchService.class).loadForEdit(setId); + + copy(SetSeine.class, BinderService.EDIT_NON_TARGET_CATCH, setSeine, getBean()); + + } + + @Override + protected void loadTableEditBeanForm(ContentMode mode) { + + List<Species> speciesList; + + String tripId = getDataContext().getSelectedTripId(); + + if (mode == ContentMode.UPDATE) { + + // get current ocean + Ocean ocean = getService(TripService.class).getTripOcean(tripId); + + ObserveConfig config = getUi().getContextValue(ObserveConfig.class); + String speciesListId = config.getSpeciesListSeineNonTargetCatchId(); + + // get all species + List<Species> allSpecies = getService(ReferentialService.class).loadDecoratedSpecies(speciesListId); + + // filtre par status actif + ReferenceEntities.filterReferentielListByStatus(allSpecies); + + // filtre par ocean + speciesList = Species2.filterByOcean(allSpecies, ocean); + + } else { + + speciesList = new ArrayList<Species>(); + } + + ALL_ESPECES_ENTRY.setContextValue(getUi(), speciesList); + if (log.isDebugEnabled()) { + log.debug("speciesList = " + speciesList.size()); + } + + } + + @Override protected void onSelectedRowChanged(int editingRow, NonTargetCatch bean, boolean create) { @@ -358,6 +407,17 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non } @Override + protected boolean doSave(SetSeine bean) { + try { + return super.doSave(bean); + } finally { + + // toujours supprimer la référence du context, quoiqu'il arrive + ALL_TAILLES_TO_DELETE_ENTRY.removeContextValue(getUi()); + } + } + + @Override protected boolean prepareSave(SetSeine editBean, List<NonTargetCatch> objets) throws Exception { super.prepareSave(editBean, objets); @@ -368,9 +428,9 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non NonTargetSampleService service = getService(NonTargetSampleService.class); service.getObsoleteEspeceForNonTargetSample(editBean.getTopiaId(), - speciessUsed, - speciessToDelete, - tailleToDelete); + speciessUsed, + speciessToDelete, + tailleToDelete); if (!tailleToDelete.isEmpty()) { @@ -416,19 +476,19 @@ public class NonTargetCatchUIHandler extends ContentTableUIHandler<SetSeine, Non ALL_TAILLES_TO_DELETE_ENTRY.setContextValue(getUi(), tailleToDelete); } - // mise a jour de la propriete nonTargetDiscarded + return true; + } + + @Override + protected void doPersist(SetSeine editBean) { + getService(NonTargetCatchService.class).save(editBean); + } - boolean hasRejet = false; - for (NonTargetCatch c : objets) { - if (c.getReasonForDiscard() != null) { - // on a trouve un rejet de faune - hasRejet = true; - break; - } - } - editBean.setNonTargetDiscarded(hasRejet); - return true; + //TODO Supprimer saveUI et mettre saveUI2 a la place + @Override + public final void saveUI(boolean refresh) { + saveUI2(refresh); } @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.