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 a2cc54fbd3238772395227020cf8bed33c45eb7a Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Apr 24 10:05:34 2015 +0200 ajout d'une usine à service + amélioration de l'abstraction (refs #7017) --- .../observe/services/AbstractObserveService.java | 66 +++++++++++----------- .../services/Longline/TripLonglineServiceImp.java | 16 +++++- .../observe/services/ObserveServiceFactory.java | 47 +++++++++++++++ .../services/seine/ActivitySeineServiceImpl.java | 17 +++++- .../services/seine/FloatingObjectServiceImpl.java | 17 +++++- .../observe/services/seine/RouteServiceImpl.java | 17 +++++- .../services/seine/SetSeineServiceImpl.java | 17 +++++- .../services/seine/TripSeineServiceImpl.java | 17 +++++- 8 files changed, 174 insertions(+), 40 deletions(-) diff --git a/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java b/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java index e41299a..cadd7ac 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java +++ b/observe-services/src/main/java/fr/ird/observe/services/AbstractObserveService.java @@ -1,8 +1,6 @@ package fr.ird.observe.services; -import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaDAO; @@ -13,36 +11,40 @@ import org.nuiton.topia.persistence.TopiaEntity; */ public abstract class AbstractObserveService<E extends TopiaEntity> { - protected DataSource dataSource; - - protected Class<E> entityClass; - - protected TopiaDAO<E> dao; - - - public E create(E entity) { - try { - TopiaContext topiaContext = dataSource.beginTransaction("create entity"); - - TopiaDAO<E> dao = ObserveDAOHelper.getDAO(topiaContext, entityClass); - - topiaContext.commitTransaction(); - - } catch (DataSourceException e) { - e.printStackTrace(); - } catch (TopiaException e) { - e.printStackTrace(); - } finally { - - } - - }; - - public abstract void update(E entity); - - public abstract E findById(String id); - - public abstract void delete(E entity); + protected final DataSource dataSource; + + protected final Class<E> entityClass; + + protected abstract TopiaDAO<E> getDao(TopiaContext tx) throws TopiaException; + + protected AbstractObserveService(Class<E> entityClass, DataSource dataSource) { + this.dataSource = dataSource; + this.entityClass = entityClass; + } + +// public E create(E entity) { +// try { +// TopiaContext topiaContext = dataSource.beginTransaction("create entity"); +// +// TopiaDAO<E> dao = ObserveDAOHelper.getDAO(topiaContext, entityClass); +// +// topiaContext.commitTransaction(); +// +// } catch (DataSourceException e) { +// e.printStackTrace(); +// } catch (TopiaException e) { +// e.printStackTrace(); +// } finally { +// +// } +// +// }; +// +// public abstract void update(E entity); +// +// public abstract E findById(String id); +// +// public abstract void delete(E entity); diff --git a/observe-services/src/main/java/fr/ird/observe/services/Longline/TripLonglineServiceImp.java b/observe-services/src/main/java/fr/ird/observe/services/Longline/TripLonglineServiceImp.java index 1f1c312..1c03529 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/Longline/TripLonglineServiceImp.java +++ b/observe-services/src/main/java/fr/ird/observe/services/Longline/TripLonglineServiceImp.java @@ -2,6 +2,7 @@ package fr.ird.observe.services.Longline; import fr.ird.observe.ObserveDAOHelper; import fr.ird.observe.ObserveTechnicalException; +import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.longline.TripLonglineDAO; @@ -15,7 +16,16 @@ import org.nuiton.topia.persistence.TopiaDAO; */ public class TripLonglineServiceImp extends AbstractObserveService<TripLongline> { + public TripLonglineServiceImp(DataSource dataSource) { + super(TripLongline.class, dataSource); + } + @Override + protected TopiaDAO<TripLongline> getDao(TopiaContext tx) throws TopiaException { + return ObserveDAOHelper.getTripLonglineDAO(tx); + } + +// @Override public TripLongline create(TripLongline entity) { try { TopiaContext topiaContext = dataSource.beginTransaction("create TripLongline"); @@ -33,7 +43,7 @@ public class TripLonglineServiceImp extends AbstractObserveService<TripLongline> return entity; } - @Override +// @Override public void update(TripLongline entity) { getLoadBinder().copyExcluding(getBean(), beanToSave, TripLongline.PROPERTY_ACTIVITY_LONGLINE); @@ -42,12 +52,12 @@ public class TripLonglineServiceImp extends AbstractObserveService<TripLongline> } - @Override +// @Override public TripLongline findById(String id) { return null; } - @Override +// @Override public void delete(TripLongline entity) { TopiaDAO<TripLongline> dao = getDataSource().getDAO(tx, TripLongline.class); dao.delete(beanToDelete); diff --git a/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java b/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java new file mode 100644 index 0000000..af151ad --- /dev/null +++ b/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java @@ -0,0 +1,47 @@ +package fr.ird.observe.services; + +import com.google.common.base.Preconditions; +import fr.ird.observe.ObserveTechnicalException; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.event.DataSourceEvent; +import fr.ird.observe.db.event.DataSourceListenerAdapter; +import org.apache.commons.lang3.reflect.ConstructorUtils; + +/** + * Created on 4/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ObserveServiceFactory { + + public static <S> S createService(Class<S> serviceType, DataSource dataSource) { + + Preconditions.checkNotNull(serviceType, "serviceType can't be null"); + Preconditions.checkNotNull(dataSource, "dataSource can't be null"); + + try { + + S service = ConstructorUtils.invokeConstructor(serviceType, dataSource); + + //FIXME On peut ajouter un état au service pour savoir si la dataSource est encore accessible... + dataSource.addDataSourceListener(new DataSourceListenerAdapter() { + @Override + public void onClosed(DataSourceEvent event) { + + } + + @Override + public void onOpened(DataSourceEvent event) { + + } + }); + + return service; + + } catch (Exception e) { + throw new ObserveTechnicalException("Could not create service: " + serviceType, e); + } + + } +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/ActivitySeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/ActivitySeineServiceImpl.java index 3386194..05dbef3 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/ActivitySeineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/seine/ActivitySeineServiceImpl.java @@ -1,6 +1,12 @@ package fr.ird.observe.services.seine; +import fr.ird.observe.ObserveDAOHelper; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.TopiaDAO; import java.util.List; @@ -10,7 +16,16 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class ActivitySeineServiceImpl { +public class ActivitySeineServiceImpl extends AbstractObserveService<ActivitySeine> { + + public ActivitySeineServiceImpl(DataSource dataSource) { + super(ActivitySeine.class, dataSource); + } + + @Override + protected TopiaDAO<ActivitySeine> getDao(TopiaContext tx) throws TopiaException { + return ObserveDAOHelper.getActivitySeineDAO(tx); + } public List<ActivitySeine> loadAllByRouteForDisplay(String routeId) { List<ActivitySeine> loaded = null; diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/FloatingObjectServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/FloatingObjectServiceImpl.java index a15b529..676b33a 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/FloatingObjectServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/seine/FloatingObjectServiceImpl.java @@ -1,6 +1,12 @@ package fr.ird.observe.services.seine; +import fr.ird.observe.ObserveDAOHelper; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.FloatingObject; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.TopiaDAO; /** * Created on 4/24/15. @@ -8,7 +14,16 @@ import fr.ird.observe.entities.seine.FloatingObject; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class FloatingObjectServiceImpl { +public class FloatingObjectServiceImpl extends AbstractObserveService<FloatingObject> { + + public FloatingObjectServiceImpl(DataSource dataSource) { + super(FloatingObject.class, dataSource); + } + + @Override + protected TopiaDAO<FloatingObject> getDao(TopiaContext tx) throws TopiaException { + return ObserveDAOHelper.getFloatingObjectDAO(tx); + } public FloatingObject loadForEdit(String floatingObjectId) { FloatingObject loaded = null; diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/RouteServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/RouteServiceImpl.java index f75dd75..5dbbee4 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/RouteServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/seine/RouteServiceImpl.java @@ -1,6 +1,12 @@ package fr.ird.observe.services.seine; +import fr.ird.observe.ObserveDAOHelper; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.TopiaDAO; import java.util.List; @@ -10,7 +16,16 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class RouteServiceImpl { +public class RouteServiceImpl extends AbstractObserveService<Route> { + + public RouteServiceImpl(DataSource dataSource) { + super(Route.class,dataSource); + } + + @Override + protected TopiaDAO<Route> getDao(TopiaContext tx) throws TopiaException { + return ObserveDAOHelper.getRouteDAO(tx); + } public List<Route> loadAllByTripForDisplay(String tripSeineId) { List<Route> loaded = null; diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/SetSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/SetSeineServiceImpl.java index d4100d0..33208ac 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/SetSeineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/seine/SetSeineServiceImpl.java @@ -1,6 +1,12 @@ package fr.ird.observe.services.seine; +import fr.ird.observe.ObserveDAOHelper; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.TopiaDAO; /** * Created on 4/24/15. @@ -8,7 +14,16 @@ import fr.ird.observe.entities.seine.SetSeine; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class SetSeineServiceImpl { +public class SetSeineServiceImpl extends AbstractObserveService<SetSeine> { + + public SetSeineServiceImpl(DataSource dataSource) { + super(SetSeine.class, dataSource); + } + + @Override + protected TopiaDAO<SetSeine> getDao(TopiaContext tx) throws TopiaException { + return ObserveDAOHelper.getSetSeineDAO(tx); + } public SetSeine loadForEdit(String setSeineId) { SetSeine loaded = null; diff --git a/observe-services/src/main/java/fr/ird/observe/services/seine/TripSeineServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/seine/TripSeineServiceImpl.java index e1b5a04..86035ba 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/seine/TripSeineServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/seine/TripSeineServiceImpl.java @@ -1,6 +1,12 @@ package fr.ird.observe.services.seine; +import fr.ird.observe.ObserveDAOHelper; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.AbstractObserveService; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.TopiaDAO; import java.util.List; @@ -10,7 +16,16 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class TripSeineServiceImpl { +public class TripSeineServiceImpl extends AbstractObserveService<TripSeine> { + + public TripSeineServiceImpl(DataSource dataSource) { + super(TripSeine.class,dataSource); + } + + @Override + protected TopiaDAO<TripSeine> getDao(TopiaContext tx) throws TopiaException { + return ObserveDAOHelper.getTripSeineDAO(tx); + } public List<TripSeine> loadAllByProgramForDisplay(String programId) { List<TripSeine> loaded = null; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.