branch feature/7464 updated (5df123c -> 6a050ce)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7464 in repository observe. See http://git.codelutin.com/observe.git from 5df123c mise en forme du service de migration + debut de migration des tag values new d9dca27 On passe sur topia 3.1-SNAPSHOT new 3846c11 Ajout d'une dépendance sur le service de replication dans le module entities new 070cd2b Ajout dépendances sur les drivers jdbc utilisés new 60b4dd0 Utilisation des bonnes tag values new fb19241 Exposition des services utilisables sur le context applicatif de topia new 75dc734 Ajout du nom de la base h2 à utiliser dans la configuration new c27f774 Suppresion de la dépendance sur observe-business dans le module d'implantation des services topia new 59ae183 Deplacement de constantes + utilisation du mode autoMigrate dans la migration new 6a050ce Debut de boot avec topia 3.0, reste à écrire la logique d'ouverture ou création de base The 9 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 6a050ce04e1bf7905e123a1afc0a9dc203987883 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 19:14:34 2015 +0200 Debut de boot avec topia 3.0, reste à écrire la logique d'ouverture ou création de base commit 59ae183e1464c101d2c3af100c70df3e1685a78d Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 19:07:30 2015 +0200 Deplacement de constantes + utilisation du mode autoMigrate dans la migration commit c27f774f4574647793f0696495ca62c812982ffb Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 19:06:20 2015 +0200 Suppresion de la dépendance sur observe-business dans le module d'implantation des services topia commit 75dc73427d5707e6b72f99d02c0ff17a5ffd7b8b Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:57:17 2015 +0200 Ajout du nom de la base h2 à utiliser dans la configuration commit fb19241efa94c28b66a7c8538b2b43f9e4502078 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:56:46 2015 +0200 Exposition des services utilisables sur le context applicatif de topia commit 60b4dd007b04a572763069b8931b7a0da3d0ad10 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:56:12 2015 +0200 Utilisation des bonnes tag values commit 070cd2bbe45a780f69189e2068f7134ef301542d Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:55:38 2015 +0200 Ajout dépendances sur les drivers jdbc utilisés commit 3846c11d8d78df19d0a811c2abd01495d0e306af Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:55:08 2015 +0200 Ajout d'une dépendance sur le service de replication dans le module entities commit d9dca27050a38faa5af33ec1d91e63fc4023005e Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:54:34 2015 +0200 On passe sur topia 3.1-SNAPSHOT Summary of changes: observe-entities/pom.xml | 4 + .../observe/ObserveTopiaApplicationContext.java | 45 ++++-- .../migration/AbstractDataSourceMigration.java | 23 +-- .../src/main/xmi/observe-common.properties | 11 +- .../src/main/xmi/observe-seine.properties | 19 +-- .../ObserveDataSourceConfigurationTopiaH2.java | 9 ++ observe-services-topia/pom.xml | 28 ++-- .../services/ObserveServiceContextTopia.java | 39 +++-- .../services/ObserveServiceFactoryTopia.java | 180 +++++++++++++++------ .../ird/observe/services/ObserveServiceTopia.java | 27 ++-- .../services/service/DataSourceServiceTopia.java | 48 ++++++ .../services/ObserveServiceFactoryTopiaTaiste.java | 21 +-- .../service/ApplicationContextResource.java | 31 ++-- .../services/service/DataSourceResource.java | 87 +++++----- .../service/ReferentialServiceTopiaTest.java | 28 ++-- pom.xml | 6 +- 16 files changed, 364 insertions(+), 242 deletions(-) create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit d9dca27050a38faa5af33ec1d91e63fc4023005e Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:54:34 2015 +0200 On passe sur topia 3.1-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 13180f4..84d67f3 100644 --- a/pom.xml +++ b/pom.xml @@ -119,7 +119,7 @@ <eugenePluginVersion>3.0-SNAPSHOT</eugenePluginVersion> - <topiaVersion>3.0</topiaVersion> + <topiaVersion>3.1-SNAPSHOT</topiaVersion> <jaxxVersion>2.24</jaxxVersion> <nuitonI18nVersion>3.3</nuitonI18nVersion> <nuitonValidatorVersion>3.0</nuitonValidatorVersion> -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit 3846c11d8d78df19d0a811c2abd01495d0e306af Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:55:08 2015 +0200 Ajout d'une dépendance sur le service de replication dans le module entities --- observe-entities/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/observe-entities/pom.xml b/observe-entities/pom.xml index 1695e9d..9a144a5 100644 --- a/observe-entities/pom.xml +++ b/observe-entities/pom.xml @@ -88,6 +88,10 @@ <groupId>org.nuiton.topia</groupId> <artifactId>topia-service-migration</artifactId> </dependency> + <dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-service-replication</artifactId> + </dependency> <dependency> <groupId>org.hibernate</groupId> -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit 070cd2bbe45a780f69189e2068f7134ef301542d Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:55:38 2015 +0200 Ajout dépendances sur les drivers jdbc utilisés --- observe-services-topia/pom.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/observe-services-topia/pom.xml b/observe-services-topia/pom.xml index ecc1160..3c7fd4f 100644 --- a/observe-services-topia/pom.xml +++ b/observe-services-topia/pom.xml @@ -94,6 +94,15 @@ <artifactId>topia-service-replication</artifactId> </dependency--> + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + </dependency> + <dependency> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + </dependency> + <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit 60b4dd007b04a572763069b8931b7a0da3d0ad10 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:56:12 2015 +0200 Utilisation des bonnes tag values --- .../src/main/xmi/observe-common.properties | 11 +++-------- .../src/main/xmi/observe-seine.properties | 19 +++++-------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/observe-entities/src/main/xmi/observe-common.properties b/observe-entities/src/main/xmi/observe-common.properties index 39cc2b6..60a2f53 100644 --- a/observe-entities/src/main/xmi/observe-common.properties +++ b/observe-entities/src/main/xmi/observe-common.properties @@ -42,14 +42,9 @@ package.fr.ird.observe.entities.tagvalue.dbSchema=OBSERVE_COMMON ### Champ Commentaire en text ################################################# ############################################################################### -#FIXME -fr.ird.observe.entities.CommentableEntity.attribute.comment.tagvalue.type=text -fr.ird.observe.entities.referentiel.Vessel.attribute.comment.tagvalue.type=text -fr.ird.observe.entities.referentiel.Program.attribute.comment.tagvalue.type=text - -#fr.ird.observe.entities.CommentableEntity.attribute.comment.tagValue.hibernateAttributeType.java.lang.String=text -#fr.ird.observe.entities.referentiel.Vessel.attribute.comment.tagValue.hibernateAttributeType.java.lang.String=text -#fr.ird.observe.entities.referentiel.Program.attribute.comment.tagValue.hibernateAttributeType.java.lang.String=text +fr.ird.observe.entities.CommentableEntity.attribute.comment.tagValue.hibernateAttributeType.String=text +fr.ird.observe.entities.referentiel.Vessel.attribute.comment.tagValue.hibernateAttributeType.String=text +fr.ird.observe.entities.referentiel.Program.attribute.comment.tagValue.hibernateAttributeType.String=text ############################################################################### ### Champ Numeric (utilisation du type sql numeric) ########################### diff --git a/observe-entities/src/main/xmi/observe-seine.properties b/observe-entities/src/main/xmi/observe-seine.properties index af310af..ed29a3a 100644 --- a/observe-entities/src/main/xmi/observe-seine.properties +++ b/observe-entities/src/main/xmi/observe-seine.properties @@ -87,25 +87,16 @@ fr.ird.observe.entities.seine.TargetLength.attribute.weight.tagvalue.sqlType=num ### Champ Date (utilisation du type sql date) ################################# ############################################################################### -#FIXME -fr.ird.observe.entities.seine.TripSeine.attribute.startDate.tagvalue.type=date -fr.ird.observe.entities.seine.TripSeine.attribute.endDate.tagvalue.type=date -fr.ird.observe.entities.seine.Route.attribute.date.tagvalue.type=date - -#fr.ird.observe.entities.seine.TripSeine.attribute.startDate.tagValue.hibernateAttributeType.java.util.Date=date -#fr.ird.observe.entities.seine.TripSeine.attribute.endDate.tagValue.hibernateAttributeType.java.util.Date=date -#fr.ird.observe.entities.seine.Route.attribute.date.tagValue.hibernateAttributeType.java.util.Date +fr.ird.observe.entities.seine.TripSeine.attribute.startDate.tagValue.hibernateAttributeType.java.util.Date=date +fr.ird.observe.entities.seine.TripSeine.attribute.endDate.tagValue.hibernateAttributeType.java.util.Date=date +fr.ird.observe.entities.seine.Route.attribute.date.tagValue.hibernateAttributeType.java.util.Date=date ############################################################################### ### Champ Time (utilisation du type sql time ) ################################ ############################################################################### -#FIXME -fr.ird.observe.entities.seine.ActivitySeine.attribute.time.tagvalue.type=time -fr.ird.observe.entities.seine.SetSeine.attribute.startTime.tagvalue.type=time - -#fr.ird.observe.entities.seine.SetSeine.attribute.startTime.tagValue.hibernateAttributeType.java.util.Date=time -#fr.ird.observe.entities.seine.ActivitySeine.attribute.time.tagValue.hibernateAttributeType.java.util.Date=time +fr.ird.observe.entities.seine.SetSeine.attribute.startTime.tagValue.hibernateAttributeType.java.util.Date=time +fr.ird.observe.entities.seine.ActivitySeine.attribute.time.tagValue.hibernateAttributeType.java.util.Date=time ############################################################################### ### Données lazy ############################################################## -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit fb19241efa94c28b66a7c8538b2b43f9e4502078 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:56:46 2015 +0200 Exposition des services utilisables sur le context applicatif de topia --- .../observe/ObserveTopiaApplicationContext.java | 51 ++++++++++++++-------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java index 55d0b46..38b05ea 100644 --- a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java +++ b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java @@ -1,35 +1,50 @@ package fr.ird.observe; +import fr.ird.observe.entities.migration.ObserveMigrationEngine; import org.nuiton.topia.persistence.TopiaConfiguration; - -import java.util.Map; -import java.util.Properties; +import org.nuiton.topia.replication.TopiaReplicationService; public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicationContext { - private boolean autoMigrate; + public static final String MIGRATION_SERVICE_NAME = "migration"; - @Deprecated - public ObserveTopiaApplicationContext(Properties properties) { - super(properties); - } + public static final String REPLICATION_SERVICE_NAME = "replication"; - @Deprecated - public ObserveTopiaApplicationContext(Map<String, String> configuration) { - super(configuration); - } +// //FIXME Voir comment remplir ça. +// protected boolean autoMigrate; + + /** + * Mise à {@code true} quand au moins une connection a été effectuée. + */ + protected boolean open; public ObserveTopiaApplicationContext(TopiaConfiguration topiaConfiguration) { super(topiaConfiguration); } - public boolean isAutoMigrate() { - return autoMigrate; +// public boolean isAutoMigrate() { +// return autoMigrate; +// } +// +// public void setAutoMigrate(boolean autoMigrate) { +// this.autoMigrate = autoMigrate; +// } + + public boolean isOpen() { + //FIXME utiliser le flag open + return !isClosed(); + } + + public void setOpen(boolean open) { + this.open = open; + } + + public ObserveMigrationEngine getMigrationService() { + return getServices(ObserveMigrationEngine.class).get(MIGRATION_SERVICE_NAME); } - //FIXME Voir comment remplir ça. - public void setAutoMigrate(boolean autoMigrate) { - this.autoMigrate = autoMigrate; + public TopiaReplicationService getReplicationService() { + return getServices(TopiaReplicationService.class).get(REPLICATION_SERVICE_NAME); } -} + } -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit 75dc73427d5707e6b72f99d02c0ff17a5ffd7b8b Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 18:57:17 2015 +0200 Ajout du nom de la base h2 à utiliser dans la configuration --- .../configuration/ObserveDataSourceConfigurationTopiaH2.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java index 59d029c..1b96533 100644 --- a/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java +++ b/observe-services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java @@ -16,6 +16,15 @@ public class ObserveDataSourceConfigurationTopiaH2 extends ObserveDataSourceConf * Le répertoire où se trouve la base (le nom de la base est {@code obstuna}). */ protected File directory; + protected String dbName; + + public String getDbName() { + return dbName; + } + + public void setDbName(String dbName) { + this.dbName = dbName; + } public File getDirectory() { return directory; -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit c27f774f4574647793f0696495ca62c812982ffb Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 19:06:20 2015 +0200 Suppresion de la dépendance sur observe-business dans le module d'implantation des services topia --- observe-services-topia/pom.xml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/observe-services-topia/pom.xml b/observe-services-topia/pom.xml index 3c7fd4f..a067f30 100644 --- a/observe-services-topia/pom.xml +++ b/observe-services-topia/pom.xml @@ -43,17 +43,6 @@ <artifactId>observe-entities</artifactId> <version>${project.version}</version> </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>observe-business</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>observe-business</artifactId> - <version>${project.version}</version> - <classifier>tests</classifier> - </dependency> <!-- commons dependencies --> @@ -89,10 +78,14 @@ <groupId>org.nuiton.topia</groupId> <artifactId>topia-persistence</artifactId> </dependency> - <!--dependency> + <dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-service-migration</artifactId> + </dependency> + <dependency> <groupId>org.nuiton.topia</groupId> <artifactId>topia-service-replication</artifactId> - </dependency--> + </dependency> <dependency> <groupId>com.h2database</groupId> -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit 59ae183e1464c101d2c3af100c70df3e1685a78d Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 19:07:30 2015 +0200 Deplacement de constantes + utilisation du mode autoMigrate dans la migration --- .../observe/ObserveTopiaApplicationContext.java | 24 +++++++++++++--------- .../migration/AbstractDataSourceMigration.java | 23 +-------------------- 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java index 38b05ea..cff5f03 100644 --- a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java +++ b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java @@ -10,8 +10,12 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat public static final String REPLICATION_SERVICE_NAME = "replication"; -// //FIXME Voir comment remplir ça. -// protected boolean autoMigrate; + public static final String DB_VERSION = "db.version"; + + public static final String AUTO_MIGRATE = "auto.migrate"; + + //FIXME Voir comment remplir ça. + protected boolean autoMigrate; /** * Mise à {@code true} quand au moins une connection a été effectuée. @@ -22,13 +26,13 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat super(topiaConfiguration); } -// public boolean isAutoMigrate() { -// return autoMigrate; -// } -// -// public void setAutoMigrate(boolean autoMigrate) { -// this.autoMigrate = autoMigrate; -// } + public boolean isAutoMigrate() { + return autoMigrate; + } + + public void setAutoMigrate(boolean autoMigrate) { + this.autoMigrate = autoMigrate; + } public boolean isOpen() { //FIXME utiliser le flag open @@ -47,4 +51,4 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat return getServices(TopiaReplicationService.class).get(REPLICATION_SERVICE_NAME); } - } +} diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/migration/AbstractDataSourceMigration.java b/observe-entities/src/main/java/fr/ird/observe/entities/migration/AbstractDataSourceMigration.java index 1464c00..6294e0c 100644 --- a/observe-entities/src/main/java/fr/ird/observe/entities/migration/AbstractDataSourceMigration.java +++ b/observe-entities/src/main/java/fr/ird/observe/entities/migration/AbstractDataSourceMigration.java @@ -46,10 +46,6 @@ public abstract class AbstractDataSourceMigration extends TopiaMigrationCallback static private Log log = LogFactory.getLog(AbstractDataSourceMigration.class); - public static final String DB_VERSION = "db.version"; - - public static final String AUTO_MIGRATE = "auto.migrate"; - public static final Version V_3_0 = Versions.valueOf("3.0"); public static final Version V_3_1 = Versions.valueOf("3.1"); @@ -96,16 +92,6 @@ public abstract class AbstractDataSourceMigration extends TopiaMigrationCallback protected ObserveTopiaApplicationContext topiaApplicationContext; -// private static Supplier<ApplicationConfig> applicationConfigSupplier; -// -// public static void setApplicationConfigSupplier(Supplier<ApplicationConfig> applicationConfigSupplier) { -// AbstractDataSourceMigration.applicationConfigSupplier = applicationConfigSupplier; -// } -// -// public static Supplier<ApplicationConfig> getApplicationConfigSupplier() { -// return applicationConfigSupplier; -// } - protected AbstractDataSourceMigration(MigrationCallBackForVersionResolver callBackResolver) { super(callBackResolver); @@ -137,15 +123,8 @@ public abstract class AbstractDataSourceMigration extends TopiaMigrationCallback boolean autoMigrate = topiaApplicationContext.isAutoMigrate(); -// Preconditions.checkNotNull(applicationConfigSupplier); -// ApplicationConfig config = applicationConfigSupplier.get(); -// ApplicationConfig config = -// ObserveServiceHelper.get().getContextValue( -// ApplicationConfig.class); -// boolean autoMigrate = config.getOptionAsBoolean(AUTO_MIGRATE); - if (autoMigrate) { - // auto-migration + if (log.isInfoEnabled()) { log.info("auto migrate mode"); } -- 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/7464 in repository observe. See http://git.codelutin.com/observe.git commit 6a050ce04e1bf7905e123a1afc0a9dc203987883 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 21 19:14:34 2015 +0200 Debut de boot avec topia 3.0, reste à écrire la logique d'ouverture ou création de base --- .../services/ObserveServiceContextTopia.java | 39 +++-- .../services/ObserveServiceFactoryTopia.java | 180 +++++++++++++++------ .../ird/observe/services/ObserveServiceTopia.java | 27 ++-- .../services/service/DataSourceServiceTopia.java | 48 ++++++ .../services/ObserveServiceFactoryTopiaTaiste.java | 21 +-- .../service/ApplicationContextResource.java | 31 ++-- .../services/service/DataSourceResource.java | 87 +++++----- .../service/ReferentialServiceTopiaTest.java | 28 ++-- pom.xml | 4 +- 9 files changed, 294 insertions(+), 171 deletions(-) diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java index d6bad44..960a636 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceContextTopia.java @@ -1,9 +1,9 @@ package fr.ird.observe.services; +import fr.ird.observe.ObserveTopiaApplicationContext; +import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaSupport; import fr.ird.observe.services.dto.constants.ReferentialLocale; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.framework.TopiaContextImplementor; import java.util.Date; @@ -18,22 +18,14 @@ public class ObserveServiceContextTopia implements ObserveServiceContext { protected ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration; - protected TopiaContext topiaPersistenceContext; + protected ObserveTopiaPersistenceContext topiaPersistenceContext; - protected TopiaContextImplementor topiaApplicationContext; + protected ObserveTopiaApplicationContext topiaApplicationContext; - public TopiaContextImplementor getTopiaApplicationContext() { + public ObserveTopiaApplicationContext getTopiaApplicationContext() { return topiaApplicationContext; } - public TopiaContext getTopiaPersistenceContext() { - return topiaPersistenceContext; - } - - public void setTopiaPersistenceContext(TopiaContext topiaPersistenceContext) { - this.topiaPersistenceContext = topiaPersistenceContext; - } - @Override public ReferentialLocale getReferentialLocale() { return applicationContext.getReferentialLocale(); @@ -44,6 +36,22 @@ public class ObserveServiceContextTopia implements ObserveServiceContext { return new Date(); } + public ObserveServiceApplicationContext getApplicationContext() { + return applicationContext; + } + + public ObserveTopiaPersistenceContext getTopiaPersistenceContext() { + return topiaPersistenceContext; + } + + public void setTopiaPersistenceContext(ObserveTopiaPersistenceContext topiaPersistenceContext) { + this.topiaPersistenceContext = topiaPersistenceContext; + } + + public void setTopiaApplicationContext(ObserveTopiaApplicationContext topiaApplicationContext) { + this.topiaApplicationContext = topiaApplicationContext; + } + public void setApplicationContext(ObserveServiceApplicationContext applicationContext) { this.applicationContext = applicationContext; } @@ -52,12 +60,9 @@ public class ObserveServiceContextTopia implements ObserveServiceContext { this.dataSourceConfiguration = dataSourceConfiguration; } - public void setTopiaApplicationContext(TopiaContextImplementor topiaApplicationContext) { - this.topiaApplicationContext = topiaApplicationContext; - } public void closeTopiaPersistenceContext() { - topiaPersistenceContext.closeContext(); + topiaPersistenceContext.close(); topiaPersistenceContext = null; } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java index 13bc86b..9da62c1 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceFactoryTopia.java @@ -4,15 +4,15 @@ 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.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.reflect.Reflection; -import fr.ird.observe.ObserveTechnicalException; -import fr.ird.observe.db.DataSourceFactory; -import fr.ird.observe.db.constants.CommonDataSourceConfigParam; -import fr.ird.observe.db.impl.H2DataSourceConfig; -import fr.ird.observe.db.impl.H2DataSourceConfigParam; -import fr.ird.observe.db.impl.PGDataSourceConfig; -import fr.ird.observe.db.impl.PGDataSourceConfigParam; +import fr.ird.observe.ObserveTopiaApplicationContext; +import fr.ird.observe.ObserveTopiaIdFactory; +import fr.ird.observe.ObserveTopiaPersistenceContext; +import fr.ird.observe.entities.migration.H2DataSourceMigration; +import fr.ird.observe.entities.migration.ObserveMigrationEngine; +import fr.ird.observe.entities.migration.PGDataSourceMigration; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; @@ -21,13 +21,19 @@ import fr.ird.observe.services.spi.NoDataAccess; import fr.ird.observe.services.spi.Write; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.topia.persistence.BeanTopiaConfiguration; +import org.nuiton.topia.persistence.TopiaApplicationContext; +import org.nuiton.topia.persistence.TopiaConfiguration; +import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; +import org.nuiton.topia.persistence.jdbc.JdbcConfigurationBuilder; +import org.nuiton.topia.replication.TopiaReplicationServiceImpl; import java.io.Closeable; +import java.io.File; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Collections; import java.util.Set; import java.util.concurrent.ExecutionException; @@ -40,25 +46,62 @@ import java.util.concurrent.ExecutionException; */ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport implements Closeable { + /** l'url d'acces a la base locale */ + public static final String h2LocalUrl = + "jdbc:h2:file:%s;" + + // on peut aussi utiliser file, socket + "FILE_LOCK=file;" + + //1 or 2 is needed to restore avec crash + // 0: logging is disabled (faster), + // 1: logging of the data is enabled, but logging of the index + // changes is disabled (default), 2: logging of both data and index + // changes are enabled + "LOG=0;" + + // on peut aussi utiliser hsqldb, mysql ou postgresql + "MODE=postgresql;" + + //"MODE=hsqldb;" + + // Sets the default lock timeout (in milliseconds) in this + // database that is used for the new sessions. + "DEFAULT_LOCK_TIMEOUT=2000;" + + // -1: the database is never closed until the close delay is set to + // some other rev or SHUTDOWN is called., 0: no delay (default; the + // database is closed if the last connection to it is closed)., n: + // the database is left open for n second after the last connection + // is closed. + "DB_CLOSE_DELAY=0;" + + // 0: no locking (should only be used for testing), + // 1: table level locking (default), + // 2: table level locking with garbage collection (if the + // application does not close all connections). + // LOCK_MODE 3 (READ_COMMITTED). Table level locking, but only when + // writing (no read locks). + "LOCK_MODE=3;" + + // Levels: 0=off, 1=error, 2=info, 3=debug. + "TRACE_LEVEL_FILE=0;" + + // on system.out: 0=off, 1=error, 2=info, 3=debug. + "TRACE_LEVEL_SYSTEM_OUT=0;" + + // maximumn cache to improve performance... + "CACHE_SIZE=65536"; + /** Logger. */ private static final Log log = LogFactory.getLog(ObserveServiceFactoryTopia.class); protected static final LoadingCache<Class<?>, Class<?>> serviceTypeCache = newServiceImplementationTypesCache("Topia"); - protected final LoadingCache<ObserveDataSourceConfigurationTopiaSupport, TopiaContextImplementor> topiaApplicationContextCache = CacheBuilder + protected final LoadingCache<ObserveDataSourceConfigurationTopiaSupport, ObserveTopiaApplicationContext> topiaApplicationContextCache = CacheBuilder .newBuilder() - .build(new CacheLoader<ObserveDataSourceConfigurationTopiaSupport, TopiaContextImplementor>() { + .build(new CacheLoader<ObserveDataSourceConfigurationTopiaSupport, ObserveTopiaApplicationContext>() { @Override - public TopiaContextImplementor load(ObserveDataSourceConfigurationTopiaSupport key) throws Exception { + public ObserveTopiaApplicationContext load(ObserveDataSourceConfigurationTopiaSupport key) throws Exception { - TopiaContextImplementor dataSource = null; + ObserveTopiaApplicationContext dataSource = null; if (key instanceof ObserveDataSourceConfigurationTopiaH2) { - dataSource = createH2DataSource((ObserveDataSourceConfigurationTopiaH2) key); + dataSource = createTopiaApplicationContext((ObserveDataSourceConfigurationTopiaH2) key); } if (key instanceof ObserveDataSourceConfigurationTopiaPG) { - dataSource = createPGDataSource((ObserveDataSourceConfigurationTopiaPG) key); + dataSource = createTopiaApplicationContext((ObserveDataSourceConfigurationTopiaPG) key); } Preconditions.checkState(dataSource != null, "No dataSource found for configuration: " + key); @@ -66,6 +109,8 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport imp } }); + protected final JdbcConfigurationBuilder jdbcConfigurationBuilder = new JdbcConfigurationBuilder(); + @Override public <S extends ObserveService> boolean accept(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { @@ -102,56 +147,87 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport imp serviceContext.setDataSourceConfiguration(dataSourceConfigurationTopia); - TopiaContextImplementor dataSource = getDataSource(dataSourceConfigurationTopia); + ObserveTopiaApplicationContext dataSource = getTopiaApplicationContext(dataSourceConfigurationTopia); serviceContext.setTopiaApplicationContext(dataSource); return serviceContext; } - protected TopiaContextImplementor createPGDataSource(ObserveDataSourceConfigurationTopiaPG key) { - - PGDataSourceConfig result = DataSourceFactory.newPGConfig( - key.getLabel(), - CommonDataSourceConfigParam.LOGIN, key.getUsername(), - CommonDataSourceConfigParam.PASSWORD, key.getPassword(), - CommonDataSourceConfigParam.CAN_MIGRATE, key.isCanMigrate(), - CommonDataSourceConfigParam.SHOW_MIGRATION_PROGRESSION, key.isShowMigrationProgression(), - CommonDataSourceConfigParam.SHOW_MIGRATION_SQL, key.isShowMigrationSql(), - PGDataSourceConfigParam.URL, key.getJdbcUrl(), - PGDataSourceConfigParam.USE_SSL, key.isUseSsl() - ); - - //TODO - TopiaContextImplementor topiaApplicationContext = null; + protected ObserveTopiaApplicationContext createTopiaApplicationContext(ObserveDataSourceConfigurationTopiaPG configuration) { + + TopiaConfiguration topiaConfiguration = getTopiaConfiguration(configuration); + + if (log.isInfoEnabled()) { + log.info("PG Topia configuration: " + topiaConfiguration); + } + + ObserveTopiaApplicationContext topiaApplicationContext = new ObserveTopiaApplicationContext(topiaConfiguration); return topiaApplicationContext; } - protected TopiaContextImplementor createH2DataSource(ObserveDataSourceConfigurationTopiaH2 key) { + protected TopiaConfiguration getTopiaConfiguration(ObserveDataSourceConfigurationTopiaPG configuration) { - H2DataSourceConfig result = DataSourceFactory.newH2Config( - key.getLabel(), - CommonDataSourceConfigParam.LOGIN, key.getUsername(), - CommonDataSourceConfigParam.PASSWORD, key.getPassword(), - CommonDataSourceConfigParam.CAN_MIGRATE, key.isCanMigrate(), - CommonDataSourceConfigParam.SHOW_MIGRATION_PROGRESSION, key.isShowMigrationProgression(), - CommonDataSourceConfigParam.SHOW_MIGRATION_SQL, key.isShowMigrationSql(), - H2DataSourceConfigParam.DIRECTORY, key.getDirectory() - ); + JdbcConfiguration jdbcConfiguration = getJdbcConfiguration(configuration, configuration.getJdbcUrl()); + + BeanTopiaConfiguration topiaConfiguration = new BeanTopiaConfiguration(jdbcConfiguration); + topiaConfiguration.setTopiaIdFactoryClass(ObserveTopiaIdFactory.class); + topiaConfiguration.setInitSchema(false); + topiaConfiguration.setValidateSchema(false); + + ImmutableMap<String, String> migrationServiceConfiguration = ImmutableMap.of(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME + '.' + ObserveMigrationEngine.MIGRATION_CALLBACK, PGDataSourceMigration.class.getName()); + topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME, ObserveMigrationEngine.class, migrationServiceConfiguration); + topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.REPLICATION_SERVICE_NAME, TopiaReplicationServiceImpl.class, Collections.<String, String>emptyMap()); + return topiaConfiguration; + } + + protected JdbcConfiguration getJdbcConfiguration(ObserveDataSourceConfigurationTopiaPG configuration, String jdbcUrl) { + return jdbcConfigurationBuilder.forH2Database(jdbcUrl, + configuration.getUsername(), + String.valueOf(configuration.getPassword())); + } - //TODO - TopiaContextImplementor topiaApplicationContext = null; + protected ObserveTopiaApplicationContext createTopiaApplicationContext(ObserveDataSourceConfigurationTopiaH2 configuration) { + + TopiaConfiguration topiaConfiguration = getTopiaConfiguration(configuration); + + if (log.isInfoEnabled()) { + log.info("H2 Topia configuration: " + topiaConfiguration); + } + ObserveTopiaApplicationContext topiaApplicationContext = new ObserveTopiaApplicationContext(topiaConfiguration); return topiaApplicationContext; } - protected TopiaContextImplementor getDataSource(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { + protected TopiaConfiguration getTopiaConfiguration(ObserveDataSourceConfigurationTopiaH2 configuration) { + + String dbPath = new File(configuration.getDirectory(), configuration.getDbName()).getPath(); + + String jdbcUrl = String.format(h2LocalUrl, dbPath); + + JdbcConfiguration jdbcConfiguration = jdbcConfigurationBuilder.forH2Database(jdbcUrl, + configuration.getUsername(), + String.valueOf(configuration.getPassword())); + + BeanTopiaConfiguration topiaConfiguration = new BeanTopiaConfiguration(jdbcConfiguration); + topiaConfiguration.setTopiaIdFactoryClass(ObserveTopiaIdFactory.class); + topiaConfiguration.setInitSchema(false); + topiaConfiguration.setValidateSchema(false); + + ImmutableMap<String, String> migrationServiceConfiguration = ImmutableMap.of(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME + '.' + ObserveMigrationEngine.MIGRATION_CALLBACK, H2DataSourceMigration.class.getName()); + topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME, ObserveMigrationEngine.class, migrationServiceConfiguration); + topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.REPLICATION_SERVICE_NAME, TopiaReplicationServiceImpl.class, Collections.<String, String>emptyMap()); + return topiaConfiguration; + } + + protected ObserveTopiaApplicationContext getTopiaApplicationContext(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { try { - TopiaContextImplementor dataSource = topiaApplicationContextCache.get(dataSourceConfiguration); + ObserveTopiaApplicationContext dataSource = topiaApplicationContextCache.get(dataSourceConfiguration); return dataSource; } catch (ExecutionException e) { - throw new ObserveTechnicalException("Could not get dataSource for configuration: " + dataSourceConfiguration, e); + //FIXME Avoir une vraie execption + throw new RuntimeException("Could not get dataSource for configuration: " + dataSourceConfiguration, e); } } @@ -167,11 +243,11 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport imp @Override public void close() { - for (TopiaContextImplementor dataSource : topiaApplicationContextCache.asMap().values()) { + for (TopiaApplicationContext dataSource : topiaApplicationContextCache.asMap().values()) { if (!dataSource.isClosed()) { try { - dataSource.closeContext(); + dataSource.close(); } catch (Exception e) { if (log.isErrorEnabled()) { log.error("Could not close data source: " + dataSource, e); @@ -241,9 +317,9 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport imp protected Object invokeMethodWithTransaction(Method method, Object... args) throws Throwable { - TopiaContextImplementor source = serviceContext.getTopiaApplicationContext(); + ObserveTopiaApplicationContext source = serviceContext.getTopiaApplicationContext(); - TopiaContext topiaPersistenceContext = source.beginTransaction(); + ObserveTopiaPersistenceContext topiaPersistenceContext = source.newPersistenceContext(); try { @@ -254,7 +330,7 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport imp if (method.isAnnotationPresent(Write.class)) { // do commit - topiaPersistenceContext.commitTransaction(); + topiaPersistenceContext.commit(); } @@ -265,7 +341,7 @@ public class ObserveServiceFactoryTopia extends ObserveServiceFactorySupport imp try { // always rollback transaction to avoid dirty transactions - topiaPersistenceContext.rollbackTransaction(); + topiaPersistenceContext.rollback(); } finally { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java index b17e2b5..475f6b5 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java @@ -3,15 +3,14 @@ package fr.ird.observe.services; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import fr.ird.observe.ObserveDAOHelper; +import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ObserveDtosInitializer; import fr.ird.observe.services.dto.ObserveModelInitializerRunner; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.service.DataNotFoundException; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; import java.util.List; @@ -74,15 +73,15 @@ public class ObserveServiceTopia implements ObserveService { } protected <E extends TopiaEntity> List<E> loadEntities(Class<E> entityType) { - TopiaContext transaction = serviceContext.getTopiaPersistenceContext(); - TopiaDAO<E> dao = ObserveDAOHelper.getDAO(transaction, entityType); + ObserveTopiaPersistenceContext transaction = serviceContext.getTopiaPersistenceContext(); + TopiaDao<E> dao = transaction.getDao(entityType); List<E> entities = dao.findAll(); return entities; } protected <D extends ReferentialDto, E extends TopiaEntity> E loadEntity(Class<D> dtoType, Class<E> entityType, String id) { - TopiaContext transaction = serviceContext.getTopiaPersistenceContext(); - TopiaDAO<E> dao = ObserveDAOHelper.getDAO(transaction, entityType); + ObserveTopiaPersistenceContext transaction = serviceContext.getTopiaPersistenceContext(); + TopiaDao<E> dao = transaction.getDao(entityType); E entity = dao.findByTopiaId(id); if (entity == null) { throw new DataNotFoundException(dtoType, id); @@ -91,24 +90,24 @@ public class ObserveServiceTopia implements ObserveService { } public <E extends TopiaEntity> E newEntity(Class<E> entityType) { - TopiaContext transaction = serviceContext.getTopiaPersistenceContext(); - TopiaDAO<E> dao = ObserveDAOHelper.getDAO(transaction, entityType); + ObserveTopiaPersistenceContext transaction = serviceContext.getTopiaPersistenceContext(); + TopiaDao<E> dao = transaction.getDao(entityType); E entity = dao.newInstance(); return entity; } protected <E extends TopiaEntity> E saveEntity(Class<E> entityType, E entity) { - TopiaContext transaction = serviceContext.getTopiaPersistenceContext(); - TopiaDAO<E> dao = ObserveDAOHelper.getDAO(transaction, entityType); + ObserveTopiaPersistenceContext transaction = serviceContext.getTopiaPersistenceContext(); + TopiaDao<E> dao = transaction.getDao(entityType); entity = dao.update(entity); return entity; } protected <D extends ReferentialDto, E extends TopiaEntity> void deleteEntity(Class<D> dtoType, Class<E> entityType, Iterable<String> ids) { - TopiaContext transaction = serviceContext.getTopiaPersistenceContext(); - TopiaDAO<E> dao = ObserveDAOHelper.getDAO(transaction, entityType); + ObserveTopiaPersistenceContext transaction = serviceContext.getTopiaPersistenceContext(); + TopiaDao<E> dao = transaction.getDao(entityType); for (String id : ids) { - E entity = dao.findByTopiaId(id); + E entity = dao.forTopiaIdEquals(id).findUniqueOrNull(); if (entity == null) { throw new DataNotFoundException(dtoType, id); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java new file mode 100644 index 0000000..f3b58e6 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -0,0 +1,48 @@ +package fr.ird.observe.services.service; + +import fr.ird.observe.services.ObserveServiceContext; +import fr.ird.observe.services.ObserveServiceTopia; + +/** + * Created on 21/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DataSourceServiceTopia extends ObserveServiceTopia implements DataSourceService { + + @Override + public boolean exist() { + return false; + } + + @Override + public void create() { + + } + + @Override + public void open() { + + } + + @Override + public void close() { + + } + + @Override + public boolean canConnect() { + + return false; + } + + @Override + public void destroy() { + + } + + @Override + public void setServiceContext(ObserveServiceContext serviceContext) { + + } +} diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceFactoryTopiaTaiste.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceFactoryTopiaTaiste.java index 6781edb..5f784c5 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceFactoryTopiaTaiste.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ObserveServiceFactoryTopiaTaiste.java @@ -1,9 +1,6 @@ package fr.ird.observe.services; -import fr.ird.observe.ObserveTechnicalException; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; -import fr.ird.observe.db.impl.H2DataSource; +import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaSupport; @@ -14,22 +11,18 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopia */ public class ObserveServiceFactoryTopiaTaiste extends ObserveServiceFactoryTopia { - public H2DataSource getExistingDataSource(ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration) { - H2DataSource dataSource = (H2DataSource) topiaApplicationContextCache.getIfPresent(dataSourceConfiguration); + public ObserveTopiaApplicationContext getExistingDataSource(ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration) { + ObserveTopiaApplicationContext dataSource = topiaApplicationContextCache.getIfPresent(dataSourceConfiguration); return dataSource; } @Override - protected DataSource getDataSource(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { + protected ObserveTopiaApplicationContext getTopiaApplicationContext(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration) { - DataSource dataSource = super.getDataSource(dataSourceConfiguration); + ObserveTopiaApplicationContext dataSource = super.getTopiaApplicationContext(dataSourceConfiguration); - if (!dataSource.isOpen()) { - try { - dataSource.doOpen(); - } catch (DataSourceException e) { - throw new ObserveTechnicalException("Could not open dataSource: " + dataSourceConfiguration, e); - } + if (!dataSource.isClosed()) { + dataSource.close(); } return dataSource; diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java index 04ab6ca..e15620e 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ApplicationContextResource.java @@ -1,12 +1,8 @@ package fr.ird.observe.services.service; -import fr.ird.observe.IObserveConfig; import fr.ird.observe.services.ObserveServiceApplicationContext; import fr.ird.observe.services.ObserveServiceFactoryTopiaTaiste; -import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.constants.ReferentialLocale; -import fr.ird.observe.test.TestHelper; -import fr.ird.observe.util.Scripts; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.rules.TestRule; @@ -37,7 +33,7 @@ public class ApplicationContextResource implements TestRule { } public String getScriptPath(String classifier) { - return Scripts.getBackupScript(databaseVersion, classifier); + return getBackupScript(databaseVersion, classifier); } public ObserveServiceApplicationContext getServiceApplicationContext() { @@ -70,11 +66,12 @@ public class ApplicationContextResource implements TestRule { if (log.isDebugEnabled()) { log.debug("Starts " + testClass.getName()); } - TestHelper.initTest(testClass); - TestHelper.createApplicationContext(); - TestHelper.setConfig(IObserveConfig.DB_VERSION, databaseVersion.toString()); - - ObserveServiceTopia.init(); + //TODO A revoir +// TestHelper.initTest(testClass); +// TestHelper.createApplicationContext(); +// TestHelper.setConfig(IObserveConfig.DB_VERSION, databaseVersion.toString()); +// +// ObserveServiceTopia.init(); serviceApplicationContext.setReferentialLocale(ReferentialLocale.FR); @@ -88,4 +85,18 @@ public class ApplicationContextResource implements TestRule { } } + + protected final String BACKUP_SCRIPT_PATTERN = "/db/%1$s/%2$s.sql.gz"; + + protected String getBackupScript(Version version, String loadScript) { + String result = String.format( + BACKUP_SCRIPT_PATTERN, + version.toString(), + loadScript + ); + if (log.isInfoEnabled()) { + log.info(result); + } + return result; + } } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java index fcc50fb..f7b899c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/DataSourceResource.java @@ -1,23 +1,16 @@ package fr.ird.observe.services.service; -import fr.ird.observe.db.DBTestHelper; -import fr.ird.observe.db.DataSourceException; -import fr.ird.observe.db.impl.H2DataSource; -import fr.ird.observe.db.impl.H2DataSourceConfig; +import fr.ird.observe.ObserveTopiaApplicationContext; +import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.services.ObserveServiceFactoryTopiaTaiste; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; -import fr.ird.observe.test.TestHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.persistence.TopiaDAO; -import org.nuiton.topia.persistence.TopiaEntity; -import java.io.File; import java.net.URL; import java.util.LinkedHashMap; import java.util.Map; @@ -36,7 +29,7 @@ public class DataSourceResource implements TestRule { protected final String dbPath; - protected Map<String, TopiaContext> transactions = new LinkedHashMap<>(); + protected Map<String, ObserveTopiaPersistenceContext> transactions = new LinkedHashMap<>(); protected ObserveDataSourceConfigurationTopiaH2 dataSourceConfiguration; @@ -49,13 +42,13 @@ public class DataSourceResource implements TestRule { return dataSourceConfiguration; } - public TopiaContext newTransaction(String name) throws DataSourceException { + public ObserveTopiaPersistenceContext newTransaction(String name) { ObserveServiceFactoryTopiaTaiste serviceFactory = applicationContextResource.getServiceFactory(); - H2DataSource dataSource = serviceFactory.getExistingDataSource(dataSourceConfiguration); - TopiaContext topiaContext = dataSource.beginTransaction(name); - transactions.put(name, topiaContext); - return topiaContext; + ObserveTopiaApplicationContext dataSource = serviceFactory.getExistingDataSource(dataSourceConfiguration); + ObserveTopiaPersistenceContext persistenceContext = dataSource.newPersistenceContext(); + transactions.put(name, persistenceContext); + return persistenceContext; } public Statement apply(final Statement base, final Description description) { @@ -73,11 +66,6 @@ public class DataSourceResource implements TestRule { }; } - public <E extends TopiaEntity> TopiaDAO<E> getDAO(TopiaContext tx, Class<E> entityType) { - H2DataSource dataSource = getDataSource(); - return dataSource.getDAO(tx, entityType); - } - protected void before(Description description) throws Throwable { Class<?> testClass = description.getTestClass(); @@ -86,34 +74,37 @@ public class DataSourceResource implements TestRule { log.debug("Starts " + testClass.getName() + "::" + methodName); } - URL dbUrl = getClass().getResource(dbPath); Assert.assertNotNull("could not find resource : " + dbPath, dbUrl); - File localDbFile = TestHelper.newLocalDB(methodName); - - H2DataSource dataSource = DBTestHelper.createAndOpenFromDump( - localDbFile, - dbUrl, - false, - false, - true, - true, - true); +// File localDbFile = TestHelper.newLocalDB(methodName); - H2DataSourceConfig dataSourceConfig = dataSource.getConfig(); - - dataSourceConfiguration = new ObserveDataSourceConfigurationTopiaH2(); - dataSourceConfiguration.setLabel(dataSourceConfig.getLabel()); - dataSourceConfiguration.setUsername(dataSourceConfig.getLogin()); - dataSourceConfiguration.setPassword(dataSourceConfig.getPassword()); - dataSourceConfiguration.setDirectory(dataSourceConfig.getStorageDirectory()); - dataSourceConfiguration.setCanMigrate(dataSourceConfig.isCanMigrate()); - dataSourceConfiguration.setShowMigrationProgression(dataSourceConfig.isShowMigrationProgression()); - dataSourceConfiguration.setShowMigrationSql(dataSourceConfig.isShowMigrationSql()); - - dataSource.doClose(false); + ObserveServiceFactoryTopiaTaiste serviceFactory = applicationContextResource.getServiceFactory(); + ObserveTopiaApplicationContext existingDataSource = serviceFactory.getExistingDataSource(dataSourceConfiguration); + +// +// H2DataSource dataSource = DBTestHelper.createAndOpenFromDump( +// localDbFile, +// dbUrl, +// false, +// false, +// true, +// true, +// true); +// +// H2DataSourceConfig dataSourceConfig = dataSource.getConfig(); +// +// dataSourceConfiguration = new ObserveDataSourceConfigurationTopiaH2(); +// dataSourceConfiguration.setLabel(dataSourceConfig.getLabel()); +// dataSourceConfiguration.setUsername(dataSourceConfig.getLogin()); +// dataSourceConfiguration.setPassword(dataSourceConfig.getPassword()); +// dataSourceConfiguration.setDirectory(dataSourceConfig.getStorageDirectory()); +// dataSourceConfiguration.setCanMigrate(dataSourceConfig.isCanMigrate()); +// dataSourceConfiguration.setShowMigrationProgression(dataSourceConfig.isShowMigrationProgression()); +// dataSourceConfiguration.setShowMigrationSql(dataSourceConfig.isShowMigrationSql()); +// +// dataSource.doClose(false); } @@ -125,15 +116,15 @@ public class DataSourceResource implements TestRule { log.debug("Ends " + testClass.getName() + "::" + methodName); } - H2DataSource dataSource = getDataSource(); + ObserveTopiaApplicationContext dataSource = getDataSource(); if (dataSource != null && dataSource.isOpen()) { - for (Map.Entry<String, TopiaContext> entry : transactions.entrySet()) { - TopiaContext topiaContext = entry.getValue(); + for (Map.Entry<String, ObserveTopiaPersistenceContext> entry : transactions.entrySet()) { + ObserveTopiaPersistenceContext topiaContext = entry.getValue(); if (!topiaContext.isClosed()) { String transactionKey = entry.getKey(); try { - dataSource.closeTransaction(topiaContext, transactionKey); + topiaContext.close(); } catch (Exception e) { if (log.isErrorEnabled()) { log.error("Could not close transaction: " + transactionKey, e); @@ -148,7 +139,7 @@ public class DataSourceResource implements TestRule { } - private H2DataSource getDataSource() { + private ObserveTopiaApplicationContext getDataSource() { return applicationContextResource.getServiceFactory().getExistingDataSource(dataSourceConfiguration); } } diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java index e78a353..47fd2e0 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/ReferentialServiceTopiaTest.java @@ -1,5 +1,6 @@ package fr.ird.observe.services.service; +import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.migration.H2DataSourceMigration; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.Program; @@ -19,8 +20,7 @@ import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; -import org.nuiton.topia.TopiaContext; -import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; import java.util.Map; @@ -59,7 +59,7 @@ public class ReferentialServiceTopiaTest { @Test public void testGetReferentialLabelSet() throws Exception { - TopiaContext tx = dataSourceResource.newTransaction("testGetReferentialLabelSet"); + ObserveTopiaPersistenceContext tx = dataSourceResource.newTransaction("testGetReferentialLabelSet"); for (Map.Entry<Class<?>, Class<?>> entry : ReferentialServiceTopia.getDtoTypes()) { Class dtoType = entry.getKey(); @@ -68,7 +68,7 @@ public class ReferentialServiceTopiaTest { } Class entityType = entry.getValue(); - TopiaDAO dao = dataSourceResource.getDAO(tx, entityType); + TopiaDao dao = tx.getDao(entityType); long expectedCount = dao.count(); if (log.isInfoEnabled()) { @@ -86,7 +86,7 @@ public class ReferentialServiceTopiaTest { @Test public void testLoadToRead() throws Exception { - TopiaContext tx = dataSourceResource.newTransaction("testLoadToRead"); + ObserveTopiaPersistenceContext tx = dataSourceResource.newTransaction("testLoadToRead"); for (Map.Entry<Class<?>, Class<?>> entry : ReferentialServiceTopia.getDtoTypes()) { @@ -104,7 +104,7 @@ public class ReferentialServiceTopiaTest { @Test public void testLoadToEdit() throws Exception { - TopiaContext tx = dataSourceResource.newTransaction("testLoadToEdit"); + ObserveTopiaPersistenceContext tx = dataSourceResource.newTransaction("testLoadToEdit"); for (Map.Entry<Class<?>, Class<?>> entry : ReferentialServiceTopia.getDtoTypes()) { @@ -122,15 +122,15 @@ public class ReferentialServiceTopiaTest { @Test public void testDelete() throws Exception { - TopiaContext tx = dataSourceResource.newTransaction("testDelete"); + ObserveTopiaPersistenceContext tx = dataSourceResource.newTransaction("testDelete"); delete(tx, ProgramDto.class, Program.class); delete(tx, LengthWeightParameterDto.class, LengthWeightParameter.class); } - protected void loadToRead(TopiaContext tx, Class dtoType, Class entityType) { - TopiaDAO<?> dao = dataSourceResource.getDAO(tx, entityType); + protected void loadToRead(ObserveTopiaPersistenceContext tx, Class dtoType, Class entityType) { + TopiaDao<?> dao = tx.getDao(entityType); long expectedCount = dao.count(); if (log.isInfoEnabled()) { @@ -158,8 +158,8 @@ public class ReferentialServiceTopiaTest { } } - protected void loadToEdit(TopiaContext tx, Class dtoType, Class entityType) { - TopiaDAO<?> dao = dataSourceResource.getDAO(tx, entityType); + protected void loadToEdit(ObserveTopiaPersistenceContext tx, Class dtoType, Class entityType) { + TopiaDao<?> dao = tx.getDao(entityType); long expectedCount = dao.count(); if (log.isInfoEnabled()) { @@ -183,7 +183,7 @@ public class ReferentialServiceTopiaTest { for (ReferenceSetDto labelSetDto : formDto.getLabels()) { Class refEntityType = ReferentialServiceTopia.getEntityType(labelSetDto.getType()); - long refExpected = dataSourceResource.getDAO(tx, refEntityType).count(); + long refExpected = tx.getDao(refEntityType).count(); Assert.assertEquals(refExpected, labelSetDto.sizeReference()); } @@ -191,9 +191,9 @@ public class ReferentialServiceTopiaTest { } } - protected void delete(TopiaContext tx, Class dtoType, Class entityType) { + protected void delete(ObserveTopiaPersistenceContext tx, Class dtoType, Class entityType) { - TopiaDAO<?> dao = dataSourceResource.getDAO(tx, entityType); + TopiaDao<?> dao = tx.getDao(entityType); long expectedCount = dao.count(); TopiaEntity entity = dao.iterator().next(); diff --git a/pom.xml b/pom.xml index 84d67f3..5785a39 100644 --- a/pom.xml +++ b/pom.xml @@ -84,8 +84,8 @@ <module>observe-services-configuration-api</module> <module>observe-services-api</module> <module>observe-entities</module> - <module>observe-business</module> - <module>observe-validation</module> + <!--<module>observe-business</module>--> + <!--<module>observe-validation</module>--> <module>observe-services-configuration-topia</module> <module>observe-services-topia</module> <!--<module>observe-services-configuration-rest</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