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 a17990fd553f7992ff9f207699cce52a62a0e460 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 4 09:20:35 2015 +0200 - creation du module observe-services-api - amélioration de la service factory pour ne plus utiliser la datasource en état refs #7017 --- {observe-services => observe-services-api}/pom.xml | 7 +- .../main/java/fr/ird/observe/services/Commit.java | 0 .../fr/ird/observe/services/NoTransaction.java | 0 .../fr/ird/observe/services/ObserveService.java | 0 .../observe/services/ObserveServiceContext.java | 0 .../observe/services/ObserveServiceFactory.java | 342 +++++++++++++++++++++ .../services/ObserveServiceFactoryProvider.java | 17 + .../ird/observe/services/ReplicationService.java | 0 .../ird/observe/services/data/OpenableService.java | 0 .../fr/ird/observe/services/data/TripService.java | 0 .../data/longline/ActivityLonglineService.java | 0 .../data/longline/BaitsCompositionService.java | 0 .../longline/BranchlinesCompositionService.java | 0 .../data/longline/CatchLonglineService.java | 0 .../services/data/longline/EncounterService.java | 0 .../longline/FloatlinesCompositionService.java | 0 .../longline/GearUseFeaturesLonglineService.java | 0 .../data/longline/HooksCompositionService.java | 0 .../longline/LonglineDetailCompositionService.java | 0 .../longline/LonglineGlobalCompositionService.java | 0 .../services/data/longline/SensorUsedService.java | 0 .../services/data/longline/SetLonglineService.java | 0 .../observe/services/data/longline/TdrService.java | 0 .../data/longline/TripLonglineService.java | 0 .../services/data/seine/ActivitySeineService.java | 0 .../services/data/seine/FloatingObjectService.java | 0 .../data/seine/GearUseFeaturesSeineService.java | 0 .../services/data/seine/NonTargetCatchService.java | 0 .../data/seine/NonTargetSampleService.java | 0 .../data/seine/ObjectObservedSpeciesService.java | 0 .../data/seine/ObjectSchoolEstimateService.java | 0 .../observe/services/data/seine/RouteService.java | 0 .../services/data/seine/SchoolEstimateService.java | 0 .../services/data/seine/SetSeineService.java | 0 .../services/data/seine/TargetCatchService.java | 0 .../services/data/seine/TargetSampleService.java | 0 .../services/data/seine/TripSeineService.java | 0 .../observe/services/model/DataSelectionModel.java | 9 +- .../services/operation/ComputeDataService.java | 0 .../services/operation/GpsImportService.java | 0 .../operation/ObsoleteReferenceToReplace.java | 0 .../services/operation/SynchronizeService.java | 0 .../services/operation/ValidationService.java | 0 .../services/referential/ReferentialService.java | 0 observe-services/pom.xml | 5 + .../observe/services/AbstractObserveService.java | 10 +- ...ava => ObserveServiceFactoryProviderTopia.java} | 116 ++----- .../services/operation/SynchronizeServiceImpl.java | 141 ++++----- ....observe.services.ObserveServiceFactoryProvider | 1 + .../main/java/fr/ird/observe/ObserveContext.java | 228 +++++--------- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 24 +- .../ui/admin/consolidate/ConsolidateModel.java | 21 -- .../ui/admin/consolidate/ConsolidateUIHandler.java | 6 +- .../ird/observe/ui/admin/export/ExportModel.java | 20 +- .../observe/ui/admin/export/ExportUIHandler.java | 9 +- .../observe/ui/admin/gps/ImportGPSUIHandler.java | 8 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 18 +- .../ui/admin/synchronize/SynchronizeModel.java | 35 --- .../ui/admin/synchronize/SynchronizeUIHandler.java | 18 +- .../ui/admin/validate/ValidateUIHandler.java | 6 +- .../ird/observe/ui/storage/StorageUIHandler.java | 39 +-- .../ui/tree/AbstractObserveTreeCellRenderer.java | 4 +- .../ird/observe/ui/tree/ActivityLonglineNode.java | 7 +- .../fr/ird/observe/ui/tree/ActivitySeineNode.java | 7 +- .../fr/ird/observe/ui/tree/EntityNodeSupport.java | 8 +- .../observe/ui/tree/FloatingObjectSeineNode.java | 7 +- .../ird/observe/ui/tree/ObserveDataProvider.java | 17 +- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 6 +- .../ird/observe/ui/tree/ProgramLonglineNode.java | 7 +- .../fr/ird/observe/ui/tree/ProgramSeineNode.java | 7 +- .../fr/ird/observe/ui/tree/RouteSeineNode.java | 7 +- .../fr/ird/observe/ui/tree/SetLonglineNode.java | 7 +- .../java/fr/ird/observe/ui/tree/SetSeineNode.java | 7 +- .../fr/ird/observe/ui/tree/TripLonglineNode.java | 7 +- .../java/fr/ird/observe/ui/tree/TripSeineNode.java | 7 +- .../loadors/ActivityLonglineNodeChildLoador.java | 2 +- .../tree/loadors/ActivitySeineNodeChildLoador.java | 2 +- pom.xml | 1 + 78 files changed, 630 insertions(+), 560 deletions(-) diff --git a/observe-services/pom.xml b/observe-services-api/pom.xml similarity index 95% copy from observe-services/pom.xml copy to observe-services-api/pom.xml index 1b85d2d..7d7da42 100644 --- a/observe-services/pom.xml +++ b/observe-services-api/pom.xml @@ -10,10 +10,10 @@ <version>4.0-RC5-SNAPSHOT</version> </parent> - <artifactId>observe-services</artifactId> + <artifactId>observe-services-api</artifactId> - <name>ObServe :: Services</name> - <description>ObServe services module</description> + <name>ObServe :: Services API</name> + <description>ObServe services API module</description> <dependencies> @@ -118,7 +118,6 @@ <artifactId>junit</artifactId> </dependency> - </dependencies> diff --git a/observe-services/src/main/java/fr/ird/observe/services/Commit.java b/observe-services-api/src/main/java/fr/ird/observe/services/Commit.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/Commit.java rename to observe-services-api/src/main/java/fr/ird/observe/services/Commit.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/NoTransaction.java b/observe-services-api/src/main/java/fr/ird/observe/services/NoTransaction.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/NoTransaction.java rename to observe-services-api/src/main/java/fr/ird/observe/services/NoTransaction.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/ObserveService.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/ObserveService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/ObserveService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceContext.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceContext.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/ObserveServiceContext.java rename to observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceContext.java diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java new file mode 100644 index 0000000..951d040 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java @@ -0,0 +1,342 @@ +package fr.ird.observe.services; + +import com.google.common.base.Preconditions; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import fr.ird.observe.ObserveApplicationContext; +import fr.ird.observe.ObserveTechnicalException; +import fr.ird.observe.db.DataSource; +import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.Closeable; +import java.util.HashSet; +import java.util.ServiceLoader; +import java.util.Set; +import java.util.concurrent.ExecutionException; + +/** + * Created on 4/24/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ObserveServiceFactory implements Closeable { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ObserveServiceFactory.class); + + protected final ObserveApplicationContext applicationContext; + + protected static Set<ObserveServiceFactoryProvider> providers; + + protected static Set<ObserveServiceFactoryProvider> getProviders() { + + if (providers == null) { + providers = new HashSet<ObserveServiceFactoryProvider>(); + + ServiceLoader<ObserveServiceFactoryProvider> load = ServiceLoader.load(ObserveServiceFactoryProvider.class); + for (ObserveServiceFactoryProvider observeServiceFactoryProvider : load) { + + providers.add(observeServiceFactoryProvider); + } + } + + return providers; + + } + + protected static ObserveServiceFactoryProvider getProvider(DataSource dataSource) { + + ObserveServiceFactoryProvider result = null; + for (ObserveServiceFactoryProvider provider : getProviders()) { + if (provider.acceptDataSource(dataSource)) { + result = provider; + break; + } + } + + Preconditions.checkState(result != null, "No provider found for dataSource: " + dataSource); + return result; + + } + + protected final LoadingCache<ServiceKey<? extends ObserveService>, ObserveService> services; + + public static ObserveServiceFactory newFactory(ObserveApplicationContext applicationContext) { + return new ObserveServiceFactory(applicationContext); + } + + protected ObserveServiceFactory(ObserveApplicationContext applicationContext) { + + this.applicationContext = applicationContext; + this.services = CacheBuilder.newBuilder().build(new CacheLoader<ServiceKey<? extends ObserveService>, ObserveService>() { + + @Override + public ObserveService load(ServiceKey<? extends ObserveService> key) throws Exception { + Preconditions.checkNotNull(key, "service key can't be null"); + + Class<? extends ObserveService> serviceType = key.serviceType; + + ObserveServiceFactoryProvider provider = getProvider(key.dataSource); + + ObserveServiceContext serviceContext = new ObserveServiceContext(ObserveServiceFactory.this.applicationContext, key.dataSource); + ObserveService service = provider.newService(serviceType, serviceContext); + + if (log.isDebugEnabled()) { + log.debug("New service " + service); + } + + return service; + } + }); + + } + + public <S extends ObserveService> S getService(DataSource dataSource, Class<S> serviceType) { + + Preconditions.checkNotNull(dataSource, "dataSource can't be null."); + Preconditions.checkNotNull(serviceType, "serviceType can't be null."); + Preconditions.checkNotNull(dataSource, "dataSource can't be null."); + + ServiceKey<S> key = new ServiceKey<S>(dataSource, serviceType); + + try { + + S s = (S) services.get(key); + return s; + + } catch (ExecutionException e) { + throw new ObserveTechnicalException("Could not get service: " + serviceType, e); + } + + } + + static class ServiceKey<S extends ObserveService> { + + final DataSource dataSource; + + final Class<S> serviceType; + + ServiceKey(DataSource dataSource, Class<S> serviceType) { + + Preconditions.checkNotNull(dataSource, "dataSource can't be null."); + Preconditions.checkNotNull(serviceType, "serviceType can't be null."); + this.dataSource = dataSource; + this.serviceType = serviceType; + + } + + @Override + public boolean equals(Object o) { + + if (this == o) return true; + if (!(o instanceof ServiceKey)) return false; + + ServiceKey<?> that = (ServiceKey<?>) o; + + return dataSource.equals(that.dataSource) + && serviceType.equals(that.serviceType); + + } + + @Override + public int hashCode() { + + int result = dataSource.hashCode(); + result = 31 * result + serviceType.hashCode(); + return result; + + } + } + +// public <S extends ObserveService> S getService(Class<S> serviceType) { +// +// Preconditions.checkNotNull(serviceType, "serviceType can't be null."); +// Preconditions.checkNotNull(dataSource, "dataSource can't be null."); +// +// try { +// S s = (S) services.get(serviceType); +// return s; +// } catch (ExecutionException e) { +// throw new ObserveTechnicalException("Could not get service: " + serviceType, e); +// } +// } + + public void unregisterDataSource(DataSource dataSource) { + //FIXME Remove all service using this dataSource + } + + public void clear() { + services.invalidateAll(); + } + + @Override + public void close() { + + for (ObserveService service : services.asMap().values()) { + if (log.isDebugEnabled()) { + log.debug("Close service " + service); + } + IOUtils.closeQuietly(service); + } + services.invalidateAll(); + + } + +// public <S extends ObserveService> S newProxyService(Class<S> serviceType, ObserveApplicationContext applicationContext, DataSource dataSource) { +// +// Preconditions.checkNotNull(serviceType, "serviceType can't be null"); +// Preconditions.checkArgument(serviceType.isInterface(), "serviceType must be an interface"); +// Preconditions.checkNotNull(applicationContext, "applicationContext can't be null"); +// +// ObserveServiceContext serviceContext = new ObserveServiceContext(applicationContext, dataSource); +// +// S service = newProxyService(serviceType, serviceContext); +// return service; +// +// } +// +// public <S extends ObserveService> S newProxyService(Class<S> serviceType, ObserveServiceContext serviceContext) { +// +// Preconditions.checkNotNull(serviceType, "serviceType can't be null"); +// Preconditions.checkArgument(serviceType.isInterface(), "serviceType must be an interface"); +// Preconditions.checkNotNull(serviceContext, "serviceContext can't be null"); +// +// S service = newService(serviceType, serviceContext); +// S proxyService = addProxyService(serviceType, service, serviceContext); +// return proxyService; +// +// } +// +// public static <S extends ObserveService> S newService(Class<S> serviceType, ObserveServiceContext serviceContext) { +// +// Class<S> serviceImpl; +// try { +// //FIXME Cela devrait dépendre de la datasource ? +// serviceImpl = (Class<S>) Class.forName(serviceType.getName() + "Impl"); +// } catch (ClassNotFoundException e) { +// throw new IllegalStateException("Could not find implementation class for " + serviceType); +// } +// +// try { +// +// // Instanciate concrete service +// S service = ConstructorUtils.invokeConstructor(serviceImpl); +// service.setServiceContext(serviceContext); +// +// return service; +// +// } catch (Exception e) { +// throw new ObserveTechnicalException("Could not create service: " + serviceType, e); +// } +// +// } +// +// protected <S extends ObserveService> S addProxyService(Class<S> serviceType, S service, ObserveServiceContext serviceContext) { +// +// // Instanciate transactional proxied service +// ServiceInvocationHandler invocationHandler = new ServiceInvocationHandler(serviceContext, service); +// S proxyService = (S) Proxy.newProxyInstance(ObserveServiceFactory.class.getClassLoader(), new Class[]{serviceType}, invocationHandler); +// +// return proxyService; +// +// } +// +// protected static class ServiceInvocationHandler implements InvocationHandler { +// +// private final ObserveServiceContext serviceContext; +// +// private final ObserveService target; +// +// private final Set<String> methodNamesToByPass; +// +// protected ServiceInvocationHandler(ObserveServiceContext serviceContext, ObserveService target) { +// this.serviceContext = serviceContext; +// this.target = target; +// this.methodNamesToByPass = Sets.newHashSet( +// "equals", +// "hashCode", +// "finalize", +// "toString", +// "clone", +// "getClass" +// ); +// } +// +// @Override +// public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { +// +// Object result; +// +// if (methodNamesToByPass.contains(method.getName()) || method.isAnnotationPresent(NoTransaction.class)) { +// +// result = invokeMethod(method, args); +// +// } else { +// +// result = invokeMethodWithTransaction(method, args); +// +// } +// +// return result; +// +// } +// +// protected Object invokeMethod(Method method, Object... args) throws Throwable { +// try { +// Object result = method.invoke(target, args); +// return result; +// } catch (InvocationTargetException e) { +// throw e.getCause(); +// } +// } +// +// +// protected Object invokeMethodWithTransaction(Method method, Object... args) throws Throwable { +// +// String methodName = method.getName(); +// +// DataSource source = serviceContext.getDataSource(); +// +// TopiaContext tx = source.beginTransaction(methodName); +// +// try { +// +// serviceContext.setTransaction(tx); +// +// Object invoke = invokeMethod(method, args); +// +// if (method.isAnnotationPresent(Commit.class)) { +// +// // do commit +// source.commitTransaction(tx, methodName); +// +// } +// +// return invoke; +// +// } finally { +// +// try { +// +// // always rollback transaction to avoid dirty transactions +// source.rollbackTransaction(tx, methodName); +// +// +// } finally { +// +// serviceContext.setTransaction(null); +// source.closeTransaction(tx, methodName); +// +// } +// +// } +// +// } +// +// } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactoryProvider.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactoryProvider.java new file mode 100644 index 0000000..abc3386 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactoryProvider.java @@ -0,0 +1,17 @@ +package fr.ird.observe.services; + +import fr.ird.observe.db.DataSource; + +/** + * Created on 5/4/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public interface ObserveServiceFactoryProvider { + + boolean acceptDataSource(DataSource dataSource); + + <S extends ObserveService> S newService(Class<S> serviceType, ObserveServiceContext serviceContext); + +} diff --git a/observe-services/src/main/java/fr/ird/observe/services/ReplicationService.java b/observe-services-api/src/main/java/fr/ird/observe/services/ReplicationService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/ReplicationService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/ReplicationService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/OpenableService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/OpenableService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/OpenableService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/OpenableService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/TripService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/TripService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/TripService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/TripService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/BaitsCompositionService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/BaitsCompositionService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/BaitsCompositionService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/BaitsCompositionService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/BranchlinesCompositionService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/BranchlinesCompositionService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/BranchlinesCompositionService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/BranchlinesCompositionService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/EncounterService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/EncounterService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/EncounterService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/EncounterService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/FloatlinesCompositionService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/FloatlinesCompositionService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/FloatlinesCompositionService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/FloatlinesCompositionService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/HooksCompositionService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/HooksCompositionService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/HooksCompositionService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/HooksCompositionService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/TdrService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/TdrService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/TdrService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectSchoolEstimateService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/ObjectSchoolEstimateService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/ObjectSchoolEstimateService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/ObjectSchoolEstimateService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/RouteService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/RouteService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/RouteService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/SchoolEstimateService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/SchoolEstimateService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/SchoolEstimateService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/SchoolEstimateService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetCatchService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/TargetCatchService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetCatchService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/TargetCatchService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java b/observe-services-api/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java similarity index 98% rename from observe-services/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java rename to observe-services-api/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java index abb314a..c3ea1f0 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.services.model; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.Trip; import fr.ird.observe.entities.Trips; @@ -59,16 +60,16 @@ import java.util.TreeMap; */ public class DataSelectionModel implements Serializable { - public static void populate(DataSelectionModel model, ObserveServiceFactory services) throws Exception { + public static void populate(DataSelectionModel model, ObserveServiceFactory services, DataSource dataSource) throws Exception { // source.checkState(DataSourceState.OPEN); Map<String, List<String>> datas = new HashMap<String, List<String>>(); - TripSeineService tripSeineService = services.getService(TripSeineService.class); - TripLonglineService tripLonglineService = services.getService(TripLonglineService.class); + TripSeineService tripSeineService = services.getService(dataSource, TripSeineService.class); + TripLonglineService tripLonglineService = services.getService(dataSource, TripLonglineService.class); - List<Program> programs = services.getService(ReferentialService.class).getAllProgramStub(); + List<Program> programs = services.getService(dataSource, ReferentialService.class).getAllProgramStub(); for (Program program : programs) { if (Programs.isProgramSeine(program)) { diff --git a/observe-services/src/main/java/fr/ird/observe/services/operation/ComputeDataService.java b/observe-services-api/src/main/java/fr/ird/observe/services/operation/ComputeDataService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/operation/ComputeDataService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/operation/ComputeDataService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/operation/GpsImportService.java b/observe-services-api/src/main/java/fr/ird/observe/services/operation/GpsImportService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/operation/GpsImportService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/operation/GpsImportService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/operation/ObsoleteReferenceToReplace.java b/observe-services-api/src/main/java/fr/ird/observe/services/operation/ObsoleteReferenceToReplace.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/operation/ObsoleteReferenceToReplace.java rename to observe-services-api/src/main/java/fr/ird/observe/services/operation/ObsoleteReferenceToReplace.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/operation/SynchronizeService.java b/observe-services-api/src/main/java/fr/ird/observe/services/operation/SynchronizeService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/operation/SynchronizeService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/operation/SynchronizeService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/operation/ValidationService.java b/observe-services-api/src/main/java/fr/ird/observe/services/operation/ValidationService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/operation/ValidationService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/operation/ValidationService.java diff --git a/observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialService.java b/observe-services-api/src/main/java/fr/ird/observe/services/referential/ReferentialService.java similarity index 100% rename from observe-services/src/main/java/fr/ird/observe/services/referential/ReferentialService.java rename to observe-services-api/src/main/java/fr/ird/observe/services/referential/ReferentialService.java diff --git a/observe-services/pom.xml b/observe-services/pom.xml index 1b85d2d..821a17d 100644 --- a/observe-services/pom.xml +++ b/observe-services/pom.xml @@ -28,6 +28,11 @@ <artifactId>observe-business</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>observe-services-api</artifactId> + <version>${project.version}</version> + </dependency> <!-- commons dependencies --> 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 40e6f0f..b14e6fa 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 @@ -454,17 +454,17 @@ public abstract class AbstractObserveService implements ObserveService { protected <S extends ObserveService> S newService(Class<S> serviceType) { - S service = ObserveServiceFactory.newService(serviceType, serviceContext); + S service = new ObserveServiceFactoryProviderTopia().newService(serviceType, serviceContext); return service; } - protected ObserveServiceFactory newServiceFactory(DataSource dataSource) { + protected <S extends ObserveService> S newService(DataSource dataSource, Class<S> serviceType) { - ObserveServiceFactory serviceFactory = ObserveServiceFactory.newFactory(serviceContext.applicationContext, dataSource); - return serviceFactory; + ObserveServiceContext serviceContext1 = new ObserveServiceContext(serviceContext.applicationContext, dataSource); + S service = new ObserveServiceFactoryProviderTopia().newService(serviceType, serviceContext1); + return service; } - } diff --git a/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java b/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactoryProviderTopia.java similarity index 53% rename from observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java rename to observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactoryProviderTopia.java index c48e040..8e8b951 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java +++ b/observe-services/src/main/java/fr/ird/observe/services/ObserveServiceFactoryProviderTopia.java @@ -1,138 +1,65 @@ package fr.ird.observe.services; import com.google.common.base.Preconditions; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; import com.google.common.collect.Sets; -import fr.ird.observe.ObserveApplicationContext; import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.db.DataSource; -import org.apache.commons.io.IOUtils; +import fr.ird.observe.db.impl.H2DataSource; +import fr.ird.observe.db.impl.PGDataSource; import org.apache.commons.lang3.reflect.ConstructorUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaContext; -import java.io.Closeable; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Set; -import java.util.concurrent.ExecutionException; /** - * Created on 4/24/15. + * Created on 5/4/15. * * @author Tony Chemit - chemit@codelutin.com * @since 4.0 */ -public class ObserveServiceFactory implements Closeable { +public class ObserveServiceFactoryProviderTopia implements ObserveServiceFactoryProvider { - /** Logger. */ - private static final Log log = LogFactory.getLog(ObserveServiceFactory.class); - - protected final ObserveApplicationContext applicationContext; - - protected DataSource dataSource; - - protected final LoadingCache<Class<? extends ObserveService>, ObserveService> services; - - public static ObserveServiceFactory newFactory(ObserveApplicationContext applicationContext) { - return new ObserveServiceFactory(applicationContext); - } - - public static ObserveServiceFactory newFactory(ObserveApplicationContext applicationContext, DataSource dataSource) { - ObserveServiceFactory factory = newFactory(applicationContext); - factory.setDataSource(dataSource); - return factory; - } - - protected ObserveServiceFactory(ObserveApplicationContext applicationContext) { - this.applicationContext = applicationContext; - this.services = CacheBuilder.newBuilder().build(new CacheLoader<Class<? extends ObserveService>, ObserveService>() { - - @Override - public ObserveService load(Class<? extends ObserveService> key) throws Exception { - Preconditions.checkNotNull(key, "service key can't be null"); - Preconditions.checkNotNull(dataSource, "can't ask a service if not datasource is setted"); - ObserveService service = newProxyService(key, ObserveServiceFactory.this.applicationContext, ObserveServiceFactory.this.dataSource); - if (log.isDebugEnabled()) { - log.debug("New service " + service); - } - - return service; - } - }); - } - - public DataSource getDataSource() { - return dataSource; - } - - public void setDataSource(DataSource dataSource) { - this.dataSource = dataSource; - } - - public <S extends ObserveService> S getService(Class<S> serviceType) { - if (serviceType == null) { - return null; - } - try { - S s = (S) services.get(serviceType); - return s; - } catch (ExecutionException e) { - throw new ObserveTechnicalException("Could not get service: " + serviceType, e); - } - } - - public void clear() { - services.invalidateAll(); - } +// private ObserveApplicationContext applicationContext; +// +// public void setApplicationContext(ObserveApplicationContext applicationContext) { +// this.applicationContext = applicationContext; +// } @Override - public void close() { + public boolean acceptDataSource(DataSource dataSource) { - for (ObserveService service : services.asMap().values()) { - if (log.isDebugEnabled()) { - log.debug("Close service " + service); - } - IOUtils.closeQuietly(service); + boolean result = false; + if (dataSource instanceof H2DataSource) { + result = true; + } else if (dataSource instanceof PGDataSource) { + result = true; } - services.invalidateAll(); - } - - public <S extends ObserveService> S newProxyService(Class<S> serviceType, ObserveApplicationContext applicationContext, DataSource dataSource) { - - Preconditions.checkNotNull(serviceType, "serviceType can't be null"); - Preconditions.checkArgument(serviceType.isInterface(), "serviceType must be an interface"); - Preconditions.checkNotNull(applicationContext, "applicationContext can't be null"); - - ObserveServiceContext serviceContext = new ObserveServiceContext(applicationContext, dataSource); - - S service = newProxyService(serviceType, serviceContext); - return service; + return result; } - public <S extends ObserveService> S newProxyService(Class<S> serviceType, ObserveServiceContext serviceContext) { + @Override + public <S extends ObserveService> S newService(Class<S> serviceType, ObserveServiceContext serviceContext) { Preconditions.checkNotNull(serviceType, "serviceType can't be null"); Preconditions.checkArgument(serviceType.isInterface(), "serviceType must be an interface"); Preconditions.checkNotNull(serviceContext, "serviceContext can't be null"); - S service = newService(serviceType, serviceContext); + S service = newSimpleService(serviceType, serviceContext); S proxyService = addProxyService(serviceType, service, serviceContext); return proxyService; } - public static <S extends ObserveService> S newService(Class<S> serviceType, ObserveServiceContext serviceContext) { + public static <S extends ObserveService> S newSimpleService(Class<S> serviceType, ObserveServiceContext serviceContext) { + //FIXME Rename implementation to TopiaImpl Class<S> serviceImpl; try { - //FIXME Cela devrait dépendre de la datasource ? serviceImpl = (Class<S>) Class.forName(serviceType.getName() + "Impl"); } catch (ClassNotFoundException e) { throw new IllegalStateException("Could not find implementation class for " + serviceType); @@ -160,7 +87,6 @@ public class ObserveServiceFactory implements Closeable { return proxyService; - } protected static class ServiceInvocationHandler implements InvocationHandler { diff --git a/observe-services/src/main/java/fr/ird/observe/services/operation/SynchronizeServiceImpl.java b/observe-services/src/main/java/fr/ird/observe/services/operation/SynchronizeServiceImpl.java index e87ec48..0079de3 100644 --- a/observe-services/src/main/java/fr/ird/observe/services/operation/SynchronizeServiceImpl.java +++ b/observe-services/src/main/java/fr/ird/observe/services/operation/SynchronizeServiceImpl.java @@ -10,7 +10,6 @@ import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.referentiel.ReferenceEntities; import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.services.AbstractObserveService; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.ReplicationService; import fr.ird.observe.services.referential.ReferentialService; import org.apache.commons.collections.CollectionUtils; @@ -53,48 +52,37 @@ public class SynchronizeServiceImpl extends AbstractObserveService implements Sy @Override public DiffState.DiffStateMap buildReferentielDifferentiel(final DataSource centralDataSource, final SendMessageAble messanger) { - ObserveServiceFactory centralDataSourceServices = newServiceFactory(centralDataSource); + final DiffState.DiffStateMap result = DiffState.newMap(); - try { + final ReferentialService centralReferentialService = newService(centralDataSource, ReferentialService.class); - final DiffState.DiffStateMap result = DiffState.newMap(); + ReferenceEntities.walk(new ReferenceEntities.ReferentielWalker() { - final ReferentialService centralReferentialService = - centralDataSourceServices.getService(ReferentialService.class); - ReferenceEntities.walk(new ReferenceEntities.ReferentielWalker() { + public <E extends TopiaEntity> void walk(Class<E> contractClass) { - - public <E extends TopiaEntity> void walk(Class<E> contractClass) { - - String s = t(DecoratorService.getEntityLabel(contractClass)); - String message = - t("observe.service.build.synchro.referentiel", s); - if (messanger != null) { - messanger.sendMessage(message); - } - if (log.isInfoEnabled()) { - log.info(message); - } - List<E> list = centralReferentialService.getList(contractClass); - List<E> list2 = getList(contractClass); - DiffState.DiffStateMap tmp; - // recuperation du differentiel pour le type d'entitétmp = - tmp = TopiaEntityHelper.buildDifferentiel(list, list2); - // ajout au resultat - DiffState.addAll(result, tmp); - // on nettoie - DiffState.clear(tmp); + String s = t(DecoratorService.getEntityLabel(contractClass)); + String message = + t("observe.service.build.synchro.referentiel", s); + if (messanger != null) { + messanger.sendMessage(message); } - }); - DiffState.removeEmptyStates(result); - return result; - - } finally { - - centralDataSourceServices.close(); - - } + if (log.isInfoEnabled()) { + log.info(message); + } + List<E> list = centralReferentialService.getList(contractClass); + List<E> list2 = getList(contractClass); + DiffState.DiffStateMap tmp; + // recuperation du differentiel pour le type d'entitétmp = + tmp = TopiaEntityHelper.buildDifferentiel(list, list2); + // ajout au resultat + DiffState.addAll(result, tmp); + // on nettoie + DiffState.clear(tmp); + } + }); + DiffState.removeEmptyStates(result); + return result; } @@ -132,74 +120,65 @@ public class SynchronizeServiceImpl extends AbstractObserveService implements Sy List<String> ids; - ObserveServiceFactory centralSourceFactory = newServiceFactory(centralDataSource); - - try { - - // ajout des nouvelles entites du referentiel + // ajout des nouvelles entites du referentiel - ids = diff.get(DiffState.NEW); - if (CollectionUtils.isNotEmpty(ids)) { + ids = diff.get(DiffState.NEW); + if (CollectionUtils.isNotEmpty(ids)) { - ReplicationService replicationService = newService(ReplicationService.class); + ReplicationService replicationService = newService(centralDataSource, ReplicationService.class); - replicationService.replicateReferentiel(centralDataSource, ids, messanger); + replicationService.replicateReferentiel(centralDataSource, ids, messanger); - } - - ReferentialService localReferentialService = newService(ReferentialService.class); + } - // mis a jour des entites modifiees + ReferentialService localReferentialService = newService(ReferentialService.class); - ids = diff.get(DiffState.MODIFIED); - if (CollectionUtils.isNotEmpty(ids)) { + // mis a jour des entites modifiees - ReferentialService service = centralSourceFactory.getService(ReferentialService.class); - Collection<? extends TopiaEntity> entitiesToCopy = service.loadSimpleEntities(ids); + ids = diff.get(DiffState.MODIFIED); + if (CollectionUtils.isNotEmpty(ids)) { - localReferentialService.copySimpleEntities(entitiesToCopy); + ReferentialService service = newService(centralDataSource, ReferentialService.class); + Collection<? extends TopiaEntity> entitiesToCopy = service.loadSimpleEntities(ids); - } + localReferentialService.copySimpleEntities(entitiesToCopy); - // mise à jour des données utilisateurs (remplacements d'objets obsolètes) - - for (ObsoleteReferenceToReplace referenceToReplace : obsoleteReferencesToReplace) { + } - String message = t("observe.synchro.replaceObsolete.object", referenceToReplace.getObsoleteId()); - messanger.sendMessage(message); + // mise à jour des données utilisateurs (remplacements d'objets obsolètes) - localReferentialService.replaceObsoleteReference(referenceToReplace); + for (ObsoleteReferenceToReplace referenceToReplace : obsoleteReferencesToReplace) { - } + String message = t("observe.synchro.replaceObsolete.object", referenceToReplace.getObsoleteId()); + messanger.sendMessage(message); - // si on ne commite pas ici, les modifications utilisateurs sont perdues - getTransaction().commitTransaction(); + localReferentialService.replaceObsoleteReference(referenceToReplace); - // suppression des entités obsoletes de la base source + } - ids = diff.get(DiffState.REMOVED); - if (CollectionUtils.isNotEmpty(ids)) { + // si on ne commite pas ici, les modifications utilisateurs sont perdues + getTransaction().commitTransaction(); - localReferentialService.deleteEntities(ids); + // suppression des entités obsoletes de la base source - } + ids = diff.get(DiffState.REMOVED); + if (CollectionUtils.isNotEmpty(ids)) { - if (MapUtils.isNotEmpty(versionsToUpdate)) { + localReferentialService.deleteEntities(ids); - // on applique le patch sur les versions pour bien avoir - // la bonne version de topiaversion et pas seulement un incrément - // de 1 puisque ce champs est géré par hibernate et qu'il ne nous laisse - // pas la possibilité de choisir la valeur qu'on veut attribuer au champs... - patchTopiaVersions(versionsToUpdate); - } + } - getTransaction().commitTransaction(); + if (MapUtils.isNotEmpty(versionsToUpdate)) { - } finally { + // on applique le patch sur les versions pour bien avoir + // la bonne version de topiaversion et pas seulement un incrément + // de 1 puisque ce champs est géré par hibernate et qu'il ne nous laisse + // pas la possibilité de choisir la valeur qu'on veut attribuer au champs... + patchTopiaVersions(versionsToUpdate); + } - centralSourceFactory.close(); + getTransaction().commitTransaction(); - } } private static final String UPDATE_VERSION_PATTERN = "UPDATE %1$s SET topiaversion = %2$d WHERE topiaid='%3$s';\n"; diff --git a/observe-services/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactoryProvider b/observe-services/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactoryProvider new file mode 100644 index 0000000..d88eed8 --- /dev/null +++ b/observe-services/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactoryProvider @@ -0,0 +1 @@ +fr.ird.observe.services.ObserveServiceFactoryProviderTopia \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ObserveContext.java b/observe-swing/src/main/java/fr/ird/observe/ObserveContext.java index 4c88c27..5f1713a 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ObserveContext.java +++ b/observe-swing/src/main/java/fr/ird/observe/ObserveContext.java @@ -24,7 +24,6 @@ package fr.ird.observe; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; -import fr.ird.observe.db.constants.DbMode; import fr.ird.observe.db.event.DataSourceEvent; import fr.ird.observe.db.event.DataSourceListenerAdapter; import fr.ird.observe.db.impl.H2DataSource; @@ -32,10 +31,8 @@ import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.OpenableService; import fr.ird.observe.ui.ObserveMainUI; -import fr.ird.observe.ui.ObserveMainUIHandler; import fr.ird.observe.ui.ObserveUIMode; import fr.ird.observe.ui.UIHelper; -import fr.ird.observe.ui.actions.ChangeStorageAction; import fr.ird.observe.ui.actions.shared.AbstractUIAction; import fr.ird.observe.ui.actions.shared.CancelCreateUIAction; import fr.ird.observe.ui.actions.shared.CloseAndCreateUIAction; @@ -66,7 +63,6 @@ import java.awt.Component; import java.util.Arrays; import java.util.List; -import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -236,12 +232,13 @@ public class ObserveContext extends ObserveApplicationContext { ObserveRunner.getRunner().setReload(true); } - public static ObserveServiceFactory newServiceFactory(DataSource dataSource) { - return ObserveServiceFactory.newFactory(get(), dataSource); + public <S extends ObserveService> S getService(Class<S> serviceType) { + S service = services.getService(getDataSource(), serviceType); + return service; } - public <S extends ObserveService> S getService(Class<S> serviceType) { - S service = services.getService(serviceType); + public static <S extends ObserveService> S getService(DataSource dataSource, Class<S> serviceType) { + S service = get().services.getService(dataSource, serviceType); return service; } @@ -249,78 +246,78 @@ public class ObserveContext extends ObserveApplicationContext { return services; } - public void initStorage(ObserveConfig config, - ObserveMainUI mainUI, - boolean askToCreate) { - try { - if (config.isLocalStorageExist()) { - - // une base locale existe, on l'ouvre - loadLocalStorage(); - - // on peut retourner sur cette base - mainUI.setMode(ObserveUIMode.DB); - } else { - - // on peut retourner sur cette base - mainUI.setMode(ObserveUIMode.NO_DB); - - if (askToCreate) { - - // demande à l'utilisateur s'il veut créer la base locale - createStorage(config, mainUI.getHandler()); - } - } - if (log.isInfoEnabled()) { - log.info(t("observe.init.storage.done")); - } - } catch (Exception e) { - ErrorDialogUI.showError(e); - if (log.isErrorEnabled()) { - log.error(e.getMessage(), e); - } - } - } - - protected void createStorage(ObserveConfig config, - ObserveMainUIHandler uiHandler) { - - int reponse = UIHelper.askUser( - t("observe.title.no.local.db.found"), - t("observe.message.no.local.db.found", - config.getLocalDBDirectory()), - JOptionPane.QUESTION_MESSAGE, - new Object[]{ - t("observe.choice.useRemoteStorage"), - t("observe.choice.createLocalStorage"), - t("observe.choice.doNothing") - }, - 1 - ); - if (log.isDebugEnabled()) { - log.debug("response : " + reponse); - } - - DbMode dbMode = null; - String title = null; - if (reponse != JOptionPane.CLOSED_OPTION && reponse < 2) { - - if (reponse == 1) { - // creation de la base locale - dbMode = DbMode.CREATE_LOCAL; - title = n("observe.title.create.local.db"); - } else { - // connexion à une base distante - dbMode = DbMode.USE_REMOTE; - title = n("observe.title.load.remote.db"); - } - } - if (dbMode != null) { -// uiHandler.launchChangeStorage(getObserveMainUI(), dbMode, title); +// public void initStorage(ObserveConfig config, +// ObserveMainUI mainUI, +// boolean askToCreate) { +// try { +// if (config.isLocalStorageExist()) { +// +// // une base locale existe, on l'ouvre +// loadLocalStorage(); +// +// // on peut retourner sur cette base +// mainUI.setMode(ObserveUIMode.DB); +// } else { +// +// // on peut retourner sur cette base +// mainUI.setMode(ObserveUIMode.NO_DB); +// +// if (askToCreate) { +// +// // demande à l'utilisateur s'il veut créer la base locale +// createStorage(config, mainUI.getHandler()); +// } +// } +// if (log.isInfoEnabled()) { +// log.info(t("observe.init.storage.done")); +// } +// } catch (Exception e) { +// ErrorDialogUI.showError(e); +// if (log.isErrorEnabled()) { +// log.error(e.getMessage(), e); +// } +// } +// } - new ChangeStorageAction(getObserveMainUI(), dbMode, title).run(); - } - } +// protected void createStorage(ObserveConfig config, +// ObserveMainUIHandler uiHandler) { +// +// int reponse = UIHelper.askUser( +// t("observe.title.no.local.db.found"), +// t("observe.message.no.local.db.found", +// config.getLocalDBDirectory()), +// JOptionPane.QUESTION_MESSAGE, +// new Object[]{ +// t("observe.choice.useRemoteStorage"), +// t("observe.choice.createLocalStorage"), +// t("observe.choice.doNothing") +// }, +// 1 +// ); +// if (log.isDebugEnabled()) { +// log.debug("response : " + reponse); +// } +// +// DbMode dbMode = null; +// String title = null; +// if (reponse != JOptionPane.CLOSED_OPTION && reponse < 2) { +// +// if (reponse == 1) { +// // creation de la base locale +// dbMode = DbMode.CREATE_LOCAL; +// title = n("observe.title.create.local.db"); +// } else { +// // connexion à une base distante +// dbMode = DbMode.USE_REMOTE; +// title = n("observe.title.load.remote.db"); +// } +// } +// if (dbMode != null) { +//// uiHandler.launchChangeStorage(getObserveMainUI(), dbMode, title); +// +// new ChangeStorageAction(getObserveMainUI(), dbMode, title).run(); +// } +// } protected void loadLocalStorage() throws Exception { @@ -454,12 +451,6 @@ public class ObserveContext extends ObserveApplicationContext { // references vers le service DataSource source = event.getSource(); - // gestion JMX -// if (ObserveServiceHelper.isUseJMX()) { -// -// dettachHibernateMBean(source); -// } - ObserveMainUI mainUI = getObserveMainUI(); // nettoyage de l'ui ( suppression navigation et autres ) @@ -479,6 +470,7 @@ public class ObserveContext extends ObserveApplicationContext { } protected void openOnUI(DataSource source) throws DataSourceException { + // on rend le service disponible dans le service de données ObserveServiceHelper.get().setDataSource(source); @@ -495,18 +487,12 @@ public class ObserveContext extends ObserveApplicationContext { config.setLocalStorageExist(true); } - // gestion JMX -// if (ObserveServiceHelper.isUseJMX()) { -// createHibernateMBean(source); -// } - // remplissage de l'ui ObserveMainUI mainUI = getObserveMainUI(); if (mainUI != null) { if (log.isDebugEnabled()) { - log.debug("loading ui for storage " + source.getLabel() + - ": " + mainUI.getName()); + log.debug("loading ui for storage " + source.getLabel() + ": " + mainUI.getName()); } DataContext dataContext = mainUI.getDataContext(); @@ -516,58 +502,19 @@ public class ObserveContext extends ObserveApplicationContext { treeHelper.cleanNavigationUI(mainUI); - String[] openIds = getService(OpenableService.class).getOpenIds(); mainUI.getDataContext().populateOpens(openIds); treeHelper.loadNavigationUI(source, mainUI); mainUI.setMode(ObserveUIMode.DB); - mainUI.getStatus().setStatus( - t("observe.message.db.loaded", source.getLabel())); + mainUI.getStatus().setStatus(t("observe.message.db.loaded", source.getLabel())); } } }); } -// protected void createHibernateMBean(DataSource source) { -// try { -// ObjectName on = createMBean(source); -// if (log.isInfoEnabled()) { -// log.info("attach MBean " + on); -// } -// MBeanServer server = ManagementFactory.getPlatformMBeanServer(); -// // MBean implementation -// StatisticsService stats = new StatisticsService(); -// // Bind the stats to a SessionFactory -// stats.setSessionFactory(((TopiaContextImplementor) source.getRootCtxt()).getHibernateFactory()); -// // Register the Mbean on the server -// server.registerMBean(stats, on); -// } catch (Exception e) { -// if (log.isErrorEnabled()) { -// log.error("Could not attach hibernate session to JMX...", e); -// } -// } -// } - -// public void dettachHibernateMBean(DataSource source) { -// // suppression MBean sur la session hibernate -// try { -// MBeanServer server = ManagementFactory.getPlatformMBeanServer(); -// ObjectName on = createMBean(source); -// if (log.isInfoEnabled()) { -// log.info("dettach MBean " + on); -// } -// // UnRegister the Mbean on the server -// server.unregisterMBean(on); -// } catch (Exception e) { -// if (log.isErrorEnabled()) { -// log.error("Could not dettach hibernate session from JMX...", e); -// } -// } -// } - public void registerShareActions(ObserveMainUI ui) { ActionMap actionMap = ui.getRootPane().getActionMap(); @@ -596,23 +543,6 @@ public class ObserveContext extends ObserveApplicationContext { actionMap.put(actionId, action); } -// @SuppressWarnings({"UseOfObsoleteCollectionType"}) -// protected ObjectName createMBean(DataSource source) throws MalformedObjectNameException { -// Hashtable<String, String> tb = new Hashtable<String, String>(); -// tb.put("type", "statistics"); -// String name = source.getLabel(); -// tb.put("sessionFactory", name.replaceAll(":", "_")); -// // MBean object name -// ObjectName on = new ObjectName("hibernate", tb); -// return on; -// } - private final ObserveServiceFactory services = ObserveServiceFactory.newFactory(this); - @Override - public void setDataSource(DataSource dataSource) { - super.setDataSource(dataSource); - services.close(); - services.setDataSource(dataSource); - } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index 92a6411..28e36fc 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -34,7 +34,6 @@ import fr.ird.observe.db.impl.PGDataSource; import fr.ird.observe.entities.Trip; import fr.ird.observe.entities.Trips; import fr.ird.observe.report.model.Report; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.ui.admin.export.ExportModel; @@ -179,12 +178,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // on doit aussi calculer les ids des marées distantes DataSource safeCentralSource = getSafeCentralSource(true); - ObserveServiceFactory services = ObserveContext.newServiceFactory(safeCentralSource); - try { - computeExistingTrips(services); - } finally { - services.close(); - } + + computeExistingTrips(safeCentralSource); } @@ -193,13 +188,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { log.debug("Will refill selectionModel [" + newStep + "] : " + selectModel); } DataSource dataSource = getSafeLocalSource(true); + populateSelectionModel(dataSource); - ObserveServiceFactory services = ObserveContext.newServiceFactory(dataSource); - try { - populateSelectionModel(services); - } finally { - services.close(); - } } }; @@ -1284,9 +1274,9 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - public void populateSelectionModel(ObserveServiceFactory services) { + public void populateSelectionModel(DataSource dataSource) { try { - DataSelectionModel.populate(getSelectionDataModel(), services); + DataSelectionModel.populate(getSelectionDataModel(), ObserveContext.get().getServices(), dataSource); } catch (Exception e) { if (log.isErrorEnabled()) { log.error("could not populate selected model", e); @@ -1299,12 +1289,12 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - protected void computeExistingTrips(ObserveServiceFactory services) { + protected void computeExistingTrips(DataSource dataSource) { DataSelectionModel selectionModel = new DataSelectionModel(); selectionModel.setUseOpenData(true); try { - DataSelectionModel.populate(selectionModel, services); + DataSelectionModel.populate(selectionModel, ObserveContext.get().getServices(), dataSource); } catch (Exception e) { if (log.isErrorEnabled()) { log.error("could not populate selected model", e); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java index 7f35319..b909441 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateModel.java @@ -21,10 +21,7 @@ */ package fr.ird.observe.ui.admin.consolidate; -import com.google.common.base.Preconditions; -import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.ui.admin.AdminActionModel; import fr.ird.observe.ui.admin.AdminStep; @@ -39,8 +36,6 @@ public class ConsolidateModel extends AdminActionModel { /** la source de données où effectuer la consolidation des données */ private DataSource source; - protected ObserveServiceFactory serviceFactory; - public ConsolidateModel() { super(AdminStep.CONSOLIDATE); } @@ -51,22 +46,6 @@ public class ConsolidateModel extends AdminActionModel { public void setSource(DataSource source) { this.source = source; - if (serviceFactory != null) { - serviceFactory.close(); - serviceFactory = null; - } - } - - public ObserveServiceFactory getServiceFactory() { - - if (serviceFactory == null) { - - Preconditions.checkNotNull(source, "Can't create source service factory if source is null"); - serviceFactory = ObserveContext.newServiceFactory(source); - - } - return serviceFactory; - } @Override diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java index d5da3d8..f153528 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/consolidate/ConsolidateUIHandler.java @@ -21,8 +21,8 @@ */ package fr.ird.observe.ui.admin.consolidate; +import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.services.operation.ComputeDataService; import fr.ird.observe.ui.admin.AdminStep; @@ -129,9 +129,7 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { Set<String> tripIds = model.getSelectionDataModel().getSelectedData(); - ObserveServiceFactory serviceFactory = getStepModel().getServiceFactory(); - - ComputeDataService service = serviceFactory.getService(ComputeDataService.class); + ComputeDataService service = ObserveContext.get().getServices().getService(getStepModel().getSource(), ComputeDataService.class); try { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java index 8233e85..b6bf549 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportModel.java @@ -21,16 +21,14 @@ */ package fr.ird.observe.ui.admin.export; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.services.ObserveServiceFactory; -import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.entities.Trip; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.services.ObserveServiceFactory; +import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.ui.admin.AdminActionModel; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.AdminUIModel; @@ -145,20 +143,6 @@ public class ExportModel extends AdminActionModel { public void setCentralSource(DataSource centralSource) { this.centralSource = centralSource; - if (centralServiceFactory != null) { - centralServiceFactory.close(); - centralServiceFactory = null; - } - } - - public ObserveServiceFactory getCentraServiceFactory() { - - if (centralServiceFactory == null) { - Preconditions.checkNotNull(centralSource, "Can't create source service factory if centralSource is null"); - centralServiceFactory = ObserveContext.newServiceFactory(centralSource); - } - return centralServiceFactory; - } public void setProgramDecorator(Decorator<Program> programDecorator) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java index 12e9561..6d5d320 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java @@ -22,12 +22,12 @@ package fr.ird.observe.ui.admin.export; import fr.ird.observe.DecoratorService; +import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.Trip; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.ReplicationService; import fr.ird.observe.services.data.TripService; import fr.ird.observe.services.model.DataSelectionModel; @@ -275,8 +275,7 @@ public class ExportUIHandler extends AdminTabUIHandler { protected void processTrip(ExportModel stepModel, TripEntry tripEntry) throws Exception { - ObserveServiceFactory centralServices = stepModel.getCentraServiceFactory(); - + DataSource centralSource = stepModel.getCentralSource(); DataSource source = stepModel.getSource(); Trip trip = tripEntry.getTrip(); @@ -295,7 +294,7 @@ public class ExportUIHandler extends AdminTabUIHandler { } sendMessage(t("observe.message.exportData.delete.remote.maree", tripDecorated, programDecorated)); - TripService service = centralServices.getService(TripService.class); + TripService service = ObserveContext.getService(centralSource, TripService.class); service.deleteTrip(tripId); } @@ -305,7 +304,7 @@ public class ExportUIHandler extends AdminTabUIHandler { } sendMessage(t("observe.message.exportData.replicate.maree", tripDecorated, programDecorated)); - ReplicationService service = centralServices.getService(ReplicationService.class); + ReplicationService service = ObserveContext.getService(centralSource,ReplicationService.class); service.replicateData(source, tripId); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java index 516ad80..c2ef087 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/gps/ImportGPSUIHandler.java @@ -29,7 +29,6 @@ import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.gps.GPSPoint; import fr.ird.observe.gps.GPSPointInterval; import fr.ird.observe.gps.GPSRoute; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.operation.GpsImportService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; @@ -374,9 +373,7 @@ public class ImportGPSUIHandler extends AdminTabUIHandler { // ouverture de la base locale openSource(source); - ObserveServiceFactory serviceFactory = ObserveContext.newServiceFactory(source); - - GpsImportService service = serviceFactory.getService(GpsImportService.class); + GpsImportService service = ObserveContext.getService(source, GpsImportService.class); // récuperation de la marée ouverte openTripSeine = service.getOpenTrip(); @@ -522,8 +519,7 @@ public class ImportGPSUIHandler extends AdminTabUIHandler { int[] selectedIndex = model.getImportGPSModel().getImportGPSSelectedIndex(); - ObserveServiceFactory serviceFactory = ObserveContext.newServiceFactory(source); - GpsImportService service = serviceFactory.getService(GpsImportService.class); + GpsImportService service = ObserveContext.getService(source, GpsImportService.class); service.applyPoints(data, selectedIndex, this); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java index 3951628..eefb8fa 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java @@ -23,7 +23,6 @@ package fr.ird.observe.ui.admin.save; import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.operation.SynchronizeService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.AdminStep; @@ -185,22 +184,13 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { } - ObserveServiceFactory serviceFactory = ObserveContext.newServiceFactory(referentielSource); - try { + SynchronizeService service = ObserveContext.getService(referentielSource, SynchronizeService.class); - SynchronizeService service = serviceFactory.getService(SynchronizeService.class); + DataSource targetSource = stepModel.getSource(); - DataSource targetSource = stepModel.getSource(); + DiffState.DiffStateMap diff = stepModel.getDiff(); - DiffState.DiffStateMap diff = stepModel.getDiff(); - - service.saveReferentiel(targetSource, diff, stepModel.getReplaceActions(), this); - - } finally { - - serviceFactory.close(); - - } + service.saveReferentiel(targetSource, diff, stepModel.getReplaceActions(), this); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java index 2e1a8bf..96863b8 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeModel.java @@ -21,10 +21,7 @@ */ package fr.ird.observe.ui.admin.synchronize; -import com.google.common.base.Preconditions; -import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.operation.ObsoleteReferenceToReplace; import fr.ird.observe.ui.admin.AdminActionModel; import fr.ird.observe.ui.admin.AdminStep; @@ -62,10 +59,6 @@ public class SynchronizeModel extends AdminActionModel { /** temporary source where to make operations. */ protected DataSource tmpSource; - protected ObserveServiceFactory serviceFactory; - - protected ObserveServiceFactory tmpServiceFactory; - public SynchronizeModel() { super(AdminStep.SYNCHRONIZE); } @@ -98,10 +91,6 @@ public class SynchronizeModel extends AdminActionModel { } public void setSource(DataSource source) { - if (serviceFactory != null) { - serviceFactory.close(); - serviceFactory = null; - } this.source = source; } @@ -118,33 +107,9 @@ public class SynchronizeModel extends AdminActionModel { } public void setTmpSource(DataSource tmpSource) { - if (tmpServiceFactory != null) { - tmpServiceFactory.close(); - tmpServiceFactory = null; - } this.tmpSource = tmpSource; } - public ObserveServiceFactory getServiceFactory() { - - if (serviceFactory == null) { - Preconditions.checkNotNull(source, "Can't create source service factory if source is null"); - serviceFactory = ObserveContext.newServiceFactory(source); - } - return serviceFactory; - - } - - public ObserveServiceFactory getTmpServiceFactory() { - - if (tmpServiceFactory == null) { - Preconditions.checkNotNull(source, "Can't create source service factory if tmpSource is null"); - tmpServiceFactory = ObserveContext.newServiceFactory(tmpSource); - } - return tmpServiceFactory; - - } - @Override public void destroy() { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java index 17ccb98..0f5f8f8 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java @@ -26,7 +26,6 @@ import fr.ird.observe.ObserveContext; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.Entities; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.ReplicationService; import fr.ird.observe.services.operation.ObsoleteReferenceToReplace; import fr.ird.observe.services.operation.SynchronizeService; @@ -345,8 +344,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { openSource(source); openSource(centralSource); - ObserveServiceFactory sourceServiceFactory = getStepModel().getServiceFactory(); - SynchronizeService synchronizeService = sourceServiceFactory.getService(SynchronizeService.class); + SynchronizeService synchronizeService = ObserveContext.getService(source, SynchronizeService.class); // construction du différentiel sendMessage(t("observe.message.synchro.build.diff", centralSource.getLabel())); @@ -411,8 +409,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { getStepModel().setTmpSource(tmpSource); openSource(tmpSource); - ObserveServiceFactory tmpServiceFactory = getStepModel().getTmpServiceFactory(); - ReplicationService service = tmpServiceFactory.getService(ReplicationService.class); + ReplicationService service = ObserveContext.getService(tmpSource, ReplicationService.class); // duplication du referentiel à jour vers la base temporaire service.replicateReferentiel(centralSource); @@ -527,9 +524,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { public List<?> getEntityListFromSynchroDB(Class<?> type, boolean removeObsoletes) { - ObserveServiceFactory tmpServiceFactory = getStepModel().getTmpServiceFactory(); - - ReferentialService service = tmpServiceFactory.getService(ReferentialService.class); + ReferentialService service = ObserveContext.getService(getStepModel().getTmpSource(), ReferentialService.class); ObserveEntityEnum constant = ObserveEntityEnum.valueOf(type); List<?> list = service.getList(constant.getContract()); @@ -567,9 +562,8 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { DataSource tmpSource = stepModel.getTmpSource(); - ObserveServiceFactory serviceFactory = ObserveContext.newServiceFactory(tmpSource); try { - ReferentialService service = serviceFactory.getService(ReferentialService.class); + ReferentialService service = ObserveContext.getService(tmpSource, ReferentialService.class); service.replaceObsoleteReference(action); @@ -606,10 +600,6 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { model.setStepState(onError(e)); - } finally { - - serviceFactory.close(); - } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java index f8abf5c..7255057 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java @@ -405,11 +405,9 @@ public class ValidateUIHandler extends AdminTabUIHandler { context.setDataSource(model.getLocalSource()); context.setDataContext(model.getDataContext()); - ObserveServiceFactory serviceFactory = ObserveContext.newServiceFactory(source); -// TopiaContext ctxt = beginTransaction(source, "launchValidation"); try { - ValidationService service = serviceFactory.getService(ValidationService.class); + ValidationService service = ObserveContext.getService(source, ValidationService.class); service.validate(this, detector, dataModel); @@ -429,8 +427,6 @@ public class ValidateUIHandler extends AdminTabUIHandler { } finally { - serviceFactory.close(); - context.setDataSource(null); SortedMap<TopiaEntityRef, List<SimpleBeanValidatorMessage<?>>> refs = detector.getRefs(); stepModel.setMessages(refs); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index 5a158d1..b873656 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -44,7 +44,6 @@ import fr.ird.observe.db.util.PGInstall; import fr.ird.observe.db.util.SecurityModel; import fr.ird.observe.entities.referentiel.Program; import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.ReplicationService; import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.ui.ObserveMainUI; @@ -168,6 +167,7 @@ public class StorageUIHandler { // on écoute les changements d'étapes model.addPropertyChangeListener(StorageUIModel.STEP_PROPERTY_NAME, new PropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent evt) { StorageUIModel model = (StorageUIModel) evt.getSource(); @@ -631,19 +631,9 @@ public class StorageUIHandler { tempStorage.doOpen(); - ObserveServiceFactory serviceFactory = ObserveContext.newServiceFactory(tempStorage); - - try { - - ReplicationService replicationService = serviceFactory.getService(ReplicationService.class); - replicationService.replicateReferentiel(service); - replicationService.replicateAllData(service); - - } finally { - - serviceFactory.close(); - - } + ReplicationService replicationService = ObserveContext.getService(tempStorage, ReplicationService.class); + replicationService.replicateReferentiel(service); + replicationService.replicateAllData(service); tempStorage.storeDB(dst); @@ -678,7 +668,7 @@ public class StorageUIHandler { * * @param service le service locale qui encapsule la base locale * @param dst le fichier de sauvegarde - * @param trips les marees a exporter (si {@code null} on exporte tout) + * @param trips les marees a exporter (si {@code null} on exporte tout) */ public void backupLocalDatabase(DataSource service, File dst, Set<String> trips) { @@ -719,19 +709,9 @@ public class StorageUIHandler { tempStorage.doOpen(); - ObserveServiceFactory serviceFactory = ObserveContext.newServiceFactory(tempStorage); - - try { - - ReplicationService replicationService = serviceFactory.getService(ReplicationService.class); - replicationService.replicateReferentiel(service); - replicationService.replicateData(service, tripIds); - - } finally { - - serviceFactory.close(); - - } + ReplicationService replicationService = ObserveContext.getService(tempStorage, ReplicationService.class); + replicationService.replicateReferentiel(service); + replicationService.replicateData(service, tripIds); tempStorage.storeDB(dst); @@ -1199,8 +1179,7 @@ public class StorageUIHandler { dataModel.setUseData(true); dataModel.setUseOpenData(true); dataModel.setUseReferentiel(false); - ObserveServiceFactory services = ObserveContext.newServiceFactory(source); - DataSelectionModel.populate(dataModel,services); + DataSelectionModel.populate(dataModel, ObserveContext.get().getServices(), source); // positionnement du model de selection de données // dans le model du wizard diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java index fba1ddb..5af9513 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java @@ -112,7 +112,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel if (provider == null) { DataSource source = ObserveContext.get().getDataSource(); if (source != null) { - provider = new ObserveDataProvider(ObserveContext.get().getServices()); + provider = new ObserveDataProvider(source); setDataProvider(provider); } } @@ -291,7 +291,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel if (node instanceof EntityNodeSupport) { EntityNodeSupport entityNodeSupport = (EntityNodeSupport) node; - TopiaEntity entity = entityNodeSupport.getEntity(); + TopiaEntity entity = entityNodeSupport.loadEntity(); Preconditions.checkNotNull(entity, "L'entité doit être chargée dans le noeud: " + node); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java index c1b7181..60aab80 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java @@ -22,9 +22,10 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.longline.ActivityLongline; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.longline.ActivityLonglineService; import fr.ird.observe.ui.tree.loadors.ActivityLonglineNodeChildLoador; @@ -43,8 +44,8 @@ public class ActivityLonglineNode extends EntityNodeSupport<ActivityLongline> { } @Override - protected ActivityLongline getEntity(ObserveServiceFactory services) throws DataSourceException { - ActivityLonglineService service = services.getService(ActivityLonglineService.class); + protected ActivityLongline loadEntity(DataSource dataSource) throws DataSourceException { + ActivityLonglineService service = ObserveContext.getService(dataSource, ActivityLonglineService.class); return service.getActivityLonglineStub(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java index 90949a4..55e6067 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java @@ -22,9 +22,10 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.seine.ActivitySeine; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.seine.ActivitySeineService; import fr.ird.observe.ui.tree.loadors.ActivitySeineNodeChildLoador; @@ -43,8 +44,8 @@ public class ActivitySeineNode extends EntityNodeSupport<ActivitySeine> { } @Override - protected ActivitySeine getEntity(ObserveServiceFactory services) throws DataSourceException { - ActivitySeineService service = services.getService(ActivitySeineService.class); + protected ActivitySeine loadEntity(DataSource dataSource) throws DataSourceException { + ActivitySeineService service = ObserveContext.getService(dataSource, ActivitySeineService.class); return service.getActivitySeineStub(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java index 01bcd73..82fde6d 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java @@ -22,9 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.OpenableEntity; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.ui.tree.loadors.AbstractNodeChildLoador; import jaxx.runtime.swing.nav.NavBridge; import jaxx.runtime.swing.nav.NavDataProvider; @@ -59,7 +59,7 @@ public abstract class EntityNodeSupport<E extends TopiaEntity> extends ObserveNo private boolean reloadEntity; - protected abstract E getEntity(ObserveServiceFactory services) throws DataSourceException; + protected abstract E loadEntity(DataSource dataSource) throws DataSourceException; protected EntityNodeSupport(ObserveDataProvider dataProvider, Class<E> internalClass, E entity) { this(dataProvider, internalClass, entity, null); @@ -118,7 +118,7 @@ public abstract class EntityNodeSupport<E extends TopiaEntity> extends ObserveNo } - public E getEntity() { + public E loadEntity() { return entity; } @@ -144,7 +144,7 @@ public abstract class EntityNodeSupport<E extends TopiaEntity> extends ObserveNo } try { - entity = getEntity(oProvider.getServices()); + entity = loadEntity(oProvider.getDataSource()); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java index 3471e0b..f3c773f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java @@ -22,8 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.FloatingObject; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.seine.FloatingObjectService; import fr.ird.observe.ui.tree.loadors.FloatingObjectNodeChildLoador; @@ -42,8 +43,8 @@ public class FloatingObjectSeineNode extends EntityNodeSupport<FloatingObject> { } @Override - protected FloatingObject getEntity(ObserveServiceFactory services) { - FloatingObjectService service = services.getService(FloatingObjectService.class); + protected FloatingObject loadEntity(DataSource dataSource) { + FloatingObjectService service = ObserveContext.getService(dataSource, FloatingObjectService.class); return service.getFloatinObjectStub(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java index 53839b4..958be96 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java @@ -21,9 +21,9 @@ */ package fr.ird.observe.ui.tree; +import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataSource; import fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.model.DataSelectionModel; import jaxx.runtime.swing.nav.NavDataProvider; import org.apache.commons.logging.Log; @@ -40,14 +40,14 @@ public class ObserveDataProvider implements NavDataProvider { /** Logger */ static private final Log log = LogFactory.getLog(ObserveDataProvider.class); - protected final ObserveServiceFactory services; + protected final DataSource dataSource; protected DataSelectionModel selectionModel; private boolean creating; - public ObserveDataProvider(ObserveServiceFactory services) { - this.services = services; + public ObserveDataProvider(DataSource dataSource) { + this.dataSource = dataSource; } public void setSelectionModel(DataSelectionModel selectionModel) { @@ -59,7 +59,6 @@ public class ObserveDataProvider implements NavDataProvider { @Override public boolean isEnabled() { - DataSource dataSource = services.getDataSource(); return dataSource != null && dataSource.isOpen() || selectionModel != null; } @@ -75,15 +74,11 @@ public class ObserveDataProvider implements NavDataProvider { this.creating = creating; } - public ObserveServiceFactory getServices() { - return services; - } - public <S extends ObserveService> S getService(Class<S> serviceType) { - return services.getService(serviceType); + return ObserveContext.getService(dataSource, serviceType); } public DataSource getDataSource() { - return services.getDataSource(); + return dataSource; } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index 765efa8..f9f1baf 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -36,7 +36,6 @@ import fr.ird.observe.entities.seine.FloatingObject; import fr.ird.observe.entities.seine.Route; import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.model.DataSelectionModel; import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.ObserveMainUI; @@ -114,7 +113,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { DataSource source = ObserveContext.get().getDataSource(); if (source != null) { - provider = new ObserveDataProvider(ObserveContext.get().getServices()); + provider = new ObserveDataProvider(source); setDataProvider(provider); } } @@ -515,8 +514,7 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { void setDataSource(DataSource source) { ObserveDataProvider provider = null; if (source != null) { - ObserveServiceFactory services = ObserveContext.newServiceFactory(source); - provider = new ObserveDataProvider(services); + provider = new ObserveDataProvider(source); } setDataProvider(provider); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java index c49db36..34a9a97 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java @@ -22,8 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.tree.loadors.ProgramLonglineNodeChildLoador; @@ -43,8 +44,8 @@ public class ProgramLonglineNode extends EntityNodeSupport<Program> { } @Override - protected Program getEntity(ObserveServiceFactory services) { - ReferentialService service = services.getService(ReferentialService.class); + protected Program loadEntity(DataSource dataSource) { + ReferentialService service = ObserveContext.getService(dataSource, ReferentialService.class); return service.getProgramStub(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java index 5eb32b3..40840ab 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java @@ -22,9 +22,10 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.referential.ReferentialService; import fr.ird.observe.ui.tree.loadors.ProgramSeineNodeChildLoador; @@ -43,8 +44,8 @@ public class ProgramSeineNode extends EntityNodeSupport<Program> { } @Override - protected Program getEntity(ObserveServiceFactory services) throws DataSourceException { - ReferentialService service = services.getService(ReferentialService.class); + protected Program loadEntity(DataSource dataSource) throws DataSourceException { + ReferentialService service = ObserveContext.getService(dataSource, ReferentialService.class); return service.getProgramStub(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java index 4c76293..ddb031c 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java @@ -22,8 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.Route; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.seine.RouteService; /** @@ -41,8 +42,8 @@ public class RouteSeineNode extends EntityNodeSupport<Route> { } @Override - protected Route getEntity(ObserveServiceFactory services) { - RouteService service = services.getService(RouteService.class); + protected Route loadEntity(DataSource dataSource) { + RouteService service = ObserveContext.getService(dataSource, RouteService.class); return service.getRouteStub(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java index 570f852..02bbf58 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java @@ -22,8 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.longline.SetLongline; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.longline.SetLonglineService; import fr.ird.observe.ui.tree.loadors.SetLonglineNodeChildLoador; @@ -42,8 +43,8 @@ public class SetLonglineNode extends EntityNodeSupport<SetLongline> { } @Override - protected SetLongline getEntity(ObserveServiceFactory services) { - SetLonglineService service = services.getService(SetLonglineService.class); + protected SetLongline loadEntity(DataSource dataSource) { + SetLonglineService service = ObserveContext.getService(dataSource, SetLonglineService.class); return service.loadForDisplay(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java index 25df6af..43ba7ba 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java @@ -22,8 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.SetSeine; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.seine.SetSeineService; import fr.ird.observe.ui.tree.loadors.SetSeineNodeChildLoador; @@ -42,8 +43,8 @@ public class SetSeineNode extends EntityNodeSupport<SetSeine> { } @Override - protected SetSeine getEntity(ObserveServiceFactory services) { - SetSeineService service = services.getService(SetSeineService.class); + protected SetSeine loadEntity(DataSource dataSource) { + SetSeineService service = ObserveContext.getService(dataSource, SetSeineService.class); return service.loadSet(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java index 22469d3..a9f1313 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java @@ -22,8 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.longline.TripLongline; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.longline.TripLonglineService; /** @@ -41,8 +42,8 @@ public class TripLonglineNode extends EntityNodeSupport<TripLongline> { } @Override - protected TripLongline getEntity(ObserveServiceFactory services) { - TripLonglineService service = services.getService(TripLonglineService.class); + protected TripLongline loadEntity(DataSource dataSource) { + TripLonglineService service = ObserveContext.getService(dataSource, TripLonglineService.class); return service.getTripLonglineStub(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java index 101b50a..ff853c4 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java @@ -22,8 +22,9 @@ package fr.ird.observe.ui.tree; * #L% */ +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.data.seine.TripSeineService; /** @@ -41,8 +42,8 @@ public class TripSeineNode extends EntityNodeSupport<TripSeine> { } @Override - protected TripSeine getEntity(ObserveServiceFactory services) { - TripSeineService service = services.getService(TripSeineService.class); + protected TripSeine loadEntity(DataSource dataSource) { + TripSeineService service = ObserveContext.getService(dataSource, TripSeineService.class); return service.getTripSeineStub(id); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java index 4e70b81..2649852 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java @@ -70,7 +70,7 @@ public class ActivityLonglineNodeChildLoador extends AbstractNodeChildLoador<Str { - ActivityLongline activity = ((ActivityLonglineNode) parentNode).getEntity(); + ActivityLongline activity = ((ActivityLonglineNode) parentNode).loadEntity(); SetLongline setLongline = activity.getSetLongline(); if (setLongline != null) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java index 3eb0898..b709497 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java @@ -74,7 +74,7 @@ public class ActivitySeineNodeChildLoador extends AbstractNodeChildLoador<Floati parentNode.add(child); - ActivitySeine activitySeine = ((ActivitySeineNode) parentNode).getEntity(); + ActivitySeine activitySeine = ((ActivitySeineNode) parentNode).loadEntity(); SetSeine set = activitySeine.getSetSeine(); if (set != null) { diff --git a/pom.xml b/pom.xml index 5971a43..f3e32b7 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,7 @@ <modules> <module>observe-entities</module> <module>observe-business</module> + <module>observe-services-api</module> <module>observe-services</module> <module>observe-validation</module> <module>observe-swing</module> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.