branch feature/7017 updated (ed69714 -> dcc1d1b)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7017 in repository observe. See http://git.codelutin.com/observe.git from ed69714 reformat code + improve TransmittingBuoyOperation api (refs #7017) new edb7f25 remove EntityAssociation (refs #7017) new dcc1d1b - creation du module observe-services-api - amélioration de la service factory pour ne plus utiliser la datasource en état refs #7017 The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit dcc1d1b78959d2de243f7e0481b5b514c72070bb 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 commit edb7f25f4c7f0961ca41851c26edf6e79a54924c Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 4 07:58:07 2015 +0200 remove EntityAssociation (refs #7017) Summary of changes: {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 +- .../fr/ird/observe/services/EntityAssociation.java | 39 --- ...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 + 79 files changed, 630 insertions(+), 599 deletions(-) copy {observe-services => observe-services-api}/pom.xml (95%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/Commit.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/NoTransaction.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/ObserveService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/ObserveServiceContext.java (100%) create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/ObserveServiceFactoryProvider.java rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/ReplicationService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/OpenableService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/TripService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/ActivityLonglineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/BaitsCompositionService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/BranchlinesCompositionService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/CatchLonglineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/EncounterService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/FloatlinesCompositionService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/GearUseFeaturesLonglineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/HooksCompositionService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/LonglineDetailCompositionService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/LonglineGlobalCompositionService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/SensorUsedService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/SetLonglineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/TdrService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/longline/TripLonglineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/ActivitySeineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/FloatingObjectService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/GearUseFeaturesSeineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/NonTargetCatchService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/NonTargetSampleService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/ObjectObservedSpeciesService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/ObjectSchoolEstimateService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/RouteService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/SchoolEstimateService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/SetSeineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/TargetCatchService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/TargetSampleService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/data/seine/TripSeineService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/model/DataSelectionModel.java (98%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/operation/ComputeDataService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/operation/GpsImportService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/operation/ObsoleteReferenceToReplace.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/operation/SynchronizeService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/operation/ValidationService.java (100%) rename {observe-services => observe-services-api}/src/main/java/fr/ird/observe/services/referential/ReferentialService.java (100%) delete mode 100644 observe-services/src/main/java/fr/ird/observe/services/EntityAssociation.java rename observe-services/src/main/java/fr/ird/observe/services/{ObserveServiceFactory.java => ObserveServiceFactoryProviderTopia.java} (53%) create mode 100644 observe-services/src/main/resources/META-INF/services/fr.ird.observe.services.ObserveServiceFactoryProvider -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
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 edb7f25f4c7f0961ca41851c26edf6e79a54924c Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon May 4 07:58:07 2015 +0200 remove EntityAssociation (refs #7017) --- .../fr/ird/observe/services/EntityAssociation.java | 39 ---------------------- 1 file changed, 39 deletions(-) diff --git a/observe-services/src/main/java/fr/ird/observe/services/EntityAssociation.java b/observe-services/src/main/java/fr/ird/observe/services/EntityAssociation.java deleted file mode 100644 index bac1fa9..0000000 --- a/observe-services/src/main/java/fr/ird/observe/services/EntityAssociation.java +++ /dev/null @@ -1,39 +0,0 @@ -package fr.ird.observe.services; - -import org.nuiton.topia.persistence.TopiaEntity; - -import java.util.ArrayList; -import java.util.Collection; - -/** - * Represents an entity with one of his association. - * - * Created on 4/28/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 4.0 - */ -public class EntityAssociation<P extends TopiaEntity, C extends TopiaEntity> { - - protected final P parentEntity; - - protected final Collection<C> childEntities; - - public EntityAssociation(P parentEntity) { - this.parentEntity = parentEntity; - this.childEntities = new ArrayList<C>(); - } - - public P getParentEntity() { - return parentEntity; - } - - public Collection<C> getChildEntities() { - return childEntities; - } - - public void addChildEntity(C entity) { - childEntities.add(entity); - } - -} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
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 dcc1d1b78959d2de243f7e0481b5b514c72070bb 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>.
participants (1)
-
codelutin.com scm