Observe-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
May 2018
- 1 participants
- 144 discussions
[Git][ultreiaio/ird-observe][master] 11 commits: [jgitflow-maven-plugin]updating poms for 7.0-RC-14-SNAPSHOT development[skip ci]
by Tony CHEMIT 13 May '18
by Tony CHEMIT 13 May '18
13 May '18
Tony CHEMIT pushed to branch master at ultreiaio / ird-observe
Commits:
d12ed299 by Tony CHEMIT at 2018-05-08T21:30:26Z
[jgitflow-maven-plugin]updating poms for 7.0-RC-14-SNAPSHOT development[skip ci]
- - - - -
89ef1058 by Tony CHEMIT at 2018-05-08T22:15:36Z
[jgitflow-maven-plugin]updating develop poms to master versions to avoid merge conflicts[skip ci]
- - - - -
b6b9bc62 by Tony CHEMIT at 2018-05-08T22:15:36Z
[jgitflow-maven-plugin]merging 'master' into 'develop'
- - - - -
cc085c2d by Tony CHEMIT at 2018-05-08T22:15:37Z
[jgitflow-maven-plugin]Updating develop poms back to pre merge state[skip ci]
- - - - -
e820c75d by Tony CHEMIT at 2018-05-10T10:53:14Z
Fix migration
- - - - -
2132fbc7 by Tony CHEMIT at 2018-05-11T12:55:30Z
use new SqlScriptXXX API
- - - - -
214ebdde by Tony CHEMIT at 2018-05-13T18:59:37Z
use last toolkit and new topia api
- - - - -
4ef9953e by Tony CHEMIT at 2018-05-13T21:06:10Z
use last toolkit
- - - - -
59f06b05 by Tony CHEMIT at 2018-05-13T21:07:43Z
reroll version 7.0-RC-13
- - - - -
5285ecb2 by Tony CHEMIT at 2018-05-13T21:12:52Z
[jgitflow-maven-plugin]updating poms for branch'release/7.0-RC-13' with non-snapshot versions[skip ci]
- - - - -
b0099593 by Tony CHEMIT at 2018-05-13T21:43:17Z
[jgitflow-maven-plugin]merging 'release/7.0-RC-13' into 'master'
- - - - -
30 changed files:
- client-configuration/src/license/THIRD-PARTY.properties
- client/pom.xml
- client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
- persistence/pom.xml
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfigurationFactory.java
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaPersistenceContext.java
- − persistence/src/main/java/fr/ird/observe/persistence/RunScriptTopiaSqlWork.java
- − persistence/src/main/java/fr/ird/observe/persistence/RunScriptsTopiaSqlWork.java
- persistence/src/main/java/fr/ird/observe/persistence/migration/DataSourceMigrationForVersion_6_0.java
- − persistence/src/main/java/fr/ird/observe/persistence/migration/DataSourceMigrationForVersion_7_0_RC_4.java
- − persistence/src/main/java/fr/ird/observe/persistence/migration/MigrationVersion.java
- − persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java
- persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
- pom.xml
- server-configuration/src/license/THIRD-PARTY.properties
- services-client/src/license/THIRD-PARTY.properties
- − services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
- services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
- services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
- − services-local/src/main/java/fr/ird/observe/services/local/service/data/ImportTripScriptTopiaSqlWork.java
- services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java
- services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
- services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
- services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateReferentialsTest.java
- services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTestSupport.java
- services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripLonglineTest.java
- services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripSeineTest.java
- services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
- services/pom.xml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/d10e76f518732a018751cf219e…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/d10e76f518732a018751cf219e…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 5 commits: [jgitflow-maven-plugin]updating poms for branch'release/7.0-RC-13' with…
by Tony CHEMIT 13 May '18
by Tony CHEMIT 13 May '18
13 May '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
5285ecb2 by Tony CHEMIT at 2018-05-13T21:12:52Z
[jgitflow-maven-plugin]updating poms for branch'release/7.0-RC-13' with non-snapshot versions[skip ci]
- - - - -
b0099593 by Tony CHEMIT at 2018-05-13T21:43:17Z
[jgitflow-maven-plugin]merging 'release/7.0-RC-13' into 'master'
- - - - -
811775f2 by Tony CHEMIT at 2018-05-13T21:43:19Z
[jgitflow-maven-plugin]updating develop poms to master versions to avoid merge conflicts[skip ci]
- - - - -
9c014b05 by Tony CHEMIT at 2018-05-13T21:43:20Z
[jgitflow-maven-plugin]merging 'master' into 'develop'
- - - - -
d915e609 by Tony CHEMIT at 2018-05-13T21:43:20Z
[jgitflow-maven-plugin]Updating develop poms back to pre merge state[skip ci]
- - - - -
0 changed files:
Changes:
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/d5e144eaab6c16bbd5ab6d0d16…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/d5e144eaab6c16bbd5ab6d0d16…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] [jgitflow-maven-plugin]updating poms for 7.0-RC-14-SNAPSHOT development[skip ci]
by Tony CHEMIT 13 May '18
by Tony CHEMIT 13 May '18
13 May '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
d5e144ea by Tony CHEMIT at 2018-05-13T21:11:55Z
[jgitflow-maven-plugin]updating poms for 7.0-RC-14-SNAPSHOT development[skip ci]
- - - - -
13 changed files:
- client-configuration/pom.xml
- client/pom.xml
- dto/pom.xml
- observe/pom.xml
- persistence/pom.xml
- pom.xml
- server-configuration/pom.xml
- server/pom.xml
- services-client/pom.xml
- services-local/pom.xml
- services/pom.xml
- test/pom.xml
- validation/pom.xml
Changes:
=====================================
client-configuration/pom.xml
=====================================
--- a/client-configuration/pom.xml
+++ b/client-configuration/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>client-configuration</artifactId>
=====================================
client/pom.xml
=====================================
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>client</artifactId>
=====================================
dto/pom.xml
=====================================
--- a/dto/pom.xml
+++ b/dto/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>dto</artifactId>
=====================================
observe/pom.xml
=====================================
--- a/observe/pom.xml
+++ b/observe/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>observe</artifactId>
=====================================
persistence/pom.xml
=====================================
--- a/persistence/pom.xml
+++ b/persistence/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>persistence</artifactId>
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
<packaging>pom</packaging>
<name>ObServe :: Pom</name>
=====================================
server-configuration/pom.xml
=====================================
--- a/server-configuration/pom.xml
+++ b/server-configuration/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>server-configuration</artifactId>
=====================================
server/pom.xml
=====================================
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>server</artifactId>
=====================================
services-client/pom.xml
=====================================
--- a/services-client/pom.xml
+++ b/services-client/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>services-client</artifactId>
=====================================
services-local/pom.xml
=====================================
--- a/services-local/pom.xml
+++ b/services-local/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>services-local</artifactId>
=====================================
services/pom.xml
=====================================
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>services</artifactId>
=====================================
test/pom.xml
=====================================
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>test</artifactId>
=====================================
validation/pom.xml
=====================================
--- a/validation/pom.xml
+++ b/validation/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-13-SNAPSHOT</version>
+ <version>7.0-RC-14-SNAPSHOT</version>
</parent>
<artifactId>validation</artifactId>
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/d5e144eaab6c16bbd5ab6d0d16b…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/d5e144eaab6c16bbd5ab6d0d16b…
You're receiving this email because of your account on gitlab.com.
1
0
13 May '18
Tony CHEMIT pushed new branch release/7.0-RC-13 at ultreiaio / ird-observe
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/tree/release/7.0-RC-13
You're receiving this email because of your account on gitlab.com.
1
0
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
59f06b05 by Tony CHEMIT at 2018-05-13T21:07:43Z
reroll version 7.0-RC-13
- - - - -
13 changed files:
- client-configuration/pom.xml
- client/pom.xml
- dto/pom.xml
- observe/pom.xml
- persistence/pom.xml
- pom.xml
- server-configuration/pom.xml
- server/pom.xml
- services-client/pom.xml
- services-local/pom.xml
- services/pom.xml
- test/pom.xml
- validation/pom.xml
Changes:
=====================================
client-configuration/pom.xml
=====================================
--- a/client-configuration/pom.xml
+++ b/client-configuration/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>client-configuration</artifactId>
=====================================
client/pom.xml
=====================================
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>client</artifactId>
=====================================
dto/pom.xml
=====================================
--- a/dto/pom.xml
+++ b/dto/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>dto</artifactId>
=====================================
observe/pom.xml
=====================================
--- a/observe/pom.xml
+++ b/observe/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>observe</artifactId>
=====================================
persistence/pom.xml
=====================================
--- a/persistence/pom.xml
+++ b/persistence/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>persistence</artifactId>
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
<packaging>pom</packaging>
<name>ObServe :: Pom</name>
=====================================
server-configuration/pom.xml
=====================================
--- a/server-configuration/pom.xml
+++ b/server-configuration/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>server-configuration</artifactId>
=====================================
server/pom.xml
=====================================
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>server</artifactId>
=====================================
services-client/pom.xml
=====================================
--- a/services-client/pom.xml
+++ b/services-client/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>services-client</artifactId>
=====================================
services-local/pom.xml
=====================================
--- a/services-local/pom.xml
+++ b/services-local/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>services-local</artifactId>
=====================================
services/pom.xml
=====================================
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -27,7 +27,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>services</artifactId>
=====================================
test/pom.xml
=====================================
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>test</artifactId>
=====================================
validation/pom.xml
=====================================
--- a/validation/pom.xml
+++ b/validation/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.observe</groupId>
<artifactId>ird-observe</artifactId>
- <version>7.0-RC-14-SNAPSHOT</version>
+ <version>7.0-RC-13-SNAPSHOT</version>
</parent>
<artifactId>validation</artifactId>
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/59f06b056a3fa3ca7f7b76cc911…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/59f06b056a3fa3ca7f7b76cc911…
You're receiving this email because of your account on gitlab.com.
1
0
Tony CHEMIT deleted tag v7.0-RC-13 at ultreiaio / ird-observe
--
You're receiving this email because of your account on gitlab.com.
1
0
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
4ef9953e by Tony CHEMIT at 2018-05-13T21:06:10Z
use last toolkit
- - - - -
1 changed file:
- pom.xml
Changes:
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -152,7 +152,7 @@
<maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format>
<buildDate>${maven.build.timestamp}</buildDate>
- <observeToolkitVersion>3.5-SNAPSHOT</observeToolkitVersion>
+ <observeToolkitVersion>3.5</observeToolkitVersion>
<!--<lib.version.java4all.jaxx>3.0-alpha-31</lib.version.java4all.jaxx>-->
<!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>-->
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/4ef9953eeedb9bf230243011513…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/4ef9953eeedb9bf230243011513…
You're receiving this email because of your account on gitlab.com.
1
0
13 May '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
214ebdde by Tony CHEMIT at 2018-05-13T18:59:37Z
use last toolkit and new topia api
- - - - -
18 changed files:
- client/pom.xml
- client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
- persistence/pom.xml
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfigurationFactory.java
- − persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java
- persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
- pom.xml
- − services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
- services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
- services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
- services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
- services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
- services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateReferentialsTest.java
- services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTestSupport.java
- services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripLonglineTest.java
- services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripSeineTest.java
- services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
Changes:
=====================================
client/pom.xml
=====================================
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -375,6 +375,10 @@
<groupId>fr.ird.observe.toolkit</groupId>
<artifactId>common-service</artifactId>
</dependency>
+ <dependency>
+ <groupId>fr.ird.observe.toolkit</groupId>
+ <artifactId>topia-extension</artifactId>
+ </dependency>
<dependency>
<groupId>io.ultreia.java4all</groupId>
=====================================
client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
=====================================
--- a/client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
+++ b/client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
@@ -10,23 +10,23 @@ package fr.ird.observe.client;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
import fr.ird.observe.test.TestHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
import org.nuiton.version.Version;
import java.io.File;
@@ -100,7 +100,7 @@ public class DataSourcesForTestManager {
configurationTopiaH2.setDirectory(localDbFile);
configurationTopiaH2.setDbName("obstuna");
configurationTopiaH2.setAutoMigrate(true);
- configurationTopiaH2.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaH2.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaH2;
}
@@ -116,7 +116,7 @@ public class DataSourcesForTestManager {
private void deleteDirectory(Path directory) {
try {
log.debug(String.format("Delete directory: %s", directory));
- Files.walk(directory).filter(f->!f.equals(directory)).forEach(f -> {
+ Files.walk(directory).filter(f -> !f.equals(directory)).forEach(f -> {
try {
if (Files.isDirectory(f)) {
deleteDirectory(f);
=====================================
persistence/pom.xml
=====================================
--- a/persistence/pom.xml
+++ b/persistence/pom.xml
@@ -52,7 +52,6 @@
<dependency>
<groupId>fr.ird.observe.toolkit</groupId>
<artifactId>topia-extension</artifactId>
- <version>${observeToolkitVersion}</version>
</dependency>
<dependency>
=====================================
persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
+++ b/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
@@ -37,10 +37,10 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
import org.nuiton.topia.persistence.support.TopiaMetadataModelSupport;
import org.nuiton.topia.service.migration.TopiaMigrationService;
-import org.nuiton.topia.service.sql.batch.TopiaSqlBatchService;
-import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable;
-import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables;
-import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTablesFactory;
+import org.nuiton.topia.service.script.TopiaSqlScriptGeneratorService;
+import org.nuiton.topia.service.script.table.TopiaSqlTable;
+import org.nuiton.topia.service.script.table.TopiaSqlTables;
+import org.nuiton.topia.service.script.table.TopiaSqlTablesFactory;
import org.nuiton.util.StringUtil;
import java.io.BufferedInputStream;
@@ -62,7 +62,7 @@ import java.util.zip.GZIPInputStream;
public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicationContext implements TopiaMetadataModelSupport {
static final String MIGRATION_SERVICE_NAME = "migration";
- static final String SQL_BATCH_SERVICE_NAME = "sqlBatch";
+ static final String SQL_SCRIPT_GENERATOR_BATCH_SERVICE_NAME = "sqlScriptGenerator";
/**
* Logger.
*/
@@ -115,8 +115,8 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
return getServices(TopiaMigrationService.class).get(MIGRATION_SERVICE_NAME);
}
- public TopiaSqlBatchService getSqlBatchService() {
- return getServices(TopiaSqlBatchService.class).get(SQL_BATCH_SERVICE_NAME);
+ public TopiaSqlScriptGeneratorService getSqlScriptGeneratorService() {
+ return getServices(TopiaSqlScriptGeneratorService.class).get(SQL_SCRIPT_GENERATOR_BATCH_SERVICE_NAME);
}
@Override
=====================================
persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfigurationFactory.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfigurationFactory.java
+++ b/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfigurationFactory.java
@@ -27,7 +27,7 @@ import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.jdbc.JdbcConfiguration;
import org.nuiton.topia.persistence.jdbc.JdbcConfigurationBuilder;
import org.nuiton.topia.service.migration.TopiaMigrationService;
-import org.nuiton.topia.service.sql.batch.TopiaSqlBatchServiceImpl;
+import org.nuiton.topia.service.script.TopiaSqlScriptGeneratorServiceImpl;
import java.io.File;
@@ -134,7 +134,7 @@ public class ObserveTopiaConfigurationFactory {
log.debug("jdbcUrl: " + topiaConfiguration.getJdbcConnectionUrl());
topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME, TopiaMigrationService.class);
- topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.SQL_BATCH_SERVICE_NAME, TopiaSqlBatchServiceImpl.class);
+ topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.SQL_SCRIPT_GENERATOR_BATCH_SERVICE_NAME, TopiaSqlScriptGeneratorServiceImpl.class);
return topiaConfiguration;
=====================================
persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java deleted
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package fr.ird.observe.persistence.migration;
-
-/*-
- * #%L
- * ObServe :: Persistence
- * %%
- * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.ImmutableList;
-import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
-import org.nuiton.version.Version;
-import org.nuiton.version.VersionBuilder;
-
-import java.util.List;
-
-/**
- * Created on 01/08/16.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 5.0
- */
-public final class ObserveMigrationConfigurationProvider {
-
- private static ObserveMigrationConfigurationProvider INSTANCE;
-
- private final MigrationVersionResourceProvider resourceProvider;
-
- private ObserveMigrationConfigurationProvider() {
- resourceProvider = new MigrationVersionResourceProvider();
- }
-
- public static ObserveMigrationConfigurationProvider get() {
- if (INSTANCE == null) {
- INSTANCE = new ObserveMigrationConfigurationProvider();
- }
- return INSTANCE;
- }
-
- public List<Version> getAvailableVersions() {
- return resourceProvider.getAvailableVersions();
- }
-
- public Version getLastVersion() {
- return resourceProvider.getLastVersion();
- }
-
- public ImmutableList<Version> getVersionsAfter(Version current) {
- return resourceProvider.getVersionsAfter(current);
- }
-
- public Version getMinimumVersion() {
- return VersionBuilder.create("3.0").build();
- }
-
-}
=====================================
persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
+++ b/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
@@ -35,12 +35,13 @@ import java.util.List;
* @author Tony Chemit - dev(a)tchemit.fr
*/
@AutoService(TopiaMigrationServiceAskUserToMigrate.class)
+@SuppressWarnings("WeakerAccess")
public class ObserveTopiaMigrationServiceAskUserToMigrate implements TopiaMigrationServiceAskUserToMigrate {
- private final Version minimumVersion = VersionBuilder.create("3.0").build();
+ private static final Version MINIMUM_VERSION = VersionBuilder.create("3.0").build();
- public Version getMinimumVersion() {
- return minimumVersion;
+ public static Version getMinimumVersion() {
+ return MINIMUM_VERSION;
}
@Override
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -152,7 +152,7 @@
<maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format>
<buildDate>${maven.build.timestamp}</buildDate>
- <observeToolkitVersion>3.4-SNAPSHOT</observeToolkitVersion>
+ <observeToolkitVersion>3.5-SNAPSHOT</observeToolkitVersion>
<!--<lib.version.java4all.jaxx>3.0-alpha-31</lib.version.java4all.jaxx>-->
<!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>-->
=====================================
services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java deleted
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
+++ /dev/null
@@ -1,279 +0,0 @@
-package fr.ird.observe.services.local;
-
-/*-
- * #%L
- * ObServe :: Services local implementation
- * %%
- * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import fr.ird.observe.dto.ObserveDbRole;
-import fr.ird.observe.dto.db.ObserveDbUserDto;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.persistence.jdbc.JdbcConfiguration;
-import org.nuiton.topia.persistence.jdbc.JdbcHelper;
-import org.nuiton.version.Version;
-import org.nuiton.version.Versions;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author Tony Chemit - dev(a)tchemit.fr
- */
-public class ObserveJdbcHelper extends JdbcHelper {
-
- private static final Set<String> POSTGIS_TABLES = Sets.newHashSet("geometry_columns", "spatial_ref_sys");
- private static final Log log = LogFactory.getLog(ObserveJdbcHelper.class);
-
-
- public ObserveJdbcHelper(JdbcConfiguration jdbcConfiguration) {
- super(jdbcConfiguration);
- }
-
- public Set<String> getTablePrivileges(String schema, String tableName) {
- Connection connection = null;
- try {
- connection = openConnection();
- DatabaseMetaData metaData = connection.getMetaData();
- ResultSet observerDataPrivilege = metaData.getTablePrivileges(null, schema, tableName);
-
- Set<String> tablePrivileges = Sets.newHashSet();
-
- while (observerDataPrivilege.next()) {
- String security = observerDataPrivilege.getString("PRIVILEGE");
- String grantor = observerDataPrivilege.getString("GRANTOR");
- String grantee = observerDataPrivilege.getString("GRANTEE");
- // Il se peut que le login soit echappe sous la forme \"login\"
- grantor= grantor.replaceAll("\\\\\"", "");
- grantee = grantee.replaceAll("\\\\\"", "");
- if (log.isDebugEnabled()) {
- log.debug(String.format("(security %s) - grantee (%s)", security, grantee));
- }
- if (grantor.equals(jdbcConfiguration.getJdbcConnectionUser())) {
- if (log.isDebugEnabled()) {
- log.debug("for " + tableName + " table " + grantor + '/' + security);
- }
- tablePrivileges.add(security);
- } else if (grantee.equals(jdbcConfiguration.getJdbcConnectionUser())) {
- if (log.isDebugEnabled()) {
- log.debug("for " + tableName + " table " + grantee + '/' + security);
- }
- tablePrivileges.add(security);
- }
- }
-
- return tablePrivileges;
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(connection);
- }
-
- }
-
- public Version getVersion() {
- Version version = Version.VZERO;
-
- Connection connection = null;
- PreparedStatement preparedStatement = null;
- try {
- connection = openConnection();
- // la connexion est reussie, on recherche les droits de
- // récupération de la version de la base
- preparedStatement = connection.prepareStatement("SELECT version FROM tms_version;");
- ResultSet resultSet = preparedStatement.executeQuery();
-
- if (resultSet.next()) {
- String versionStr = resultSet.getString(1);
- version = Versions.valueOf(versionStr);
- }
-
- } catch (SQLException e) {
- if (log.isErrorEnabled()) {
- log.error(e);
- }
- } finally {
- closeQuietly(preparedStatement);
- closeQuietly(connection);
- }
-
- return version;
-
- }
-
- public List<ObserveDbUserDto> getUsers() {
- Connection connection = null;
- PreparedStatement preparedStatement = null;
- List<ObserveDbUserDto> users = Lists.newLinkedList();
-
- try {
- connection = openConnection();
- // la connexion est reussie, on recherche les droits de
- // récupération de la version de la base
- preparedStatement = connection.prepareStatement("SELECT rolname FROM pg_catalog.pg_roles;");
- ResultSet resultSet = preparedStatement.executeQuery();
-
- while (resultSet.next()) {
- String name = resultSet.getString(1);
- ObserveDbUserDto user = new ObserveDbUserDto();
- user.setName(name);
- if (jdbcConfiguration.getJdbcConnectionUser().equals(name)) {
- user.setRole(ObserveDbRole.ADMINISTRATOR);
- } else {
- user.setRole(ObserveDbRole.UNUSED);
- }
-
- users.add(user);
- }
-
- return users;
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(preparedStatement);
- closeQuietly(connection);
- }
- }
-
- public List<Pair<String, String>> getTables(Set<String> schemas, Set<String> extraTables) {
- List<Pair<String, String>> result = new ArrayList<>();
-
- Connection connection = null;
- ResultSet tables = null;
-
- try {
- // recuperation des tables sur la base
- connection = openConnection();
- DatabaseMetaData data = connection.getMetaData();
- tables = data.getTables(null,
- null,
- null,
- new String[]{"TABLE"}
- );
-
- int columnCount = tables.getMetaData().getColumnCount();
-
- if (log.isDebugEnabled()) {
- StringBuilder builder = new StringBuilder();
- builder.append("\nheader");
- for (int i = 1; i <= columnCount; i++) {
- String columnName = tables.getMetaData().getColumnName(i);
- builder.append("\n [").append(i).append("] :").append(columnName);
- }
- log.debug(builder.toString());
- log.debug("fetchSize : " + tables.getFetchSize());
- }
- while (tables.next()) {
- String schemaName = tables.getString(2);
- String tableName = tables.getString(3);
- if (log.isDebugEnabled()) {
- log.debug(String.format("Discover table named %s", tables));
- }
- if (!extraTables.contains(tableName)) {
-
- if (POSTGIS_TABLES.contains(tableName)) {
- continue;
- }
-
- if (schemaName == null || !schemas.contains(schemaName.toLowerCase())) {
- continue;
- }
-
- }
-
- if (log.isDebugEnabled()) {
- log.debug(String.format("Keep table: %s", tables));
- }
- result.add(Pair.of(schemaName, tableName));
- }
-
- Collections.sort(result);
- return result;
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(connection);
- closeQuietly(tables);
- }
- }
-
- public Set<String> getPostgisFunctions(String functionPattern) {
-
- final Set<String> result = new LinkedHashSet<>();
- Connection connection = null;
- PreparedStatement preparedStatement = null;
-
- String sql = String.format("SELECT ns.nspname::text || '.' || p.proname::text || '(' || oidvectortypes(p.proargtypes)::text || ')'" +
- " FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)" +
- " WHERE ns.nspname = 'public' AND p.proname ILIKE '%s%%';", functionPattern);
- try {
- connection = openConnection();
- preparedStatement = connection.prepareStatement(sql);
- ResultSet set = preparedStatement.executeQuery();
-
- while (set.next()) {
- String functionPrototype = set.getString(1);
- result.add(functionPrototype);
- }
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(connection);
- closeQuietly(preparedStatement);
- }
- return result;
-
- }
-
- public void loadScript(String scriptContent) {
- Connection connection = null;
- PreparedStatement preparedStatement = null;
-
- try {
- connection = openConnection();
-
- preparedStatement = connection.prepareStatement(scriptContent);
-
- preparedStatement.executeUpdate();
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(connection);
- closeQuietly(preparedStatement);
- }
- }
-
-
-}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -32,9 +32,16 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.migration.mappings.TMSVersionHibernateDao;
import org.nuiton.topia.persistence.TopiaEntityEnum;
+import org.nuiton.topia.persistence.TopiaException;
import org.nuiton.topia.persistence.jdbc.JdbcConfiguration;
+import org.nuiton.topia.persistence.sql.PostgresJdbcHelper;
+import org.nuiton.topia.persistence.util.SqlScriptConsumer;
+import org.nuiton.topia.persistence.util.SqlScriptWriter;
import org.nuiton.util.StringUtil;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -53,64 +60,68 @@ public class ObserveSecurityHelper {
public static final String OBSERVE_COMMON_SCHEMA_NAME = "observe_common";
public static final String OBSERVE_SEINE_SCHEMA_NAME = "observe_seine";
- public static final String OBSERVE_LONGLINE_SCHEMA_NAME = "observe_longline";
- public static final Function<String, String> ESCAPE_STRING = input -> "\"" + input + "\"";
- protected static final String DROP_TABLE_PATTERN = "DROP TABLE IF EXISTS %s.%s CASCADE;\n";
- protected static final String DROP_SCHEMA_PATTERN = "DROP SCHEMA IF EXISTS %s CASCADE;\n";
- protected static final String REVOKE_ON_TABLE_ALL_PATTERN = "REVOKE ALL ON %s.%s FROM %s CASCADE;\n";
- protected static final String SET_ON_TABLE_OWNER_PATTERN = "ALTER TABLE %s.%s OWNER TO %s;\n";
- protected static final String GRANT_ON_TABLE_READ_PATTERN = "GRANT SELECT ON %s.%s TO %s;\n";
- protected static final String GRANT_ON_TABLE_ALL_PATTERN = "GRANT ALL ON %s.%s TO %s;\n";
- protected static final String GRANT_ON_FUNCTION_PATTERN = "GRANT EXECUTE ON FUNCTION %s TO %s;\n";
- protected static final String REVOKE_ON_SCHEMA_ALL_PATTERN = "REVOKE ALL ON SCHEMA %s FROM %s CASCADE;\n";
- protected static final String REVOKE_ON_FUNCTIONS_PATTERN = "REVOKE EXECUTE ON FUNCTION %s FROM %s CASCADE;\n";
- protected static final String GRANT_ON_SCHEMA_ALL_PATTERN = "GRANT USAGE ON SCHEMA %s TO %s;\n";
- protected static final Set<String> EXTRA_TABLES = Sets.newHashSet(
+ private static final String OBSERVE_LONGLINE_SCHEMA_NAME = "observe_longline";
+ private static final Function<String, String> ESCAPE_STRING = input -> "\"" + input + "\"";
+ private static final String REVOKE_ON_TABLE_ALL_PATTERN = "REVOKE ALL ON %s.%s FROM %s CASCADE;";
+ private static final String SET_ON_TABLE_OWNER_PATTERN = "ALTER TABLE %s.%s OWNER TO %s;";
+ private static final String GRANT_ON_TABLE_READ_PATTERN = "GRANT SELECT ON %s.%s TO %s;";
+ private static final String GRANT_ON_TABLE_ALL_PATTERN = "GRANT ALL ON %s.%s TO %s;";
+ private static final String GRANT_ON_FUNCTION_PATTERN = "GRANT EXECUTE ON FUNCTION %s TO %s;";
+ private static final String REVOKE_ON_SCHEMA_ALL_PATTERN = "REVOKE ALL ON SCHEMA %s FROM %s CASCADE;";
+ private static final String REVOKE_ON_FUNCTIONS_PATTERN = "REVOKE EXECUTE ON FUNCTION %s FROM %s CASCADE;";
+ private static final String GRANT_ON_SCHEMA_ALL_PATTERN = "GRANT USAGE ON SCHEMA %s TO %s;";
+ private static final Set<String> EXTRA_TABLES = Sets.newHashSet(
TMSVersionHibernateDao.TABLE_NAME,
TMSVersionHibernateDao.LEGACY_TABLE_NAME);
- protected static final Set<String> FUNCTION_NAMES_PREFIXS = Sets.newHashSet("ST_MakePoint",
- "ST_SetSRID",
- "sync_",
- "tr_sync",
- "ot_enhanced_school_type",
- "observe_");
- protected static final String SCHEMA_PUBLIC = "public";
- protected static final Set<String> SCHEMAS = Sets.newHashSet(SCHEMA_PUBLIC,
- OBSERVE_COMMON_SCHEMA_NAME,
- OBSERVE_SEINE_SCHEMA_NAME,
- OBSERVE_LONGLINE_SCHEMA_NAME);
+ private static final Set<String> FUNCTION_NAMES_PREFIXS = Sets.newHashSet("ST_MakePoint",
+ "ST_SetSRID",
+ "sync_",
+ "tr_sync",
+ "ot_enhanced_school_type",
+ "observe_");
+ private static final String SCHEMA_PUBLIC = "public";
+ private static final Set<String> SCHEMAS = Sets.newHashSet(SCHEMA_PUBLIC,
+ OBSERVE_COMMON_SCHEMA_NAME,
+ OBSERVE_SEINE_SCHEMA_NAME,
+ OBSERVE_LONGLINE_SCHEMA_NAME);
private static final Log log = LogFactory.getLog(ObserveSecurityHelper.class);
- protected final ObserveJdbcHelper jdbcHelper;
- protected final JdbcConfiguration jdbcConfiguration;
+ private final PostgresJdbcHelper jdbcHelper;
public ObserveSecurityHelper(JdbcConfiguration jdbcConfiguration) {
- this.jdbcConfiguration = jdbcConfiguration;
- this.jdbcHelper = new ObserveJdbcHelper(jdbcConfiguration);
+ this.jdbcHelper = new PostgresJdbcHelper(jdbcConfiguration);
}
- public void applySecurity(Set<ObserveDbUserDto> users, boolean showSql) {
+ public void applySecurity(Set<ObserveDbUserDto> users) {
if (users == null) {
throw new NullPointerException("users can not be null");
}
- String script = createSecurityScript(users);
-
- if (showSql && log.isInfoEnabled()) {
- log.info("SQL to execute :\n" + script);
+ Path scriptPath;
+ try {
+ scriptPath = Files.createTempFile("topia-sql-script-", ".sql");
+ } catch (IOException e) {
+ throw new IllegalStateException("Can't create temporary path", e);
}
- jdbcHelper.loadScript(script);
-
+ try {
+ try (SqlScriptWriter sqlScriptWriter = SqlScriptWriter.of(scriptPath)) {
+ createSecurityScript(users, sqlScriptWriter);
+ log.info(String.format("Generate security script %d statements(s) at %s", sqlScriptWriter.getStatementCount(), scriptPath));
+ }
+ jdbcHelper.consume(SqlScriptConsumer.of(scriptPath));
+ } catch (IOException e) {
+ throw new TopiaException(String.format("Can't generate security script at %s", scriptPath), e);
+ }
}
- protected String createSecurityScript(Set<ObserveDbUserDto> users) {
+ private void createSecurityScript(Set<ObserveDbUserDto> users, SqlScriptWriter sqlScriptWriter) {
List<Pair<String, String>> tables = jdbcHelper.getTables(SCHEMAS, EXTRA_TABLES);
if (tables.isEmpty()) {
// no tables
- return "";
+ return;
}
String administratorName = Iterables.get(getUserNamesByRole(users, ObserveDbRole.ADMINISTRATOR), 0);
@@ -130,16 +141,12 @@ public class ObserveSecurityHelper {
List<Pair<String, String>> referentielTables = getReferentielTables(tables);
- getDataTables(tables, referentielTables);
-
Set<String> allPostgisFunctions = new LinkedHashSet<>();
for (String postgisFunction : FUNCTION_NAMES_PREFIXS) {
Set<String> postgisFunctions = jdbcHelper.getPostgisFunctions(postgisFunction);
allPostgisFunctions.addAll(postgisFunctions);
}
- StringBuilder builder = new StringBuilder();
-
String administratorEscapedName = ESCAPE_STRING.apply(administratorName);
Set<String> technicalEscapedNames = escapedNames(technicalNames);
Set<String> usersEscapedNames = escapedNames(usersNames);
@@ -157,84 +164,66 @@ public class ObserveSecurityHelper {
String roles = StringUtil.join(privateRoles, ",", true);
- addOnTablesForRole(REVOKE_ON_TABLE_ALL_PATTERN, builder, tables, roles);
- addOnSchemaForRole(REVOKE_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, roles);
- addOnFunctionForRole(REVOKE_ON_FUNCTIONS_PATTERN, builder, allPostgisFunctions, roles);
+ addOnTablesForRole(REVOKE_ON_TABLE_ALL_PATTERN, sqlScriptWriter, tables, roles);
+ addOnSchemaForRole(REVOKE_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, roles);
+ addOnFunctionForRole(REVOKE_ON_FUNCTIONS_PATTERN, sqlScriptWriter, allPostgisFunctions, roles);
}
// ajout propriétaire
- addOnTablesForRole(SET_ON_TABLE_OWNER_PATTERN, builder, tables, administratorEscapedName);
- addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, administratorEscapedName);
- addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, builder, allPostgisFunctions, administratorEscapedName);
+ addOnTablesForRole(SET_ON_TABLE_OWNER_PATTERN, sqlScriptWriter, tables, administratorEscapedName);
+ addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, administratorEscapedName);
+ addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, sqlScriptWriter, allPostgisFunctions, administratorEscapedName);
// ajout administrateurs
if (!technicalEscapedNames.isEmpty()) {
String roles = StringUtil.join(technicalEscapedNames, ",", true);
- addOnTablesForRole(GRANT_ON_TABLE_ALL_PATTERN, builder, tables, roles);
- addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, roles);
- addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, builder, allPostgisFunctions, roles);
+ addOnTablesForRole(GRANT_ON_TABLE_ALL_PATTERN, sqlScriptWriter, tables, roles);
+ addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, roles);
+ addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, sqlScriptWriter, allPostgisFunctions, roles);
}
// ajout utilisateur
if (!usersEscapedNames.isEmpty()) {
String roles = StringUtil.join(usersEscapedNames, ",", true);
- addOnTablesForRole(GRANT_ON_TABLE_READ_PATTERN, builder, tables, roles);
- addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, roles);
- addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, builder, allPostgisFunctions, roles);
+ addOnTablesForRole(GRANT_ON_TABLE_READ_PATTERN, sqlScriptWriter, tables, roles);
+ addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, roles);
+ addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, sqlScriptWriter, allPostgisFunctions, roles);
}
// ajout referentiel
if (!referentialEscapedNames.isEmpty()) {
String roles = StringUtil.join(referentialEscapedNames, ",", true);
- addOnTablesForRole(GRANT_ON_TABLE_READ_PATTERN, builder, referentielTables, roles);
- addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, roles);
- addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, builder, allPostgisFunctions, roles);
+ addOnTablesForRole(GRANT_ON_TABLE_READ_PATTERN, sqlScriptWriter, referentielTables, roles);
+ addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, roles);
+ addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, sqlScriptWriter, allPostgisFunctions, roles);
}
- String result = builder.toString();
-
- if (log.isInfoEnabled()) {
- log.info("Security script :\n" + result);
- }
- return result;
-
-
}
- protected List<String> getUserNamesByRole(Set<ObserveDbUserDto> users, ObserveDbRole role) {
+ private List<String> getUserNamesByRole(Set<ObserveDbUserDto> users, ObserveDbRole role) {
return users.stream().filter(u -> u.getRole() == role).map(ObserveDbUserDto::getName).collect(Collectors.toList());
}
- protected Set<String> escapedNames(List<String> names) {
+ private Set<String> escapedNames(List<String> names) {
return names.stream().map(ESCAPE_STRING).collect(Collectors.toSet());
}
- protected List<Pair<String, String>> getReferentielTables(Iterable<Pair<String, String>> tables) {
- Set<TopiaEntityEnum> types = new HashSet<>();
- types.addAll(Arrays.asList(Entities.REFERENCE_ENTITIES));
+ private List<Pair<String, String>> getReferentielTables(Collection<Pair<String, String>> tables) {
+ Set<TopiaEntityEnum> types = new HashSet<>(Arrays.asList(Entities.REFERENCE_ENTITIES));
- List<Pair<String, String>> result = getTables(tables, types, EXTRA_TABLES);
+ List<Pair<String, String>> result = getTables(tables, types);
if (log.isInfoEnabled()) {
StringBuilder sb = new StringBuilder();
sb.append("Detected ").append(result.size()).append(" referentiel tables :");
for (Pair<String, String> s : result) {
sb.append("\n - ").append(s);
}
- log.info(sb.toString());
- }
- return result;
- }
-
- protected List<Pair<String, String>> getDataTables(Collection<Pair<String, String>> tables,
- Collection<Pair<String, String>> referentielTables) {
- List<Pair<String, String>> result = new ArrayList<>(tables);
- result.removeAll(referentielTables);
+ List<Pair<String, String>> dataTables = new ArrayList<>(tables);
+ dataTables.removeAll(result);
- if (log.isInfoEnabled()) {
- StringBuilder sb = new StringBuilder();
- sb.append("Detected ").append(result.size()).append(" data tables :");
- for (Pair<String, String> s : result) {
+ sb.append("Detected ").append(dataTables.size()).append(" data tables :");
+ for (Pair<String, String> s : dataTables) {
sb.append("\n - ").append(s);
}
log.info(sb.toString());
@@ -242,9 +231,7 @@ public class ObserveSecurityHelper {
return result;
}
- protected List<Pair<String, String>> getTables(Iterable<Pair<String, String>> tables,
- Set<TopiaEntityEnum> types,
- Set<String> extraTypes) {
+ private List<Pair<String, String>> getTables(Iterable<Pair<String, String>> tables, Set<TopiaEntityEnum> types) {
List<Pair<String, String>> result = new ArrayList<>();
for (Pair<String, String> t : tables) {
String table = t.getRight();
@@ -257,7 +244,7 @@ public class ObserveSecurityHelper {
}
}
if (detectedType == null) {
- for (String extraType : extraTypes) {
+ for (String extraType : EXTRA_TABLES) {
if (table.equalsIgnoreCase(extraType)) {
detectedType = extraType;
break;
@@ -272,35 +259,22 @@ public class ObserveSecurityHelper {
return result;
}
- protected void addOnTablesForRole(String pattern,
- StringBuilder builder,
- Iterable<Pair<String, String>> tables,
- String role) {
-
+ private void addOnTablesForRole(String pattern, SqlScriptWriter builder, Iterable<Pair<String, String>> tables, String role) {
for (Pair<String, String> t : tables) {
- builder.append(String.format(pattern, t.getLeft(), t.getRight(), role));
+ builder.writeSql(String.format(pattern, t.getLeft(), t.getRight(), role));
}
}
- protected void addOnSchemaForRole(String pattern,
- StringBuilder builder,
- Set<String> schemas,
- String role) {
-
+ private void addOnSchemaForRole(String pattern, SqlScriptWriter builder, Set<String> schemas, String role) {
for (String t : schemas) {
- builder.append(String.format(pattern, t, role));
+ builder.writeSql(String.format(pattern, t, role));
}
}
- protected void addOnFunctionForRole(String pattern,
- StringBuilder builder,
- Set<String> functions,
- String role) {
-
+ private void addOnFunctionForRole(String pattern, SqlScriptWriter builder, Set<String> functions, String role) {
for (String t : functions) {
- builder.append(String.format(pattern, t, role));
+ builder.writeSql(String.format(pattern, t, role));
}
}
-
}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
@@ -10,22 +10,21 @@ package fr.ird.observe.services.local.service;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
+import fr.ird.observe.dto.ObserveDbRole;
import fr.ird.observe.dto.db.ObserveDbUserDto;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.entities.referentiel.ObserveReferentialEntity;
@@ -33,7 +32,7 @@ import fr.ird.observe.persistence.ObserveEntityEnum;
import fr.ird.observe.persistence.ObserveTopiaApplicationContext;
import fr.ird.observe.persistence.ObserveTopiaConfiguration;
import fr.ird.observe.persistence.ObserveTopiaConfigurationFactory;
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
+import fr.ird.observe.persistence.migration.ObserveTopiaMigrationServiceAskUserToMigrate;
import fr.ird.observe.services.configuration.DataSourceCreateConfigurationDto;
import fr.ird.observe.services.configuration.DataSourceCreateWithNoReferentialImportException;
import fr.ird.observe.services.configuration.IncompatibleDataSourceCreateConfigurationException;
@@ -44,7 +43,6 @@ import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfiguratio
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaPG;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaSupport;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConnectionTopia;
-import fr.ird.observe.services.local.ObserveJdbcHelper;
import fr.ird.observe.services.local.ObserveSecurityHelper;
import fr.ird.observe.services.local.ObserveTopiaApplicationContextFactory;
import fr.ird.observe.services.service.BabModelVersionException;
@@ -61,16 +59,21 @@ import org.nuiton.topia.persistence.jdbc.JdbcHelper;
import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModelVisitor;
+import org.nuiton.topia.persistence.sql.PostgresJdbcHelper;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
+import org.nuiton.topia.service.migration.version.TMSVersion;
+import org.nuiton.topia.service.migration.version.TMSVersionHibernateDao;
import org.nuiton.version.Version;
import org.nuiton.version.Versions;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
+import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
-import java.util.stream.Collectors;
import static org.nuiton.i18n.I18n.l;
@@ -100,9 +103,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public ObserveDataSourceInformation checkCanConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException {
- if (log.isTraceEnabled()) {
- log.trace("checkCanConnect(" + dataSourceConfiguration + ")");
- }
Preconditions.checkState(dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaSupport);
ObserveDataSourceConfigurationTopiaSupport dataSourceConfigurationTopiaSupport = (ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration;
@@ -137,11 +137,11 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
// On tente une connection à la base
ObserveTopiaConfiguration topiaConfiguration = ObserveTopiaConfigurationFactory.forH2Database(h2DataSourceConfiguration.getDirectory(),
- h2DataSourceConfiguration.getDbName(),
- h2DataSourceConfiguration.getUsername(),
- new String(h2DataSourceConfiguration.getPassword()),
- false,
- false);
+ h2DataSourceConfiguration.getDbName(),
+ h2DataSourceConfiguration.getUsername(),
+ new String(h2DataSourceConfiguration.getPassword()),
+ false,
+ false);
try {
@@ -162,9 +162,9 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
ObserveDataSourceConfigurationTopiaPG pgDataSourceConfiguration = (ObserveDataSourceConfigurationTopiaPG) dataSourceConfigurationTopiaSupport;
// On tente une connexion au serveur
ObserveTopiaConfiguration topiaConfiguration = ObserveTopiaConfigurationFactory.forPostgresqlDatabase(pgDataSourceConfiguration.getJdbcUrl(),
- pgDataSourceConfiguration.getUsername(),
- new String(pgDataSourceConfiguration.getPassword()),
- false,
+ pgDataSourceConfiguration.getUsername(),
+ new String(pgDataSourceConfiguration.getPassword()),
+ false,
false);
try {
@@ -187,9 +187,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
public ObserveDataSourceConnectionTopia create(ObserveDataSourceConfiguration dataSourceConfiguration, DataSourceCreateConfigurationDto dataSourceCreateConfiguration)
throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException,
BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException {
- if (log.isTraceEnabled()) {
- log.trace("create(" + dataSourceConfiguration + ", " + dataSourceCreateConfiguration + ")");
- }
dataSourceCreateConfiguration.validateConfiguration();
@@ -274,9 +271,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
if (importStandaloneReferantial) {
- if (log.isInfoEnabled()) {
- log.info("Import referential.");
- }
+ log.info("Import referential.");
ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportReferentialDataSourceConfiguration();
@@ -336,9 +331,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
// Récupération du dump qui contient les données
ImmutableSet<String> importDataIds = dataSourceCreateConfiguration.getImportDataIds();
- if (log.isInfoEnabled()) {
- log.info("Get data: " + importDataIds);
- }
+ log.info("Get data: " + importDataIds);
request.dataIdsToAdd(importDataIds);
@@ -394,9 +387,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public ObserveDataSourceConnectionTopia open(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException, BabModelVersionException {
- if (log.isTraceEnabled()) {
- log.trace("open(" + dataSourceConfiguration + ")");
- }
ObserveDataSourceInformation dataSourceInformation = checkCanConnect(dataSourceConfiguration);
@@ -418,9 +408,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public void close() {
- if (log.isTraceEnabled()) {
- log.trace("close()");
- }
ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration().orElseThrow(IllegalStateException::new);
Optional<ObserveTopiaApplicationContext> optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContextIfPresent(dataSourceConfiguration);
@@ -431,9 +418,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public void destroy() throws DatabaseDestroyNotAuthorizedException {
- if (log.isTraceEnabled()) {
- log.trace("destroy()");
- }
ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration().orElseThrow(IllegalStateException::new);
@@ -461,7 +445,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
public void backup(File backupFile) {
if (!serviceContext.getTopiaApplicationContext().getConfiguration().isH2Configuration()) {
-
throw new IllegalStateException("Cant backup a none H2 database.");
}
@@ -471,26 +454,32 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public Set<ObserveDbUserDto> getUsers(ObserveDataSourceConfiguration dataSourceConfiguration) {
- if (log.isTraceEnabled()) {
- log.trace("getUsers(" + dataSourceConfiguration + ")");
- }
- Set<ObserveDbUserDto> users = Sets.newHashSet();
+ Set<ObserveDbUserDto> users = new LinkedHashSet<>();
// pas d'user pour les bases autres que postgresql
if (dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaPG) {
ObserveDataSourceConfigurationTopiaPG sourceConfiguration = (ObserveDataSourceConfigurationTopiaPG) dataSourceConfiguration;
- ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(sourceConfiguration);
-
- ObserveTopiaConfiguration topiaConfiguration = topiaApplicationContext.getConfiguration();
+ try (ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(sourceConfiguration)) {
- ObserveJdbcHelper observeJdbcHelper = new ObserveJdbcHelper(topiaConfiguration);
+ ObserveTopiaConfiguration topiaConfiguration = topiaApplicationContext.getConfiguration();
- users.addAll(observeJdbcHelper.getUsers());
+ PostgresJdbcHelper observeJdbcHelper = new PostgresJdbcHelper(topiaConfiguration);
- topiaApplicationContext.close();
+ Set<String> userNames = observeJdbcHelper.getRoles();
+ for (String userName : userNames) {
+ ObserveDbUserDto user = new ObserveDbUserDto();
+ user.setName(userName);
+ if (topiaConfiguration.getJdbcConnectionUser().equals(userName)) {
+ user.setRole(ObserveDbRole.ADMINISTRATOR);
+ } else {
+ user.setRole(ObserveDbRole.UNUSED);
+ }
+ users.add(user);
+ }
+ }
}
@@ -499,22 +488,18 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public void applySecurity(ObserveDataSourceConfiguration dataSourceConfiguration, ImmutableSet<ObserveDbUserDto> users) {
- if (log.isTraceEnabled()) {
- log.trace("applySecurity(" + dataSourceConfiguration + ", [" + Joiner.on(", ").join(users.stream().map(ObserveDbUserDto::getName).collect(Collectors.toList())) + "])");
- }
// pas de securité pour les bases autres que postgresql
if (dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaPG) {
ObserveDataSourceConfigurationTopiaPG sourceConfiguration = (ObserveDataSourceConfigurationTopiaPG) dataSourceConfiguration;
- ObserveTopiaApplicationContext optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(sourceConfiguration);
-
- ObserveTopiaConfiguration topiaConfiguration = optionalTopiaApplicationContext.getConfiguration();
-
- ObserveSecurityHelper securityHelper = new ObserveSecurityHelper(topiaConfiguration);
+ ObserveTopiaConfiguration topiaConfiguration;
+ try (ObserveTopiaApplicationContext optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(sourceConfiguration)) {
- securityHelper.applySecurity(users, sourceConfiguration.isShowMigrationSql());
+ topiaConfiguration = optionalTopiaApplicationContext.getConfiguration();
+ new ObserveSecurityHelper(topiaConfiguration).applySecurity(users);
+ }
}
@@ -522,14 +507,8 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public void migrateData(ObserveDataSourceConfiguration dataSourceConfiguration) {
- if (log.isTraceEnabled()) {
- log.trace("migrateData(" + dataSourceConfiguration + ")");
- }
-
ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration);
-
topiaApplicationContext.getMigrationService().runSchemaMigration();
-
}
@Override
@@ -561,9 +540,9 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
Version version;
- ObserveJdbcHelper observeJdbcHelper = new ObserveJdbcHelper(topiaConfiguration);
+ PostgresJdbcHelper jdbcHelper = new PostgresJdbcHelper(topiaConfiguration);
- version = observeJdbcHelper.getVersion();
+ version = TMSVersionHibernateDao.getVersion(jdbcHelper, "tms_version").map(TMSVersion::toVersion).orElse(Version.VZERO);
if (dataSourceConfiguration.isH2Database()) {
@@ -594,45 +573,36 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
// stockées dans pg canWriteData, canWrite pour etre sur du resultat
// recherche des droits sur les données observers
- Set<String> dataPrivileges = observeJdbcHelper.getTablePrivileges(ObserveSecurityHelper.OBSERVE_SEINE_SCHEMA_NAME, "trip");
+ Set<String> dataPrivileges = jdbcHelper.getTablePrivileges(ObserveSecurityHelper.OBSERVE_SEINE_SCHEMA_NAME, "trip");
readData = canRead(dataPrivileges);
writeData = canWrite(dataPrivileges);
// recherche des droits sur le referentiel
- Set<String> referentielPrivileges = observeJdbcHelper.getTablePrivileges(ObserveSecurityHelper.OBSERVE_COMMON_SCHEMA_NAME, "vessel");
+ Set<String> referentielPrivileges = jdbcHelper.getTablePrivileges(ObserveSecurityHelper.OBSERVE_COMMON_SCHEMA_NAME, "vessel");
// Sur une base PG, on regarde en base ce que l'utilisateur peut lire/écrire
writeReferential = canWrite(referentielPrivileges);
-
}
- if (log.isDebugEnabled()) {
- log.debug("User can write referential : " + writeReferential + ", " +
- "read data : " + readData + ", " +
- "write data : " + writeData + ".");
- }
+ log.debug(String.format("User can write referential : %s, read data : %s, write data : %s.", writeReferential, readData, writeData));
- ObserveMigrationConfigurationProvider observeMigrationConfigurationProvider = ObserveMigrationConfigurationProvider.get();
+ MigrationVersionResourceProvider observeMigrationConfigurationProvider = MigrationVersionResourceProvider.get();
return new ObserveDataSourceInformation(
true,
writeReferential,
readData,
writeData,
- observeMigrationConfigurationProvider.getMinimumVersion(),
+ ObserveTopiaMigrationServiceAskUserToMigrate.getMinimumVersion(),
version,
observeMigrationConfigurationProvider.getVersionsAfter(version));
}
private void close(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration, ObserveTopiaApplicationContext topiaApplicationContext) {
if (topiaApplicationContext != null) {
-
- if (log.isInfoEnabled()) {
- log.info("Closing topia application context: " + dataSourceConfiguration);
- }
+ log.info("Closing topia application context: " + dataSourceConfiguration);
topiaApplicationContext.close();
-
}
}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service.sql;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -24,7 +24,6 @@ package fr.ird.observe.services.local.service.sql;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ListMultimap;
-import org.nuiton.topia.persistence.util.TopiaBlobsContainer;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.persistence.Entities;
import fr.ird.observe.persistence.ObserveEntityEnum;
@@ -36,24 +35,18 @@ import fr.ird.observe.services.service.sql.DeleteSqlScriptProducerRequest;
import fr.ird.observe.services.service.sql.SqlScriptProducerService;
import fr.ird.observe.spi.DbModelHelper;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
-import org.nuiton.topia.service.sql.batch.SqlRequests;
-import org.nuiton.topia.service.sql.batch.SqlResult;
-import org.nuiton.topia.service.sql.batch.TopiaSqlBatchService;
-import org.nuiton.topia.service.sql.batch.actions.BlobsContainer;
-import org.nuiton.topia.service.sql.batch.actions.TopiaSqlTableSelectArgument;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.nio.charset.StandardCharsets;
+import org.nuiton.topia.persistence.util.TopiaBlobsContainer;
+import org.nuiton.topia.service.script.TopiaSqlScriptGeneratorRequest;
+import org.nuiton.topia.service.script.TopiaSqlScriptGeneratorResult;
+import org.nuiton.topia.service.script.TopiaSqlScriptGeneratorService;
+import org.nuiton.topia.service.script.request.TopiaSqlTableSelectArgument;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
-import java.util.zip.GZIPOutputStream;
import static fr.ird.observe.persistence.Entities.IS_LONGLINE_ID;
import static fr.ird.observe.persistence.Entities.IS_SEINE_ID;
@@ -66,35 +59,29 @@ import static fr.ird.observe.persistence.Entities.REFERENCE_ENTITIES_LIST;
*/
public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implements SqlScriptProducerService {
- private static final Log log = LogFactory.getLog(SqlScriptProducerServiceLocal.class);
-
@Override
public AddSqlScriptProducerResult produceAddSqlScript(AddSqlScriptProducerRequest request) {
- if (log.isTraceEnabled()) {
- log.trace("produceAddSqlScript(" + request + ")");
- }
- try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+
+ Path targetPath = serviceContext.getTemporaryDirectoryRoot().toPath().resolve("addSqlScript-" + System.nanoTime() + ".sql");
+
+ try {
ImmutableSet.Builder<TopiaBlobsContainer> observeBlobContainers = ImmutableSet.builder();
- try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out), StandardCharsets.UTF_8)) {
-
- TopiaSqlBatchService sqlBatchService = serviceContext.getTopiaApplicationContext().getSqlBatchService();
- SqlRequests.Builder builder = sqlBatchService.requestBuilder().to(writer);
-
- SqlRequests sqlRequests = sqlRequests(request, builder);
- SqlResult sqlResult = sqlBatchService.execute(sqlRequests);
- ImmutableSet<BlobsContainer> blobsContainers = sqlResult.getBlobsContainers();
- for (BlobsContainer blobsContainer : blobsContainers) {
- observeBlobContainers.add(new TopiaBlobsContainer(blobsContainer.getTableName(),
- blobsContainer.getColumnName(),
- blobsContainer.getBlobsById()));
- }
- }
+ TopiaSqlScriptGeneratorService sqlBatchService = serviceContext.getTopiaApplicationContext().getSqlScriptGeneratorService();
+ TopiaSqlScriptGeneratorRequest builder = sqlBatchService.newRequest(targetPath);
- return new AddSqlScriptProducerResult(out.toByteArray(), observeBlobContainers.build());
+ sqlRequests(request, builder);
+ TopiaSqlScriptGeneratorResult sqlResult = sqlBatchService.generate(builder);
+ ImmutableSet<TopiaBlobsContainer> blobsContainers = sqlResult.getBlobsContainers();
+ for (TopiaBlobsContainer blobsContainer : blobsContainers) {
+ observeBlobContainers.add(new TopiaBlobsContainer(blobsContainer.getTableName(),
+ blobsContainer.getColumnName(),
+ blobsContainer.getBlobsById()));
+ }
+ return new AddSqlScriptProducerResult(Files.readAllBytes(targetPath), observeBlobContainers.build());
- } catch (IOException e) {
+ } catch (Exception e) {
throw new RuntimeException("Could not produce sql script", e);
}
@@ -102,57 +89,40 @@ public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implement
@Override
public byte[] produceDeleteSqlScript(DeleteSqlScriptProducerRequest request) {
- if (log.isTraceEnabled()) {
- log.trace("produceDeleteSqlScript(" + request + ")");
- }
- try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
- try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out), StandardCharsets.UTF_8)) {
+ Path targetPath = serviceContext.getTemporaryDirectoryRoot().toPath().resolve("deleteSqlScript-" + System.nanoTime() + ".sql");
- TopiaSqlBatchService sqlBatchService = serviceContext.getTopiaApplicationContext().getSqlBatchService();
- SqlRequests.Builder builder = sqlBatchService.requestBuilder().to(writer);
+ try {
- SqlRequests sqlRequests = sqlRequests(request, builder);
- sqlBatchService.execute(sqlRequests);
-
- }
-
- return out.toByteArray();
-
- } catch (IOException e) {
- throw new RuntimeException("Could not produce delete sql script", e);
+ TopiaSqlScriptGeneratorService sqlBatchService = serviceContext.getTopiaApplicationContext().getSqlScriptGeneratorService();
+ TopiaSqlScriptGeneratorRequest builder = sqlBatchService.newRequest(targetPath);
+ sqlRequests(request, builder);
+ sqlBatchService.generate(builder);
+ return Files.readAllBytes(targetPath);
+ } catch (Exception e) {
+ throw new RuntimeException("Could not produce sql script", e);
}
+
}
@SuppressWarnings("unchecked")
- private SqlRequests sqlRequests(AddSqlScriptProducerRequest request, SqlRequests.Builder builder) {
+ private void sqlRequests(AddSqlScriptProducerRequest request, TopiaSqlScriptGeneratorRequest builder) {
- if (serviceContext.getTopiaApplicationContext().getConfiguration().isShowSql()) {
- builder.showSql();
+ if (request.isH2()) {
+ builder.forH2();
+ } else {
+ builder.forPostgresql();
}
if (request.isAddSchema()) {
-
- SqlRequests.CreateSchemaRequestBuilder createSchemaRequestBuilder = builder
- .createSchemaBuilder()
- .setTemporaryPath(serviceContext.getTemporaryDirectoryRoot().toPath());
- if (request.isH2()) {
- createSchemaRequestBuilder.forH2();
- } else {
- createSchemaRequestBuilder.forPostgres();
- }
- createSchemaRequestBuilder.flush();
-
+ builder.addCreateSchemaRequest(true, true);
}
ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext();
TopiaMetadataModel metadataModel = topiaApplicationContext.getMetadataModel();
if (request.isAddReferential()) {
- builder.replicateTablesBuilder(metadataModel)
- .setTables(topiaApplicationContext.getReferentialTables())
- .flush();
-
+ builder.addReplicateTablesRequest(topiaApplicationContext.getReferentialTables(), null, metadataModel);
}
if (request.isAddSomeReferential()) {
@@ -167,12 +137,7 @@ public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implement
Class referenceType = DbModelHelper.fromReferentialEntity(entityType).toReferenceType();
List<String> ids = referentialIds.get(referenceType);
if (CollectionUtils.isNotEmpty(ids)) {
-
- builder.replicateTablesBuilder(metadataModel)
- .setTables(topiaApplicationContext.getReferentialTable(entityType))
- .setSelectArgument(TopiaSqlTableSelectArgument.of(ids))
- .flush();
-
+ builder.addReplicateTablesRequest(topiaApplicationContext.getReferentialTable(entityType), TopiaSqlTableSelectArgument.of(ids), metadataModel);
}
}
@@ -183,27 +148,16 @@ public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implement
ImmutableSet<String> tripIds = request.getDataIds();
if (tripIds == null) {
- builder.replicateTablesBuilder(metadataModel)
- .setTables(topiaApplicationContext.getTripSeineTables())
- .replicateTablesBuilder(metadataModel)
- .setTables(topiaApplicationContext.getTripLonglineTables())
- .flush();
+ builder.addReplicateTablesRequest(topiaApplicationContext.getTripSeineTables(), null, metadataModel);
+ builder.addReplicateTablesRequest(topiaApplicationContext.getTripLonglineTables(), null, metadataModel);
} else {
{
-
Set<String> tripIds1 = tripIds.stream().filter(IS_SEINE_ID).collect(Collectors.toSet());
-
if (!tripIds1.isEmpty()) {
-
- builder.replicateTablesBuilder(metadataModel)
- .setTables(topiaApplicationContext.getTripSeineTables())
- .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds1))
- .flush();
-
+ builder.addReplicateTablesRequest(topiaApplicationContext.getTripSeineTables(), TopiaSqlTableSelectArgument.of(tripIds1), metadataModel);
}
-
}
{
@@ -211,28 +165,14 @@ public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implement
Set<String> tripIds1 = tripIds.stream().filter(IS_LONGLINE_ID).collect(Collectors.toSet());
if (!tripIds1.isEmpty()) {
-
- builder.replicateTablesBuilder(metadataModel)
- .setTables(topiaApplicationContext.getTripLonglineTables())
- .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds1))
- .flush();
-
+ builder.addReplicateTablesRequest(topiaApplicationContext.getTripLonglineTables(), TopiaSqlTableSelectArgument.of(tripIds1), metadataModel);
}
-
}
-
}
-
}
-
- return builder.build();
}
- private SqlRequests sqlRequests(DeleteSqlScriptProducerRequest request, SqlRequests.Builder builder) {
-
- if (serviceContext.getTopiaApplicationContext().getConfiguration().isShowSql()) {
- builder.showSql();
- }
+ private void sqlRequests(DeleteSqlScriptProducerRequest request, TopiaSqlScriptGeneratorRequest builder) {
ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext();
@@ -241,49 +181,26 @@ public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implement
ImmutableSet<String> tripIds = request.getDataIds();
if (tripIds == null) {
- builder.deleteTablesBuilder()
- .setTables(topiaApplicationContext.getTripSeineTables())
- .replicateTablesBuilder(topiaApplicationContext.getMetadataModel())
- .setTables(topiaApplicationContext.getTripLonglineTables())
- .flush();
+ builder.addDeleteTablesRequest(topiaApplicationContext.getTripSeineTables(), null);
+ builder.addDeleteTablesRequest(topiaApplicationContext.getTripLonglineTables(), null);
} else {
{
-
Set<String> tripIds1 = tripIds.stream().filter(Entities.IS_SEINE_ID).collect(Collectors.toSet());
-
if (!tripIds1.isEmpty()) {
-
- builder.deleteTablesBuilder()
- .setTables(topiaApplicationContext.getTripSeineTables())
- .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds1))
- .flush();
-
+ builder.addDeleteTablesRequest(topiaApplicationContext.getTripSeineTables(), TopiaSqlTableSelectArgument.of(tripIds1));
}
-
}
{
-
Set<String> tripIds1 = tripIds.stream().filter(Entities.IS_LONGLINE_ID).collect(Collectors.toSet());
-
if (!tripIds1.isEmpty()) {
-
- builder.deleteTablesBuilder()
- .setTables(topiaApplicationContext.getTripLonglineTables())
- .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds1))
- .flush();
-
+ builder.addDeleteTablesRequest(topiaApplicationContext.getTripLonglineTables(), TopiaSqlTableSelectArgument.of(tripIds1));
}
-
}
-
}
-
}
-
- return builder.build();
}
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
@@ -10,23 +10,23 @@ package fr.ird.observe.services.local;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
import fr.ird.observe.test.TestHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
import org.nuiton.version.Version;
import java.io.File;
@@ -100,7 +100,7 @@ public class DataSourcesForTestManager {
configurationTopiaH2.setDirectory(localDbFile);
configurationTopiaH2.setDbName("obstuna");
configurationTopiaH2.setAutoMigrate(true);
- configurationTopiaH2.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaH2.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaH2;
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateReferentialsTest.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateReferentialsTest.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateReferentialsTest.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.entity;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -26,8 +26,8 @@ import fr.ird.observe.test.DatabaseName;
import fr.ird.observe.test.ObserveFixtures;
import fr.ird.observe.test.spi.DatabaseNameConfiguration;
import org.junit.Test;
-import org.nuiton.topia.service.sql.batch.actions.ReplicateTablesRequest;
-import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables;
+import org.nuiton.topia.service.script.request.ReplicateTablesRequest;
+import org.nuiton.topia.service.script.table.TopiaSqlTables;
/**
* Created on 29/12/15.
@@ -42,11 +42,7 @@ public class ReplicateReferentialsTest extends ReplicateTestSupport {
TopiaSqlTables tables = localTestMethodResource.getTopiaApplicationContext().getReferentialTables();
- ReplicateTablesRequest request
- = createReplicateTablesRequest(DatabaseName.empty_h2)
- .setTables(tables)
- .build();
-
+ ReplicateTablesRequest request = createReplicateTablesRequest(DatabaseName.empty_h2, tables, null);
testReplicate0(request, ObserveFixtures.REFERENTIAL_TABLES_COUNT);
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTestSupport.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTestSupport.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTestSupport.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.entity;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -23,7 +23,6 @@ package fr.ird.observe.services.local.entity;
*/
import com.google.common.collect.ImmutableMap;
-import com.google.common.io.Files;
import fr.ird.observe.persistence.ObserveTopiaApplicationContext;
import fr.ird.observe.persistence.ObserveTopiaPersistenceContext;
import fr.ird.observe.services.configuration.DataSourceCreateWithNoReferentialImportException;
@@ -38,15 +37,16 @@ import fr.ird.observe.test.DatabaseName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
-import org.nuiton.topia.service.sql.batch.actions.ReplicateTablesRequest;
-import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable;
-import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables;
+import org.nuiton.topia.persistence.util.SqlScriptConsumer;
+import org.nuiton.topia.service.script.TopiaSqlScriptGeneratorRequest;
+import org.nuiton.topia.service.script.request.ReplicateTablesRequest;
+import org.nuiton.topia.service.script.request.TopiaSqlTableSelectArgument;
+import org.nuiton.topia.service.script.table.TopiaSqlTable;
+import org.nuiton.topia.service.script.table.TopiaSqlTables;
import org.nuiton.util.StringUtil;
import java.io.File;
import java.io.IOException;
-import java.io.Writer;
-import java.nio.charset.StandardCharsets;
import java.util.Map;
/**
@@ -62,29 +62,15 @@ class ReplicateTestSupport extends ServiceLocalTestSupport {
private static final Log log = LogFactory.getLog(ReplicateTestSupport.class);
private File scriptFile;
+ private ObserveTopiaApplicationContext targetTopiaApplicationContext;
- ReplicateTablesRequest.Builder createReplicateTablesRequest(DatabaseName databaseName) throws DataSourceCreateWithNoReferentialImportException, IOException, IncompatibleDataSourceCreateConfigurationException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException {
-
- File targetDatabaseDirectory = new File(localTestMethodResource.getTestDirectory(), "targetReplication");
- ObserveDataSourceConfigurationTopiaH2 targetTopiaConfiguration = TOPIA_TEST_CLASS_RESOURCE.createDataSourceConfiguration(localTestMethodResource.getDbVersion(), databaseName.name(), targetDatabaseDirectory, localTestMethodResource.getLogin(), localTestMethodResource.getPassword());
- ObserveTopiaApplicationContext targetTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(targetTopiaConfiguration);
-
- scriptFile = new File(localTestMethodResource.getTestDirectory(), "script.sql");
-
- Writer writer = Files.newWriter(scriptFile, StandardCharsets.UTF_8);
-
- return localTestMethodResource.getTopiaApplicationContext()
- .getSqlBatchService()
- .replicateTablesRequestBuilder()
- .to(targetTopiaApplicationContext)
- .to(writer);
- }
-
- private static void assertReplicateTripResults(ReplicateTablesRequest replicationRequest, ImmutableMap<String, Long> expectedResults) {
+ private static void assertReplicateTripResults(ObserveTopiaApplicationContext targetTopiaApplicationContext, File scriptFile, ReplicateTablesRequest replicationRequest, ImmutableMap<String, Long> expectedResults) {
TopiaSqlTables tables = replicationRequest.getTables();
- try (ObserveTopiaPersistenceContext persistenceContext = (ObserveTopiaPersistenceContext) replicationRequest.getTargetTopiaApplicationContext().newPersistenceContext()) {
+ try (ObserveTopiaPersistenceContext persistenceContext = targetTopiaApplicationContext.newPersistenceContext()) {
+
+ persistenceContext.getSqlSupport().doSqlWork(SqlScriptConsumer.of(scriptFile.toPath()));
for (TopiaSqlTable table : tables) {
String fullyTableName = table.getFullyTableName();
@@ -112,17 +98,33 @@ class ReplicateTestSupport extends ServiceLocalTestSupport {
}
+ ReplicateTablesRequest createReplicateTablesRequest(DatabaseName databaseName, TopiaSqlTables tables, TopiaSqlTableSelectArgument selectedArgument) throws DataSourceCreateWithNoReferentialImportException, IOException, IncompatibleDataSourceCreateConfigurationException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException {
+
+ File targetDatabaseDirectory = new File(localTestMethodResource.getTestDirectory(), "targetReplication");
+ ObserveDataSourceConfigurationTopiaH2 targetTopiaConfiguration = TOPIA_TEST_CLASS_RESOURCE.createDataSourceConfiguration(localTestMethodResource.getDbVersion(), databaseName.name(), targetDatabaseDirectory, localTestMethodResource.getLogin(), localTestMethodResource.getPassword());
+ targetTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(targetTopiaConfiguration);
+
+ scriptFile = new File(localTestMethodResource.getTestDirectory(), "script.sql");
+
+ return new ReplicateTablesRequest(tables, selectedArgument, targetTopiaApplicationContext.getMetadataModel());
+ }
+
void testReplicate0(ReplicateTablesRequest request, ImmutableMap<String, Long> expectedTablesCount) {
TopiaSqlTables tables = request.getTables();
log.info(String.format("Will replicate using %d tables.", tables.size()));
+ TopiaSqlScriptGeneratorRequest generatorRequest = localTestMethodResource.getTopiaApplicationContext()
+ .getSqlScriptGeneratorService()
+ .newRequest(scriptFile.toPath())
+ .gzip(false)
+ .addRequest(request);
localTestMethodResource.getTopiaApplicationContext()
- .getSqlBatchService()
- .execute(request);
+ .getSqlScriptGeneratorService()
+ .generate(generatorRequest);
- assertReplicateTripResults(request, expectedTablesCount);
+ assertReplicateTripResults(targetTopiaApplicationContext, scriptFile, request, expectedTablesCount);
log.debug(String.format("Replicate to script (length: %s) :\n%s", StringUtil.convertMemory(scriptFile.length()), scriptFile));
=====================================
services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripLonglineTest.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripLonglineTest.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripLonglineTest.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.entity;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -33,9 +33,9 @@ import fr.ird.observe.test.ObserveFixtures;
import fr.ird.observe.test.spi.DatabaseNameConfiguration;
import org.junit.Ignore;
import org.junit.Test;
-import org.nuiton.topia.service.sql.batch.actions.ReplicateTablesRequest;
-import org.nuiton.topia.service.sql.batch.actions.TopiaSqlTableSelectArgument;
-import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables;
+import org.nuiton.topia.service.script.request.ReplicateTablesRequest;
+import org.nuiton.topia.service.script.request.TopiaSqlTableSelectArgument;
+import org.nuiton.topia.service.script.table.TopiaSqlTables;
import java.io.IOException;
@@ -57,9 +57,9 @@ public class ReplicateTripLonglineTest extends ReplicateTestSupport {
@Test
public void testReplicateAllTripLongline2() throws Exception {
testReplicate(ObserveFixtures.ALL_TRIP_LONGLINE_COUNT,
- ObserveFixtures.TRIP_LONGLINE_ID_1,
- ObserveFixtures.TRIP_LONGLINE_ID_2,
- ObserveFixtures.TRIP_LONGLINE_ID_3);
+ ObserveFixtures.TRIP_LONGLINE_ID_1,
+ ObserveFixtures.TRIP_LONGLINE_ID_2,
+ ObserveFixtures.TRIP_LONGLINE_ID_3);
}
@Test
@@ -80,12 +80,7 @@ public class ReplicateTripLonglineTest extends ReplicateTestSupport {
protected void testReplicate(ImmutableMap<String, Long> expectedTablesCount, String... tripIds) throws DataSourceCreateWithNoReferentialImportException, IOException, IncompatibleDataSourceCreateConfigurationException, DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException, BabModelVersionException {
TopiaSqlTables tables = localTestMethodResource.getTopiaApplicationContext().getTripLonglineTables();
- ReplicateTablesRequest request
- = createReplicateTablesRequest(DatabaseName.referentiel)
- .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds))
- .setTables(tables)
- .build();
-
+ ReplicateTablesRequest request = createReplicateTablesRequest(DatabaseName.referentiel, tables, TopiaSqlTableSelectArgument.of(tripIds));
testReplicate0(request, expectedTablesCount);
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripSeineTest.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripSeineTest.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/entity/ReplicateTripSeineTest.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.entity;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -27,9 +27,9 @@ import fr.ird.observe.test.DatabaseName;
import fr.ird.observe.test.ObserveFixtures;
import fr.ird.observe.test.spi.DatabaseNameConfiguration;
import org.junit.Test;
-import org.nuiton.topia.service.sql.batch.actions.ReplicateTablesRequest;
-import org.nuiton.topia.service.sql.batch.actions.TopiaSqlTableSelectArgument;
-import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables;
+import org.nuiton.topia.service.script.request.ReplicateTablesRequest;
+import org.nuiton.topia.service.script.request.TopiaSqlTableSelectArgument;
+import org.nuiton.topia.service.script.table.TopiaSqlTables;
/**
* Created on 29/12/15.
@@ -52,9 +52,9 @@ public class ReplicateTripSeineTest extends ReplicateTestSupport {
@Test
public void testReplicateAllTripSeine2() throws Exception {
testReplicate(ObserveFixtures.ALL_TRIP_SEINE_COUNT,
- ObserveFixtures.TRIP_SEINE_ID_1,
- ObserveFixtures.TRIP_SEINE_ID_2,
- ObserveFixtures.TRIP_SEINE_ID_3);
+ ObserveFixtures.TRIP_SEINE_ID_1,
+ ObserveFixtures.TRIP_SEINE_ID_2,
+ ObserveFixtures.TRIP_SEINE_ID_3);
}
@Test
@@ -68,15 +68,8 @@ public class ReplicateTripSeineTest extends ReplicateTestSupport {
}
protected void testReplicate(ImmutableMap<String, Long> expectedTablesCount, String... tripIds) throws Exception {
-
TopiaSqlTables tables = localTestMethodResource.getTopiaApplicationContext().getTripSeineTables();
-
- ReplicateTablesRequest request
- = createReplicateTablesRequest(DatabaseName.referentiel)
- .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds))
- .setTables(tables)
- .build();
-
+ ReplicateTablesRequest request = createReplicateTablesRequest(DatabaseName.referentiel, tables, TopiaSqlTableSelectArgument.of(tripIds));
testReplicate0(request, expectedTablesCount);
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -25,7 +25,6 @@ package fr.ird.observe.services.local.service;
import fr.ird.observe.dto.data.seine.TripSeineDto;
import fr.ird.observe.dto.form.Form;
import fr.ird.observe.dto.referential.ProgramDto;
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.ObserveDataSourceConnection;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaPG;
import fr.ird.observe.services.security.UnauthorizedException;
@@ -42,6 +41,7 @@ import fr.ird.observe.test.spi.DatabasePasswordConfiguration;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
/**
* FIXME Ca sert à quoi ? et je comprends pas le mot rigth ?
@@ -102,13 +102,12 @@ public class RigthTest extends ServiceLocalTestSupport {
configurationTopiaPG.setUsername(login);
configurationTopiaPG.setPassword('a');
configurationTopiaPG.setAutoMigrate(true);
- configurationTopiaPG.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaPG.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaPG;
}
-
public void testReadData(String login) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException {
TripSeineService service = localTestMethodResource.newService(TripSeineService.class);
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/214ebdde76b953e678d7fd6e76e…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/214ebdde76b953e678d7fd6e76e…
You're receiving this email because of your account on gitlab.com.
1
0
13 May '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
ea21fa2b by Tony CHEMIT at 2018-05-13T12:21:42Z
use last toolkit and new topia api
- - - - -
12 changed files:
- client/pom.xml
- client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
- persistence/pom.xml
- − persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java
- persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
- pom.xml
- − services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
- services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
- services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
- services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
- services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
- services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
Changes:
=====================================
client/pom.xml
=====================================
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -375,6 +375,10 @@
<groupId>fr.ird.observe.toolkit</groupId>
<artifactId>common-service</artifactId>
</dependency>
+ <dependency>
+ <groupId>fr.ird.observe.toolkit</groupId>
+ <artifactId>topia-extension</artifactId>
+ </dependency>
<dependency>
<groupId>io.ultreia.java4all</groupId>
=====================================
client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
=====================================
--- a/client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
+++ b/client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
@@ -10,23 +10,23 @@ package fr.ird.observe.client;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
import fr.ird.observe.test.TestHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
import org.nuiton.version.Version;
import java.io.File;
@@ -100,7 +100,7 @@ public class DataSourcesForTestManager {
configurationTopiaH2.setDirectory(localDbFile);
configurationTopiaH2.setDbName("obstuna");
configurationTopiaH2.setAutoMigrate(true);
- configurationTopiaH2.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaH2.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaH2;
}
@@ -116,7 +116,7 @@ public class DataSourcesForTestManager {
private void deleteDirectory(Path directory) {
try {
log.debug(String.format("Delete directory: %s", directory));
- Files.walk(directory).filter(f->!f.equals(directory)).forEach(f -> {
+ Files.walk(directory).filter(f -> !f.equals(directory)).forEach(f -> {
try {
if (Files.isDirectory(f)) {
deleteDirectory(f);
=====================================
persistence/pom.xml
=====================================
--- a/persistence/pom.xml
+++ b/persistence/pom.xml
@@ -52,7 +52,6 @@
<dependency>
<groupId>fr.ird.observe.toolkit</groupId>
<artifactId>topia-extension</artifactId>
- <version>${observeToolkitVersion}</version>
</dependency>
<dependency>
=====================================
persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java deleted
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package fr.ird.observe.persistence.migration;
-
-/*-
- * #%L
- * ObServe :: Persistence
- * %%
- * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.ImmutableList;
-import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
-import org.nuiton.version.Version;
-import org.nuiton.version.VersionBuilder;
-
-import java.util.List;
-
-/**
- * Created on 01/08/16.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 5.0
- */
-public final class ObserveMigrationConfigurationProvider {
-
- private static ObserveMigrationConfigurationProvider INSTANCE;
-
- private final MigrationVersionResourceProvider resourceProvider;
-
- private ObserveMigrationConfigurationProvider() {
- resourceProvider = new MigrationVersionResourceProvider();
- }
-
- public static ObserveMigrationConfigurationProvider get() {
- if (INSTANCE == null) {
- INSTANCE = new ObserveMigrationConfigurationProvider();
- }
- return INSTANCE;
- }
-
- public List<Version> getAvailableVersions() {
- return resourceProvider.getAvailableVersions();
- }
-
- public Version getLastVersion() {
- return resourceProvider.getLastVersion();
- }
-
- public ImmutableList<Version> getVersionsAfter(Version current) {
- return resourceProvider.getVersionsAfter(current);
- }
-
- public Version getMinimumVersion() {
- return VersionBuilder.create("3.0").build();
- }
-
-}
=====================================
persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
+++ b/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
@@ -35,12 +35,13 @@ import java.util.List;
* @author Tony Chemit - dev(a)tchemit.fr
*/
@AutoService(TopiaMigrationServiceAskUserToMigrate.class)
+@SuppressWarnings("WeakerAccess")
public class ObserveTopiaMigrationServiceAskUserToMigrate implements TopiaMigrationServiceAskUserToMigrate {
- private final Version minimumVersion = VersionBuilder.create("3.0").build();
+ private static final Version MINIMUM_VERSION = VersionBuilder.create("3.0").build();
- public Version getMinimumVersion() {
- return minimumVersion;
+ public static Version getMinimumVersion() {
+ return MINIMUM_VERSION;
}
@Override
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -152,7 +152,7 @@
<maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format>
<buildDate>${maven.build.timestamp}</buildDate>
- <observeToolkitVersion>3.4-SNAPSHOT</observeToolkitVersion>
+ <observeToolkitVersion>3.5-SNAPSHOT</observeToolkitVersion>
<!--<lib.version.java4all.jaxx>3.0-alpha-31</lib.version.java4all.jaxx>-->
<!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>-->
=====================================
services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java deleted
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
+++ /dev/null
@@ -1,279 +0,0 @@
-package fr.ird.observe.services.local;
-
-/*-
- * #%L
- * ObServe :: Services local implementation
- * %%
- * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import fr.ird.observe.dto.ObserveDbRole;
-import fr.ird.observe.dto.db.ObserveDbUserDto;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.persistence.jdbc.JdbcConfiguration;
-import org.nuiton.topia.persistence.jdbc.JdbcHelper;
-import org.nuiton.version.Version;
-import org.nuiton.version.Versions;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author Tony Chemit - dev(a)tchemit.fr
- */
-public class ObserveJdbcHelper extends JdbcHelper {
-
- private static final Set<String> POSTGIS_TABLES = Sets.newHashSet("geometry_columns", "spatial_ref_sys");
- private static final Log log = LogFactory.getLog(ObserveJdbcHelper.class);
-
-
- public ObserveJdbcHelper(JdbcConfiguration jdbcConfiguration) {
- super(jdbcConfiguration);
- }
-
- public Set<String> getTablePrivileges(String schema, String tableName) {
- Connection connection = null;
- try {
- connection = openConnection();
- DatabaseMetaData metaData = connection.getMetaData();
- ResultSet observerDataPrivilege = metaData.getTablePrivileges(null, schema, tableName);
-
- Set<String> tablePrivileges = Sets.newHashSet();
-
- while (observerDataPrivilege.next()) {
- String security = observerDataPrivilege.getString("PRIVILEGE");
- String grantor = observerDataPrivilege.getString("GRANTOR");
- String grantee = observerDataPrivilege.getString("GRANTEE");
- // Il se peut que le login soit echappe sous la forme \"login\"
- grantor= grantor.replaceAll("\\\\\"", "");
- grantee = grantee.replaceAll("\\\\\"", "");
- if (log.isDebugEnabled()) {
- log.debug(String.format("(security %s) - grantee (%s)", security, grantee));
- }
- if (grantor.equals(jdbcConfiguration.getJdbcConnectionUser())) {
- if (log.isDebugEnabled()) {
- log.debug("for " + tableName + " table " + grantor + '/' + security);
- }
- tablePrivileges.add(security);
- } else if (grantee.equals(jdbcConfiguration.getJdbcConnectionUser())) {
- if (log.isDebugEnabled()) {
- log.debug("for " + tableName + " table " + grantee + '/' + security);
- }
- tablePrivileges.add(security);
- }
- }
-
- return tablePrivileges;
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(connection);
- }
-
- }
-
- public Version getVersion() {
- Version version = Version.VZERO;
-
- Connection connection = null;
- PreparedStatement preparedStatement = null;
- try {
- connection = openConnection();
- // la connexion est reussie, on recherche les droits de
- // récupération de la version de la base
- preparedStatement = connection.prepareStatement("SELECT version FROM tms_version;");
- ResultSet resultSet = preparedStatement.executeQuery();
-
- if (resultSet.next()) {
- String versionStr = resultSet.getString(1);
- version = Versions.valueOf(versionStr);
- }
-
- } catch (SQLException e) {
- if (log.isErrorEnabled()) {
- log.error(e);
- }
- } finally {
- closeQuietly(preparedStatement);
- closeQuietly(connection);
- }
-
- return version;
-
- }
-
- public List<ObserveDbUserDto> getUsers() {
- Connection connection = null;
- PreparedStatement preparedStatement = null;
- List<ObserveDbUserDto> users = Lists.newLinkedList();
-
- try {
- connection = openConnection();
- // la connexion est reussie, on recherche les droits de
- // récupération de la version de la base
- preparedStatement = connection.prepareStatement("SELECT rolname FROM pg_catalog.pg_roles;");
- ResultSet resultSet = preparedStatement.executeQuery();
-
- while (resultSet.next()) {
- String name = resultSet.getString(1);
- ObserveDbUserDto user = new ObserveDbUserDto();
- user.setName(name);
- if (jdbcConfiguration.getJdbcConnectionUser().equals(name)) {
- user.setRole(ObserveDbRole.ADMINISTRATOR);
- } else {
- user.setRole(ObserveDbRole.UNUSED);
- }
-
- users.add(user);
- }
-
- return users;
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(preparedStatement);
- closeQuietly(connection);
- }
- }
-
- public List<Pair<String, String>> getTables(Set<String> schemas, Set<String> extraTables) {
- List<Pair<String, String>> result = new ArrayList<>();
-
- Connection connection = null;
- ResultSet tables = null;
-
- try {
- // recuperation des tables sur la base
- connection = openConnection();
- DatabaseMetaData data = connection.getMetaData();
- tables = data.getTables(null,
- null,
- null,
- new String[]{"TABLE"}
- );
-
- int columnCount = tables.getMetaData().getColumnCount();
-
- if (log.isDebugEnabled()) {
- StringBuilder builder = new StringBuilder();
- builder.append("\nheader");
- for (int i = 1; i <= columnCount; i++) {
- String columnName = tables.getMetaData().getColumnName(i);
- builder.append("\n [").append(i).append("] :").append(columnName);
- }
- log.debug(builder.toString());
- log.debug("fetchSize : " + tables.getFetchSize());
- }
- while (tables.next()) {
- String schemaName = tables.getString(2);
- String tableName = tables.getString(3);
- if (log.isDebugEnabled()) {
- log.debug(String.format("Discover table named %s", tables));
- }
- if (!extraTables.contains(tableName)) {
-
- if (POSTGIS_TABLES.contains(tableName)) {
- continue;
- }
-
- if (schemaName == null || !schemas.contains(schemaName.toLowerCase())) {
- continue;
- }
-
- }
-
- if (log.isDebugEnabled()) {
- log.debug(String.format("Keep table: %s", tables));
- }
- result.add(Pair.of(schemaName, tableName));
- }
-
- Collections.sort(result);
- return result;
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(connection);
- closeQuietly(tables);
- }
- }
-
- public Set<String> getPostgisFunctions(String functionPattern) {
-
- final Set<String> result = new LinkedHashSet<>();
- Connection connection = null;
- PreparedStatement preparedStatement = null;
-
- String sql = String.format("SELECT ns.nspname::text || '.' || p.proname::text || '(' || oidvectortypes(p.proargtypes)::text || ')'" +
- " FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)" +
- " WHERE ns.nspname = 'public' AND p.proname ILIKE '%s%%';", functionPattern);
- try {
- connection = openConnection();
- preparedStatement = connection.prepareStatement(sql);
- ResultSet set = preparedStatement.executeQuery();
-
- while (set.next()) {
- String functionPrototype = set.getString(1);
- result.add(functionPrototype);
- }
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(connection);
- closeQuietly(preparedStatement);
- }
- return result;
-
- }
-
- public void loadScript(String scriptContent) {
- Connection connection = null;
- PreparedStatement preparedStatement = null;
-
- try {
- connection = openConnection();
-
- preparedStatement = connection.prepareStatement(scriptContent);
-
- preparedStatement.executeUpdate();
-
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(connection);
- closeQuietly(preparedStatement);
- }
- }
-
-
-}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/ObserveSecurityHelper.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -32,9 +32,16 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.migration.mappings.TMSVersionHibernateDao;
import org.nuiton.topia.persistence.TopiaEntityEnum;
+import org.nuiton.topia.persistence.TopiaException;
import org.nuiton.topia.persistence.jdbc.JdbcConfiguration;
+import org.nuiton.topia.persistence.sql.PostgresJdbcHelper;
+import org.nuiton.topia.persistence.util.SqlScriptConsumer;
+import org.nuiton.topia.persistence.util.SqlScriptWriter;
import org.nuiton.util.StringUtil;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -53,64 +60,68 @@ public class ObserveSecurityHelper {
public static final String OBSERVE_COMMON_SCHEMA_NAME = "observe_common";
public static final String OBSERVE_SEINE_SCHEMA_NAME = "observe_seine";
- public static final String OBSERVE_LONGLINE_SCHEMA_NAME = "observe_longline";
- public static final Function<String, String> ESCAPE_STRING = input -> "\"" + input + "\"";
- protected static final String DROP_TABLE_PATTERN = "DROP TABLE IF EXISTS %s.%s CASCADE;\n";
- protected static final String DROP_SCHEMA_PATTERN = "DROP SCHEMA IF EXISTS %s CASCADE;\n";
- protected static final String REVOKE_ON_TABLE_ALL_PATTERN = "REVOKE ALL ON %s.%s FROM %s CASCADE;\n";
- protected static final String SET_ON_TABLE_OWNER_PATTERN = "ALTER TABLE %s.%s OWNER TO %s;\n";
- protected static final String GRANT_ON_TABLE_READ_PATTERN = "GRANT SELECT ON %s.%s TO %s;\n";
- protected static final String GRANT_ON_TABLE_ALL_PATTERN = "GRANT ALL ON %s.%s TO %s;\n";
- protected static final String GRANT_ON_FUNCTION_PATTERN = "GRANT EXECUTE ON FUNCTION %s TO %s;\n";
- protected static final String REVOKE_ON_SCHEMA_ALL_PATTERN = "REVOKE ALL ON SCHEMA %s FROM %s CASCADE;\n";
- protected static final String REVOKE_ON_FUNCTIONS_PATTERN = "REVOKE EXECUTE ON FUNCTION %s FROM %s CASCADE;\n";
- protected static final String GRANT_ON_SCHEMA_ALL_PATTERN = "GRANT USAGE ON SCHEMA %s TO %s;\n";
- protected static final Set<String> EXTRA_TABLES = Sets.newHashSet(
+ private static final String OBSERVE_LONGLINE_SCHEMA_NAME = "observe_longline";
+ private static final Function<String, String> ESCAPE_STRING = input -> "\"" + input + "\"";
+ private static final String REVOKE_ON_TABLE_ALL_PATTERN = "REVOKE ALL ON %s.%s FROM %s CASCADE;";
+ private static final String SET_ON_TABLE_OWNER_PATTERN = "ALTER TABLE %s.%s OWNER TO %s;";
+ private static final String GRANT_ON_TABLE_READ_PATTERN = "GRANT SELECT ON %s.%s TO %s;";
+ private static final String GRANT_ON_TABLE_ALL_PATTERN = "GRANT ALL ON %s.%s TO %s;";
+ private static final String GRANT_ON_FUNCTION_PATTERN = "GRANT EXECUTE ON FUNCTION %s TO %s;";
+ private static final String REVOKE_ON_SCHEMA_ALL_PATTERN = "REVOKE ALL ON SCHEMA %s FROM %s CASCADE;";
+ private static final String REVOKE_ON_FUNCTIONS_PATTERN = "REVOKE EXECUTE ON FUNCTION %s FROM %s CASCADE;";
+ private static final String GRANT_ON_SCHEMA_ALL_PATTERN = "GRANT USAGE ON SCHEMA %s TO %s;";
+ private static final Set<String> EXTRA_TABLES = Sets.newHashSet(
TMSVersionHibernateDao.TABLE_NAME,
TMSVersionHibernateDao.LEGACY_TABLE_NAME);
- protected static final Set<String> FUNCTION_NAMES_PREFIXS = Sets.newHashSet("ST_MakePoint",
- "ST_SetSRID",
- "sync_",
- "tr_sync",
- "ot_enhanced_school_type",
- "observe_");
- protected static final String SCHEMA_PUBLIC = "public";
- protected static final Set<String> SCHEMAS = Sets.newHashSet(SCHEMA_PUBLIC,
- OBSERVE_COMMON_SCHEMA_NAME,
- OBSERVE_SEINE_SCHEMA_NAME,
- OBSERVE_LONGLINE_SCHEMA_NAME);
+ private static final Set<String> FUNCTION_NAMES_PREFIXS = Sets.newHashSet("ST_MakePoint",
+ "ST_SetSRID",
+ "sync_",
+ "tr_sync",
+ "ot_enhanced_school_type",
+ "observe_");
+ private static final String SCHEMA_PUBLIC = "public";
+ private static final Set<String> SCHEMAS = Sets.newHashSet(SCHEMA_PUBLIC,
+ OBSERVE_COMMON_SCHEMA_NAME,
+ OBSERVE_SEINE_SCHEMA_NAME,
+ OBSERVE_LONGLINE_SCHEMA_NAME);
private static final Log log = LogFactory.getLog(ObserveSecurityHelper.class);
- protected final ObserveJdbcHelper jdbcHelper;
- protected final JdbcConfiguration jdbcConfiguration;
+ private final PostgresJdbcHelper jdbcHelper;
public ObserveSecurityHelper(JdbcConfiguration jdbcConfiguration) {
- this.jdbcConfiguration = jdbcConfiguration;
- this.jdbcHelper = new ObserveJdbcHelper(jdbcConfiguration);
+ this.jdbcHelper = new PostgresJdbcHelper(jdbcConfiguration);
}
- public void applySecurity(Set<ObserveDbUserDto> users, boolean showSql) {
+ public void applySecurity(Set<ObserveDbUserDto> users) {
if (users == null) {
throw new NullPointerException("users can not be null");
}
- String script = createSecurityScript(users);
-
- if (showSql && log.isInfoEnabled()) {
- log.info("SQL to execute :\n" + script);
+ Path scriptPath;
+ try {
+ scriptPath = Files.createTempFile("topia-sql-script-", ".sql");
+ } catch (IOException e) {
+ throw new IllegalStateException("Can't create temporary path", e);
}
- jdbcHelper.loadScript(script);
-
+ try {
+ try (SqlScriptWriter sqlScriptWriter = SqlScriptWriter.of(scriptPath)) {
+ createSecurityScript(users, sqlScriptWriter);
+ log.info(String.format("Generate security script %d statements(s) at %s", sqlScriptWriter.getStatementCount(), scriptPath));
+ }
+ jdbcHelper.consume(SqlScriptConsumer.of(scriptPath));
+ } catch (IOException e) {
+ throw new TopiaException(String.format("Can't generate security script at %s", scriptPath), e);
+ }
}
- protected String createSecurityScript(Set<ObserveDbUserDto> users) {
+ private void createSecurityScript(Set<ObserveDbUserDto> users, SqlScriptWriter sqlScriptWriter) {
List<Pair<String, String>> tables = jdbcHelper.getTables(SCHEMAS, EXTRA_TABLES);
if (tables.isEmpty()) {
// no tables
- return "";
+ return;
}
String administratorName = Iterables.get(getUserNamesByRole(users, ObserveDbRole.ADMINISTRATOR), 0);
@@ -130,16 +141,12 @@ public class ObserveSecurityHelper {
List<Pair<String, String>> referentielTables = getReferentielTables(tables);
- getDataTables(tables, referentielTables);
-
Set<String> allPostgisFunctions = new LinkedHashSet<>();
for (String postgisFunction : FUNCTION_NAMES_PREFIXS) {
Set<String> postgisFunctions = jdbcHelper.getPostgisFunctions(postgisFunction);
allPostgisFunctions.addAll(postgisFunctions);
}
- StringBuilder builder = new StringBuilder();
-
String administratorEscapedName = ESCAPE_STRING.apply(administratorName);
Set<String> technicalEscapedNames = escapedNames(technicalNames);
Set<String> usersEscapedNames = escapedNames(usersNames);
@@ -157,84 +164,66 @@ public class ObserveSecurityHelper {
String roles = StringUtil.join(privateRoles, ",", true);
- addOnTablesForRole(REVOKE_ON_TABLE_ALL_PATTERN, builder, tables, roles);
- addOnSchemaForRole(REVOKE_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, roles);
- addOnFunctionForRole(REVOKE_ON_FUNCTIONS_PATTERN, builder, allPostgisFunctions, roles);
+ addOnTablesForRole(REVOKE_ON_TABLE_ALL_PATTERN, sqlScriptWriter, tables, roles);
+ addOnSchemaForRole(REVOKE_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, roles);
+ addOnFunctionForRole(REVOKE_ON_FUNCTIONS_PATTERN, sqlScriptWriter, allPostgisFunctions, roles);
}
// ajout propriétaire
- addOnTablesForRole(SET_ON_TABLE_OWNER_PATTERN, builder, tables, administratorEscapedName);
- addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, administratorEscapedName);
- addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, builder, allPostgisFunctions, administratorEscapedName);
+ addOnTablesForRole(SET_ON_TABLE_OWNER_PATTERN, sqlScriptWriter, tables, administratorEscapedName);
+ addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, administratorEscapedName);
+ addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, sqlScriptWriter, allPostgisFunctions, administratorEscapedName);
// ajout administrateurs
if (!technicalEscapedNames.isEmpty()) {
String roles = StringUtil.join(technicalEscapedNames, ",", true);
- addOnTablesForRole(GRANT_ON_TABLE_ALL_PATTERN, builder, tables, roles);
- addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, roles);
- addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, builder, allPostgisFunctions, roles);
+ addOnTablesForRole(GRANT_ON_TABLE_ALL_PATTERN, sqlScriptWriter, tables, roles);
+ addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, roles);
+ addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, sqlScriptWriter, allPostgisFunctions, roles);
}
// ajout utilisateur
if (!usersEscapedNames.isEmpty()) {
String roles = StringUtil.join(usersEscapedNames, ",", true);
- addOnTablesForRole(GRANT_ON_TABLE_READ_PATTERN, builder, tables, roles);
- addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, roles);
- addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, builder, allPostgisFunctions, roles);
+ addOnTablesForRole(GRANT_ON_TABLE_READ_PATTERN, sqlScriptWriter, tables, roles);
+ addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, roles);
+ addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, sqlScriptWriter, allPostgisFunctions, roles);
}
// ajout referentiel
if (!referentialEscapedNames.isEmpty()) {
String roles = StringUtil.join(referentialEscapedNames, ",", true);
- addOnTablesForRole(GRANT_ON_TABLE_READ_PATTERN, builder, referentielTables, roles);
- addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, builder, SCHEMAS, roles);
- addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, builder, allPostgisFunctions, roles);
+ addOnTablesForRole(GRANT_ON_TABLE_READ_PATTERN, sqlScriptWriter, referentielTables, roles);
+ addOnSchemaForRole(GRANT_ON_SCHEMA_ALL_PATTERN, sqlScriptWriter, SCHEMAS, roles);
+ addOnSchemaForRole(GRANT_ON_FUNCTION_PATTERN, sqlScriptWriter, allPostgisFunctions, roles);
}
- String result = builder.toString();
-
- if (log.isInfoEnabled()) {
- log.info("Security script :\n" + result);
- }
- return result;
-
-
}
- protected List<String> getUserNamesByRole(Set<ObserveDbUserDto> users, ObserveDbRole role) {
+ private List<String> getUserNamesByRole(Set<ObserveDbUserDto> users, ObserveDbRole role) {
return users.stream().filter(u -> u.getRole() == role).map(ObserveDbUserDto::getName).collect(Collectors.toList());
}
- protected Set<String> escapedNames(List<String> names) {
+ private Set<String> escapedNames(List<String> names) {
return names.stream().map(ESCAPE_STRING).collect(Collectors.toSet());
}
- protected List<Pair<String, String>> getReferentielTables(Iterable<Pair<String, String>> tables) {
- Set<TopiaEntityEnum> types = new HashSet<>();
- types.addAll(Arrays.asList(Entities.REFERENCE_ENTITIES));
+ private List<Pair<String, String>> getReferentielTables(Collection<Pair<String, String>> tables) {
+ Set<TopiaEntityEnum> types = new HashSet<>(Arrays.asList(Entities.REFERENCE_ENTITIES));
- List<Pair<String, String>> result = getTables(tables, types, EXTRA_TABLES);
+ List<Pair<String, String>> result = getTables(tables, types);
if (log.isInfoEnabled()) {
StringBuilder sb = new StringBuilder();
sb.append("Detected ").append(result.size()).append(" referentiel tables :");
for (Pair<String, String> s : result) {
sb.append("\n - ").append(s);
}
- log.info(sb.toString());
- }
- return result;
- }
-
- protected List<Pair<String, String>> getDataTables(Collection<Pair<String, String>> tables,
- Collection<Pair<String, String>> referentielTables) {
- List<Pair<String, String>> result = new ArrayList<>(tables);
- result.removeAll(referentielTables);
+ List<Pair<String, String>> dataTables = new ArrayList<>(tables);
+ dataTables.removeAll(result);
- if (log.isInfoEnabled()) {
- StringBuilder sb = new StringBuilder();
- sb.append("Detected ").append(result.size()).append(" data tables :");
- for (Pair<String, String> s : result) {
+ sb.append("Detected ").append(dataTables.size()).append(" data tables :");
+ for (Pair<String, String> s : dataTables) {
sb.append("\n - ").append(s);
}
log.info(sb.toString());
@@ -242,9 +231,7 @@ public class ObserveSecurityHelper {
return result;
}
- protected List<Pair<String, String>> getTables(Iterable<Pair<String, String>> tables,
- Set<TopiaEntityEnum> types,
- Set<String> extraTypes) {
+ private List<Pair<String, String>> getTables(Iterable<Pair<String, String>> tables, Set<TopiaEntityEnum> types) {
List<Pair<String, String>> result = new ArrayList<>();
for (Pair<String, String> t : tables) {
String table = t.getRight();
@@ -257,7 +244,7 @@ public class ObserveSecurityHelper {
}
}
if (detectedType == null) {
- for (String extraType : extraTypes) {
+ for (String extraType : EXTRA_TABLES) {
if (table.equalsIgnoreCase(extraType)) {
detectedType = extraType;
break;
@@ -272,35 +259,22 @@ public class ObserveSecurityHelper {
return result;
}
- protected void addOnTablesForRole(String pattern,
- StringBuilder builder,
- Iterable<Pair<String, String>> tables,
- String role) {
-
+ private void addOnTablesForRole(String pattern, SqlScriptWriter builder, Iterable<Pair<String, String>> tables, String role) {
for (Pair<String, String> t : tables) {
- builder.append(String.format(pattern, t.getLeft(), t.getRight(), role));
+ builder.writeSql(String.format(pattern, t.getLeft(), t.getRight(), role));
}
}
- protected void addOnSchemaForRole(String pattern,
- StringBuilder builder,
- Set<String> schemas,
- String role) {
-
+ private void addOnSchemaForRole(String pattern, SqlScriptWriter builder, Set<String> schemas, String role) {
for (String t : schemas) {
- builder.append(String.format(pattern, t, role));
+ builder.writeSql(String.format(pattern, t, role));
}
}
- protected void addOnFunctionForRole(String pattern,
- StringBuilder builder,
- Set<String> functions,
- String role) {
-
+ private void addOnFunctionForRole(String pattern, SqlScriptWriter builder, Set<String> functions, String role) {
for (String t : functions) {
- builder.append(String.format(pattern, t, role));
+ builder.writeSql(String.format(pattern, t, role));
}
}
-
}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
@@ -10,22 +10,21 @@ package fr.ird.observe.services.local.service;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
+import fr.ird.observe.dto.ObserveDbRole;
import fr.ird.observe.dto.db.ObserveDbUserDto;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.entities.referentiel.ObserveReferentialEntity;
@@ -33,7 +32,7 @@ import fr.ird.observe.persistence.ObserveEntityEnum;
import fr.ird.observe.persistence.ObserveTopiaApplicationContext;
import fr.ird.observe.persistence.ObserveTopiaConfiguration;
import fr.ird.observe.persistence.ObserveTopiaConfigurationFactory;
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
+import fr.ird.observe.persistence.migration.ObserveTopiaMigrationServiceAskUserToMigrate;
import fr.ird.observe.services.configuration.DataSourceCreateConfigurationDto;
import fr.ird.observe.services.configuration.DataSourceCreateWithNoReferentialImportException;
import fr.ird.observe.services.configuration.IncompatibleDataSourceCreateConfigurationException;
@@ -44,7 +43,6 @@ import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfiguratio
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaPG;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaSupport;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConnectionTopia;
-import fr.ird.observe.services.local.ObserveJdbcHelper;
import fr.ird.observe.services.local.ObserveSecurityHelper;
import fr.ird.observe.services.local.ObserveTopiaApplicationContextFactory;
import fr.ird.observe.services.service.BabModelVersionException;
@@ -61,16 +59,21 @@ import org.nuiton.topia.persistence.jdbc.JdbcHelper;
import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModelVisitor;
+import org.nuiton.topia.persistence.sql.PostgresJdbcHelper;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
+import org.nuiton.topia.service.migration.version.TMSVersion;
+import org.nuiton.topia.service.migration.version.TMSVersionHibernateDao;
import org.nuiton.version.Version;
import org.nuiton.version.Versions;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
+import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
-import java.util.stream.Collectors;
import static org.nuiton.i18n.I18n.l;
@@ -100,9 +103,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public ObserveDataSourceInformation checkCanConnect(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException {
- if (log.isTraceEnabled()) {
- log.trace("checkCanConnect(" + dataSourceConfiguration + ")");
- }
Preconditions.checkState(dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaSupport);
ObserveDataSourceConfigurationTopiaSupport dataSourceConfigurationTopiaSupport = (ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration;
@@ -137,11 +137,11 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
// On tente une connection à la base
ObserveTopiaConfiguration topiaConfiguration = ObserveTopiaConfigurationFactory.forH2Database(h2DataSourceConfiguration.getDirectory(),
- h2DataSourceConfiguration.getDbName(),
- h2DataSourceConfiguration.getUsername(),
- new String(h2DataSourceConfiguration.getPassword()),
- false,
- false);
+ h2DataSourceConfiguration.getDbName(),
+ h2DataSourceConfiguration.getUsername(),
+ new String(h2DataSourceConfiguration.getPassword()),
+ false,
+ false);
try {
@@ -162,9 +162,9 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
ObserveDataSourceConfigurationTopiaPG pgDataSourceConfiguration = (ObserveDataSourceConfigurationTopiaPG) dataSourceConfigurationTopiaSupport;
// On tente une connexion au serveur
ObserveTopiaConfiguration topiaConfiguration = ObserveTopiaConfigurationFactory.forPostgresqlDatabase(pgDataSourceConfiguration.getJdbcUrl(),
- pgDataSourceConfiguration.getUsername(),
- new String(pgDataSourceConfiguration.getPassword()),
- false,
+ pgDataSourceConfiguration.getUsername(),
+ new String(pgDataSourceConfiguration.getPassword()),
+ false,
false);
try {
@@ -187,9 +187,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
public ObserveDataSourceConnectionTopia create(ObserveDataSourceConfiguration dataSourceConfiguration, DataSourceCreateConfigurationDto dataSourceCreateConfiguration)
throws IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException,
BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException {
- if (log.isTraceEnabled()) {
- log.trace("create(" + dataSourceConfiguration + ", " + dataSourceCreateConfiguration + ")");
- }
dataSourceCreateConfiguration.validateConfiguration();
@@ -274,9 +271,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
if (importStandaloneReferantial) {
- if (log.isInfoEnabled()) {
- log.info("Import referential.");
- }
+ log.info("Import referential.");
ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportReferentialDataSourceConfiguration();
@@ -336,9 +331,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
// Récupération du dump qui contient les données
ImmutableSet<String> importDataIds = dataSourceCreateConfiguration.getImportDataIds();
- if (log.isInfoEnabled()) {
- log.info("Get data: " + importDataIds);
- }
+ log.info("Get data: " + importDataIds);
request.dataIdsToAdd(importDataIds);
@@ -394,9 +387,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public ObserveDataSourceConnectionTopia open(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException, BabModelVersionException {
- if (log.isTraceEnabled()) {
- log.trace("open(" + dataSourceConfiguration + ")");
- }
ObserveDataSourceInformation dataSourceInformation = checkCanConnect(dataSourceConfiguration);
@@ -418,9 +408,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public void close() {
- if (log.isTraceEnabled()) {
- log.trace("close()");
- }
ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration().orElseThrow(IllegalStateException::new);
Optional<ObserveTopiaApplicationContext> optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContextIfPresent(dataSourceConfiguration);
@@ -431,9 +418,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public void destroy() throws DatabaseDestroyNotAuthorizedException {
- if (log.isTraceEnabled()) {
- log.trace("destroy()");
- }
ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration().orElseThrow(IllegalStateException::new);
@@ -461,7 +445,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
public void backup(File backupFile) {
if (!serviceContext.getTopiaApplicationContext().getConfiguration().isH2Configuration()) {
-
throw new IllegalStateException("Cant backup a none H2 database.");
}
@@ -471,26 +454,32 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public Set<ObserveDbUserDto> getUsers(ObserveDataSourceConfiguration dataSourceConfiguration) {
- if (log.isTraceEnabled()) {
- log.trace("getUsers(" + dataSourceConfiguration + ")");
- }
- Set<ObserveDbUserDto> users = Sets.newHashSet();
+ Set<ObserveDbUserDto> users = new LinkedHashSet<>();
// pas d'user pour les bases autres que postgresql
if (dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaPG) {
ObserveDataSourceConfigurationTopiaPG sourceConfiguration = (ObserveDataSourceConfigurationTopiaPG) dataSourceConfiguration;
- ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(sourceConfiguration);
-
- ObserveTopiaConfiguration topiaConfiguration = topiaApplicationContext.getConfiguration();
+ try (ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(sourceConfiguration)) {
- ObserveJdbcHelper observeJdbcHelper = new ObserveJdbcHelper(topiaConfiguration);
+ ObserveTopiaConfiguration topiaConfiguration = topiaApplicationContext.getConfiguration();
- users.addAll(observeJdbcHelper.getUsers());
+ PostgresJdbcHelper observeJdbcHelper = new PostgresJdbcHelper(topiaConfiguration);
- topiaApplicationContext.close();
+ Set<String> userNames = observeJdbcHelper.getRoles();
+ for (String userName : userNames) {
+ ObserveDbUserDto user = new ObserveDbUserDto();
+ user.setName(userName);
+ if (topiaConfiguration.getJdbcConnectionUser().equals(userName)) {
+ user.setRole(ObserveDbRole.ADMINISTRATOR);
+ } else {
+ user.setRole(ObserveDbRole.UNUSED);
+ }
+ users.add(user);
+ }
+ }
}
@@ -499,22 +488,18 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public void applySecurity(ObserveDataSourceConfiguration dataSourceConfiguration, ImmutableSet<ObserveDbUserDto> users) {
- if (log.isTraceEnabled()) {
- log.trace("applySecurity(" + dataSourceConfiguration + ", [" + Joiner.on(", ").join(users.stream().map(ObserveDbUserDto::getName).collect(Collectors.toList())) + "])");
- }
// pas de securité pour les bases autres que postgresql
if (dataSourceConfiguration instanceof ObserveDataSourceConfigurationTopiaPG) {
ObserveDataSourceConfigurationTopiaPG sourceConfiguration = (ObserveDataSourceConfigurationTopiaPG) dataSourceConfiguration;
- ObserveTopiaApplicationContext optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(sourceConfiguration);
-
- ObserveTopiaConfiguration topiaConfiguration = optionalTopiaApplicationContext.getConfiguration();
-
- ObserveSecurityHelper securityHelper = new ObserveSecurityHelper(topiaConfiguration);
+ ObserveTopiaConfiguration topiaConfiguration;
+ try (ObserveTopiaApplicationContext optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext(sourceConfiguration)) {
- securityHelper.applySecurity(users, sourceConfiguration.isShowMigrationSql());
+ topiaConfiguration = optionalTopiaApplicationContext.getConfiguration();
+ new ObserveSecurityHelper(topiaConfiguration).applySecurity(users);
+ }
}
@@ -522,14 +507,8 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
@Override
public void migrateData(ObserveDataSourceConfiguration dataSourceConfiguration) {
- if (log.isTraceEnabled()) {
- log.trace("migrateData(" + dataSourceConfiguration + ")");
- }
-
ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.getOrCreateTopiaApplicationContext((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration);
-
topiaApplicationContext.getMigrationService().runSchemaMigration();
-
}
@Override
@@ -561,9 +540,9 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
Version version;
- ObserveJdbcHelper observeJdbcHelper = new ObserveJdbcHelper(topiaConfiguration);
+ PostgresJdbcHelper jdbcHelper = new PostgresJdbcHelper(topiaConfiguration);
- version = observeJdbcHelper.getVersion();
+ version = TMSVersionHibernateDao.getVersion(jdbcHelper, "tms_version").map(TMSVersion::toVersion).orElse(Version.VZERO);
if (dataSourceConfiguration.isH2Database()) {
@@ -594,45 +573,36 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
// stockées dans pg canWriteData, canWrite pour etre sur du resultat
// recherche des droits sur les données observers
- Set<String> dataPrivileges = observeJdbcHelper.getTablePrivileges(ObserveSecurityHelper.OBSERVE_SEINE_SCHEMA_NAME, "trip");
+ Set<String> dataPrivileges = jdbcHelper.getTablePrivileges(ObserveSecurityHelper.OBSERVE_SEINE_SCHEMA_NAME, "trip");
readData = canRead(dataPrivileges);
writeData = canWrite(dataPrivileges);
// recherche des droits sur le referentiel
- Set<String> referentielPrivileges = observeJdbcHelper.getTablePrivileges(ObserveSecurityHelper.OBSERVE_COMMON_SCHEMA_NAME, "vessel");
+ Set<String> referentielPrivileges = jdbcHelper.getTablePrivileges(ObserveSecurityHelper.OBSERVE_COMMON_SCHEMA_NAME, "vessel");
// Sur une base PG, on regarde en base ce que l'utilisateur peut lire/écrire
writeReferential = canWrite(referentielPrivileges);
-
}
- if (log.isDebugEnabled()) {
- log.debug("User can write referential : " + writeReferential + ", " +
- "read data : " + readData + ", " +
- "write data : " + writeData + ".");
- }
+ log.debug(String.format("User can write referential : %s, read data : %s, write data : %s.", writeReferential, readData, writeData));
- ObserveMigrationConfigurationProvider observeMigrationConfigurationProvider = ObserveMigrationConfigurationProvider.get();
+ MigrationVersionResourceProvider observeMigrationConfigurationProvider = MigrationVersionResourceProvider.get();
return new ObserveDataSourceInformation(
true,
writeReferential,
readData,
writeData,
- observeMigrationConfigurationProvider.getMinimumVersion(),
+ ObserveTopiaMigrationServiceAskUserToMigrate.getMinimumVersion(),
version,
observeMigrationConfigurationProvider.getVersionsAfter(version));
}
private void close(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration, ObserveTopiaApplicationContext topiaApplicationContext) {
if (topiaApplicationContext != null) {
-
- if (log.isInfoEnabled()) {
- log.info("Closing topia application context: " + dataSourceConfiguration);
- }
+ log.info("Closing topia application context: " + dataSourceConfiguration);
topiaApplicationContext.close();
-
}
}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocal.java
@@ -24,7 +24,6 @@ package fr.ird.observe.services.local.service.sql;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ListMultimap;
-import org.nuiton.topia.persistence.util.TopiaBlobsContainer;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.persistence.Entities;
import fr.ird.observe.persistence.ObserveEntityEnum;
@@ -39,10 +38,10 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
+import org.nuiton.topia.persistence.util.TopiaBlobsContainer;
import org.nuiton.topia.service.sql.batch.SqlRequests;
import org.nuiton.topia.service.sql.batch.SqlResult;
import org.nuiton.topia.service.sql.batch.TopiaSqlBatchService;
-import org.nuiton.topia.service.sql.batch.actions.BlobsContainer;
import org.nuiton.topia.service.sql.batch.actions.TopiaSqlTableSelectArgument;
import java.io.ByteArrayOutputStream;
@@ -83,8 +82,8 @@ public class SqlScriptProducerServiceLocal extends ObserveServiceLocal implement
SqlRequests sqlRequests = sqlRequests(request, builder);
SqlResult sqlResult = sqlBatchService.execute(sqlRequests);
- ImmutableSet<BlobsContainer> blobsContainers = sqlResult.getBlobsContainers();
- for (BlobsContainer blobsContainer : blobsContainers) {
+ ImmutableSet<TopiaBlobsContainer> blobsContainers = sqlResult.getBlobsContainers();
+ for (TopiaBlobsContainer blobsContainer : blobsContainers) {
observeBlobContainers.add(new TopiaBlobsContainer(blobsContainer.getTableName(),
blobsContainer.getColumnName(),
blobsContainer.getBlobsById()));
=====================================
services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
@@ -10,23 +10,23 @@ package fr.ird.observe.services.local;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
import fr.ird.observe.test.TestHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
import org.nuiton.version.Version;
import java.io.File;
@@ -100,7 +100,7 @@ public class DataSourcesForTestManager {
configurationTopiaH2.setDirectory(localDbFile);
configurationTopiaH2.setDbName("obstuna");
configurationTopiaH2.setAutoMigrate(true);
- configurationTopiaH2.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaH2.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaH2;
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -25,7 +25,6 @@ package fr.ird.observe.services.local.service;
import fr.ird.observe.dto.data.seine.TripSeineDto;
import fr.ird.observe.dto.form.Form;
import fr.ird.observe.dto.referential.ProgramDto;
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.ObserveDataSourceConnection;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaPG;
import fr.ird.observe.services.security.UnauthorizedException;
@@ -42,6 +41,7 @@ import fr.ird.observe.test.spi.DatabasePasswordConfiguration;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
/**
* FIXME Ca sert à quoi ? et je comprends pas le mot rigth ?
@@ -102,13 +102,12 @@ public class RigthTest extends ServiceLocalTestSupport {
configurationTopiaPG.setUsername(login);
configurationTopiaPG.setPassword('a');
configurationTopiaPG.setAutoMigrate(true);
- configurationTopiaPG.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaPG.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaPG;
}
-
public void testReadData(String login) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException {
TripSeineService service = localTestMethodResource.newService(TripSeineService.class);
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/ea21fa2b2727128cd6db61cb05c…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/ea21fa2b2727128cd6db61cb05c…
You're receiving this email because of your account on gitlab.com.
1
0
11 May '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
0b7f4491 by Tony CHEMIT at 2018-05-11T21:18:22Z
use last toolkit and new topia api
- - - - -
7 changed files:
- client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
- − persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java
- persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
- pom.xml
- services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
- services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
- services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
Changes:
=====================================
client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
=====================================
--- a/client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
+++ b/client/src/test/java/fr/ird/observe/client/DataSourcesForTestManager.java
@@ -10,23 +10,23 @@ package fr.ird.observe.client;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
import fr.ird.observe.test.TestHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
import org.nuiton.version.Version;
import java.io.File;
@@ -100,7 +100,7 @@ public class DataSourcesForTestManager {
configurationTopiaH2.setDirectory(localDbFile);
configurationTopiaH2.setDbName("obstuna");
configurationTopiaH2.setAutoMigrate(true);
- configurationTopiaH2.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaH2.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaH2;
}
@@ -116,7 +116,7 @@ public class DataSourcesForTestManager {
private void deleteDirectory(Path directory) {
try {
log.debug(String.format("Delete directory: %s", directory));
- Files.walk(directory).filter(f->!f.equals(directory)).forEach(f -> {
+ Files.walk(directory).filter(f -> !f.equals(directory)).forEach(f -> {
try {
if (Files.isDirectory(f)) {
deleteDirectory(f);
=====================================
persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java deleted
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveMigrationConfigurationProvider.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package fr.ird.observe.persistence.migration;
-
-/*-
- * #%L
- * ObServe :: Persistence
- * %%
- * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.ImmutableList;
-import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
-import org.nuiton.version.Version;
-import org.nuiton.version.VersionBuilder;
-
-import java.util.List;
-
-/**
- * Created on 01/08/16.
- *
- * @author Tony Chemit - dev(a)tchemit.fr
- * @since 5.0
- */
-public final class ObserveMigrationConfigurationProvider {
-
- private static ObserveMigrationConfigurationProvider INSTANCE;
-
- private final MigrationVersionResourceProvider resourceProvider;
-
- private ObserveMigrationConfigurationProvider() {
- resourceProvider = new MigrationVersionResourceProvider();
- }
-
- public static ObserveMigrationConfigurationProvider get() {
- if (INSTANCE == null) {
- INSTANCE = new ObserveMigrationConfigurationProvider();
- }
- return INSTANCE;
- }
-
- public List<Version> getAvailableVersions() {
- return resourceProvider.getAvailableVersions();
- }
-
- public Version getLastVersion() {
- return resourceProvider.getLastVersion();
- }
-
- public ImmutableList<Version> getVersionsAfter(Version current) {
- return resourceProvider.getVersionsAfter(current);
- }
-
- public Version getMinimumVersion() {
- return VersionBuilder.create("3.0").build();
- }
-
-}
=====================================
persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
+++ b/persistence/src/main/java/fr/ird/observe/persistence/migration/ObserveTopiaMigrationServiceAskUserToMigrate.java
@@ -35,12 +35,13 @@ import java.util.List;
* @author Tony Chemit - dev(a)tchemit.fr
*/
@AutoService(TopiaMigrationServiceAskUserToMigrate.class)
+@SuppressWarnings("WeakerAccess")
public class ObserveTopiaMigrationServiceAskUserToMigrate implements TopiaMigrationServiceAskUserToMigrate {
- private final Version minimumVersion = VersionBuilder.create("3.0").build();
+ private static final Version MINIMUM_VERSION = VersionBuilder.create("3.0").build();
- public Version getMinimumVersion() {
- return minimumVersion;
+ public static Version getMinimumVersion() {
+ return MINIMUM_VERSION;
}
@Override
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -152,7 +152,7 @@
<maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format>
<buildDate>${maven.build.timestamp}</buildDate>
- <observeToolkitVersion>3.4-SNAPSHOT</observeToolkitVersion>
+ <observeToolkitVersion>3.5-SNAPSHOT</observeToolkitVersion>
<!--<lib.version.java4all.jaxx>3.0-alpha-31</lib.version.java4all.jaxx>-->
<!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>-->
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
@@ -33,7 +33,7 @@ import fr.ird.observe.persistence.ObserveEntityEnum;
import fr.ird.observe.persistence.ObserveTopiaApplicationContext;
import fr.ird.observe.persistence.ObserveTopiaConfiguration;
import fr.ird.observe.persistence.ObserveTopiaConfigurationFactory;
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
+import fr.ird.observe.persistence.migration.ObserveTopiaMigrationServiceAskUserToMigrate;
import fr.ird.observe.services.configuration.DataSourceCreateConfigurationDto;
import fr.ird.observe.services.configuration.DataSourceCreateWithNoReferentialImportException;
import fr.ird.observe.services.configuration.IncompatibleDataSourceCreateConfigurationException;
@@ -61,6 +61,7 @@ import org.nuiton.topia.persistence.jdbc.JdbcHelper;
import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModelVisitor;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
import org.nuiton.version.Version;
import org.nuiton.version.Versions;
@@ -614,13 +615,13 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
"write data : " + writeData + ".");
}
- ObserveMigrationConfigurationProvider observeMigrationConfigurationProvider = ObserveMigrationConfigurationProvider.get();
+ MigrationVersionResourceProvider observeMigrationConfigurationProvider = MigrationVersionResourceProvider.get();
return new ObserveDataSourceInformation(
true,
writeReferential,
readData,
writeData,
- observeMigrationConfigurationProvider.getMinimumVersion(),
+ ObserveTopiaMigrationServiceAskUserToMigrate.getMinimumVersion(),
version,
observeMigrationConfigurationProvider.getVersionsAfter(version));
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/DataSourcesForTestManager.java
@@ -10,23 +10,23 @@ package fr.ird.observe.services.local;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
import fr.ird.observe.test.TestHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
import org.nuiton.version.Version;
import java.io.File;
@@ -100,7 +100,7 @@ public class DataSourcesForTestManager {
configurationTopiaH2.setDirectory(localDbFile);
configurationTopiaH2.setDbName("obstuna");
configurationTopiaH2.setAutoMigrate(true);
- configurationTopiaH2.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaH2.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaH2;
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/service/RigthTest.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -25,7 +25,6 @@ package fr.ird.observe.services.local.service;
import fr.ird.observe.dto.data.seine.TripSeineDto;
import fr.ird.observe.dto.form.Form;
import fr.ird.observe.dto.referential.ProgramDto;
-import fr.ird.observe.persistence.migration.ObserveMigrationConfigurationProvider;
import fr.ird.observe.services.configuration.ObserveDataSourceConnection;
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaPG;
import fr.ird.observe.services.security.UnauthorizedException;
@@ -42,6 +41,7 @@ import fr.ird.observe.test.spi.DatabasePasswordConfiguration;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
+import org.nuiton.topia.service.migration.resources.MigrationVersionResourceProvider;
/**
* FIXME Ca sert à quoi ? et je comprends pas le mot rigth ?
@@ -102,13 +102,12 @@ public class RigthTest extends ServiceLocalTestSupport {
configurationTopiaPG.setUsername(login);
configurationTopiaPG.setPassword('a');
configurationTopiaPG.setAutoMigrate(true);
- configurationTopiaPG.setModelVersion(ObserveMigrationConfigurationProvider.get().getLastVersion());
+ configurationTopiaPG.setModelVersion(MigrationVersionResourceProvider.get().getLastVersion());
return configurationTopiaPG;
}
-
public void testReadData(String login) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException {
TripSeineService service = localTestMethodResource.newService(TripSeineService.class);
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/0b7f449156c2ddbc8202c282856…
--
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/0b7f449156c2ddbc8202c282856…
You're receiving this email because of your account on gitlab.com.
1
0