Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
cb0ab1b3
by Tony Chemit at 2020-05-12T17:38:05+02:00
11 changed files:
- client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java
- client-datasource-editor-api/src/main/i18n/getters/java.getter
- client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/StorageUIHandler.java
- client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/StorageUIModel.java
- client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/presets/actions/TestRemote.java
- client-runner/src/main/java/fr/ird/observe/client/RunObserve.java
- observe-i18n/src/main/i18n/translations/observe_en_GB.properties
- observe-i18n/src/main/i18n/translations/observe_es_ES.properties
- observe-i18n/src/main/i18n/translations/observe_fr_FR.properties
- pom.xml
- services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
Changes:
| ... | ... | @@ -115,7 +115,8 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport { |
| 115 | 115 |
private boolean modified;
|
| 116 | 116 |
// indique si l'utilisateur connecté est le propriétaire de la base
|
| 117 | 117 |
private boolean owner;
|
| 118 |
- private ObserveServiceMainFactory serviceFactory;
|
|
| 118 |
+ private boolean superUser;
|
|
| 119 |
+ private final ObserveServiceMainFactory serviceFactory;
|
|
| 119 | 120 |
|
| 120 | 121 |
public ObserveSwingDataSource(ClientConfig config, ObserveServiceMainFactory serviceFactory, ObserveDataSourceConfiguration configuration) {
|
| 121 | 122 |
this.config = config;
|
| ... | ... | @@ -201,7 +202,9 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport { |
| 201 | 202 |
canWriteReferential(),
|
| 202 | 203 |
canReadData(),
|
| 203 | 204 |
canWriteData(),
|
| 204 |
- isOwner(), getVersion(),
|
|
| 205 |
+ isOwner(),
|
|
| 206 |
+ isSuperUser(),
|
|
| 207 |
+ getVersion(),
|
|
| 205 | 208 |
getVersion(),
|
| 206 | 209 |
ImmutableList.of());
|
| 207 | 210 |
}
|
| ... | ... | @@ -446,6 +449,14 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport { |
| 446 | 449 |
return configuration instanceof ObserveDataSourceConfigurationRest;
|
| 447 | 450 |
}
|
| 448 | 451 |
|
| 452 |
+ public boolean isSuperUser() {
|
|
| 453 |
+ return superUser;
|
|
| 454 |
+ }
|
|
| 455 |
+ |
|
| 456 |
+ public void setSuperUser(boolean superUser) {
|
|
| 457 |
+ this.superUser = superUser;
|
|
| 458 |
+ }
|
|
| 459 |
+ |
|
| 449 | 460 |
public void addObserveSwingDataSourceListener(ObserveSwingDataSourceListener listener) {
|
| 450 | 461 |
listenerList.add(ObserveSwingDataSourceListener.class, listener);
|
| 451 | 462 |
}
|
| ... | ... | @@ -187,6 +187,7 @@ observe.storage.error.rest.user.unknown |
| 187 | 187 |
observe.storage.error.serverVersionMismatch
|
| 188 | 188 |
observe.storage.error.serverVersionModelMismatch
|
| 189 | 189 |
observe.storage.error.user.not.owner
|
| 190 |
+observe.storage.error.user.not.superUser
|
|
| 190 | 191 |
observe.storage.internalDump.last.modified
|
| 191 | 192 |
observe.storage.internalDump.not.exist
|
| 192 | 193 |
observe.storage.label.data.import.db
|
| ... | ... | @@ -486,6 +486,7 @@ public class StorageUIHandler implements UIHandler<StorageUI>, WithDecoratorServ |
| 486 | 486 |
|
| 487 | 487 |
ObserveDataSourceInformation dataSourceInformation = currentDataSource.checkCanConnect(false);
|
| 488 | 488 |
currentDataSource.setOwner(dataSourceInformation.isOwner());
|
| 489 |
+ currentDataSource.setSuperUser(dataSourceInformation.isSuperUser());
|
|
| 489 | 490 |
progressModel.setExtent(1);
|
| 490 | 491 |
|
| 491 | 492 |
currentDataSource.migrateData(dataSourceInformation, config.getModelVersion());
|
| ... | ... | @@ -477,6 +477,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 477 | 477 |
}
|
| 478 | 478 |
if (getDataSourceInformation() != null) {
|
| 479 | 479 |
dataSource.setOwner(getDataSourceInformation().isOwner());
|
| 480 |
+ dataSource.setSuperUser(getDataSourceInformation().isSuperUser());
|
|
| 480 | 481 |
}
|
| 481 | 482 |
return dataSource;
|
| 482 | 483 |
}
|
| ... | ... | @@ -1689,6 +1690,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 1689 | 1690 |
boolean createAction = ObstunaAdminAction.CREATE.equals(adminAction);
|
| 1690 | 1691 |
dataSourceInformation = dataSource.checkCanConnect(createAction);
|
| 1691 | 1692 |
dataSource.setOwner(dataSourceInformation.isOwner());
|
| 1693 |
+ dataSource.setSuperUser(dataSourceInformation.isSuperUser());
|
|
| 1692 | 1694 |
Version versionDataSource = dataSourceInformation.getVersion();
|
| 1693 | 1695 |
|
| 1694 | 1696 |
// en mise a jour de la base on ne test pas la version
|
| ... | ... | @@ -1745,6 +1747,11 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 1745 | 1747 |
log.error(connexionStatusError);
|
| 1746 | 1748 |
setConnexionStatus(ConnexionStatus.FAILED);
|
| 1747 | 1749 |
result = false;
|
| 1750 |
+ } else if (!dataSourceInformation.isSuperUser()) {
|
|
| 1751 |
+ connexionStatusError = t("observe.storage.error.user.not.superUser");
|
|
| 1752 |
+ log.error(connexionStatusError);
|
|
| 1753 |
+ setConnexionStatus(ConnexionStatus.FAILED);
|
|
| 1754 |
+ result = false;
|
|
| 1748 | 1755 |
}
|
| 1749 | 1756 |
}
|
| 1750 | 1757 |
return result;
|
| ... | ... | @@ -66,6 +66,7 @@ public class TestRemote extends RemoteActionSupport { |
| 66 | 66 |
|
| 67 | 67 |
ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(false);
|
| 68 | 68 |
dataSource.setOwner(dataSourceInformation.isOwner());
|
| 69 |
+ dataSource.setSuperUser(dataSourceInformation.isSuperUser());
|
|
| 69 | 70 |
|
| 70 | 71 |
Version versionDataSource = dataSourceInformation.getVersion();
|
| 71 | 72 |
|
| ... | ... | @@ -380,6 +380,7 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, |
| 380 | 380 |
|
| 381 | 381 |
ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(false);
|
| 382 | 382 |
dataSource.setOwner(dataSourceInformation.isOwner());
|
| 383 |
+ dataSource.setSuperUser(dataSourceInformation.isSuperUser());
|
|
| 383 | 384 |
dataSource.migrateDataIfPossible(dataSourceInformation, config.getModelVersion());
|
| 384 | 385 |
|
| 385 | 386 |
// la source sera utilisée dans les ui
|
| ... | ... | @@ -2780,6 +2780,7 @@ observe.storage.error.rest.user.unknown=User "%s" is not defined on server |
| 2780 | 2780 |
observe.storage.error.serverVersionMismatch=Remote server version (%s) is not compliant with the client version (%s)
|
| 2781 | 2781 |
observe.storage.error.serverVersionModelMismatch=Remote server model version (%s) is not compliant with the client model version (%s)
|
| 2782 | 2782 |
observe.storage.error.user.not.owner=User must be owner of database to perform this action\!
|
| 2783 |
+observe.storage.error.user.not.superUser=User must be super-user of database to perform this action\!
|
|
| 2783 | 2784 |
observe.storage.import.data.fromBackup=Import data from a backup of a local database (*.sql.gz)
|
| 2784 | 2785 |
observe.storage.import.data.fromRemoteStorage=Import data from a remote database
|
| 2785 | 2786 |
observe.storage.import.data.fromServerStorage=Import data from a remove server
|
| ... | ... | @@ -2780,6 +2780,7 @@ observe.storage.error.rest.user.unknown=El usuario "%s" no es conocido del servi |
| 2780 | 2780 |
observe.storage.error.serverVersionMismatch=La versión del servidor remoto (%s) no es compatible con la versión del modelo (%s)
|
| 2781 | 2781 |
observe.storage.error.serverVersionModelMismatch=La version du modèle du serveur distant (%s) n'est pas compatible avec la version du modèle du client (%s) \#TODO
|
| 2782 | 2782 |
observe.storage.error.user.not.owner=User must be owner of database to perform this action\! \#TODO
|
| 2783 |
+observe.storage.error.user.not.superUser=User must be super-user of database to perform this action\! \#TODO
|
|
| 2783 | 2784 |
observe.storage.import.data.fromBackup=Importar los datos de una copia de seguridad de una base local (*.sql.gz)
|
| 2784 | 2785 |
observe.storage.import.data.fromRemoteStorage=Importar los datos de una base remota
|
| 2785 | 2786 |
observe.storage.import.data.fromServerStorage=Importar los datos de un servidor remoto
|
| ... | ... | @@ -2780,6 +2780,7 @@ observe.storage.error.rest.user.unknown=L'utilisateur "%s" est inconnu sur le se |
| 2780 | 2780 |
observe.storage.error.serverVersionMismatch=La version du serveur distant (%s) n'est pas compatible avec la version du client (%s)
|
| 2781 | 2781 |
observe.storage.error.serverVersionModelMismatch=La version du modèle du serveur distant (%s) n'est pas compatible avec la version du modèle du client (%s)
|
| 2782 | 2782 |
observe.storage.error.user.not.owner=L'utilisateur doit être le propriétaire de la base pour effectuer cette opération \!
|
| 2783 |
+observe.storage.error.user.not.superUser=L'utilisateur doit être *Super utilisateur* pour effectuer cette opération \!
|
|
| 2783 | 2784 |
observe.storage.import.data.fromBackup=Importer les données depuis une sauvegarde de base locale (*.sql.gz)
|
| 2784 | 2785 |
observe.storage.import.data.fromRemoteStorage=Importer les données depuis une base distante
|
| 2785 | 2786 |
observe.storage.import.data.fromServerStorage=Importer les données depuis un serveur distant
|
| ... | ... | @@ -24,7 +24,7 @@ |
| 24 | 24 |
<parent>
|
| 25 | 25 |
<groupId>io.ultreia.maven</groupId>
|
| 26 | 26 |
<artifactId>pom</artifactId>
|
| 27 |
- <version>2020.24</version>
|
|
| 27 |
+ <version>2020.25</version>
|
|
| 28 | 28 |
</parent>
|
| 29 | 29 |
|
| 30 | 30 |
<groupId>fr.ird.observe</groupId>
|
| ... | ... | @@ -162,7 +162,7 @@ |
| 162 | 162 |
<maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format>
|
| 163 | 163 |
<buildDate>${maven.build.timestamp}</buildDate>
|
| 164 | 164 |
|
| 165 |
- <lib.version.toolkit>4.29</lib.version.toolkit>
|
|
| 165 |
+ <lib.version.toolkit>4.30</lib.version.toolkit>
|
|
| 166 | 166 |
<lib.version.nuiton.validation>3.1</lib.version.nuiton.validation>
|
| 167 | 167 |
<!--can't use 1.4.197 (date has changed + blob also)-->
|
| 168 | 168 |
<lib.version.h2>1.4.196</lib.version.h2>
|
| ... | ... | @@ -176,7 +176,7 @@ |
| 176 | 176 |
<!--<lib.version.java4all.i18n>4.0-beta-3-SNAPSHOT</lib.version.java4all.i18n>-->
|
| 177 | 177 |
<!--<lib.version.java4all.config>1.0.8-SNAPSHOT</lib.version.java4all.config>-->
|
| 178 | 178 |
<!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>-->
|
| 179 |
-<!-- <lib.version.java4all.topia>1.19-SNAPSHOT</lib.version.java4all.topia>-->
|
|
| 179 |
+<!-- <lib.version.java4all.topia>1.20-SNAPSHOT</lib.version.java4all.topia>-->
|
|
| 180 | 180 |
<!--<lib.version.java4all.http>1.0.17-SNAPSHOT</lib.version.java4all.http>-->
|
| 181 | 181 |
|
| 182 | 182 |
<!-- license header configuration -->
|
| ... | ... | @@ -105,6 +105,13 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS |
| 105 | 105 |
return jdbcHelper.isOwner();
|
| 106 | 106 |
}
|
| 107 | 107 |
|
| 108 |
+ private static boolean isSuperUser(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration, JdbcPostgresHelper jdbcHelper) {
|
|
| 109 |
+ if (dataSourceConfiguration.isH2Database()) {
|
|
| 110 |
+ return true;
|
|
| 111 |
+ }
|
|
| 112 |
+ return jdbcHelper.isSuperUser();
|
|
| 113 |
+ }
|
|
| 114 |
+ |
|
| 108 | 115 |
@Override
|
| 109 | 116 |
public ObserveDataSourceInformation checkCanConnectOrBeEmpty(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException {
|
| 110 | 117 |
ObserveDataSourceConfigurationTopiaSupport dataSourceConfigurationTopiaSupport = (ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration;
|
| ... | ... | @@ -630,6 +637,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS |
| 630 | 637 |
|
| 631 | 638 |
JdbcPostgresHelper jdbcHelper = new JdbcPostgresHelper(topiaConfiguration);
|
| 632 | 639 |
boolean owner = isOwner(dataSourceConfiguration, jdbcHelper);
|
| 640 |
+ boolean superUser = isSuperUser(dataSourceConfiguration, jdbcHelper);
|
|
| 633 | 641 |
|
| 634 | 642 |
try {
|
| 635 | 643 |
version = TMSVersionHibernateDao.getVersion(jdbcHelper, "tms_version").map(TMSVersion::toVersion).orElse(Version.VZERO);
|
| ... | ... | @@ -643,7 +651,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS |
| 643 | 651 |
writeReferential = false;
|
| 644 | 652 |
readData = true;
|
| 645 | 653 |
writeData = true;
|
| 646 |
- owner = true;
|
|
| 647 | 654 |
|
| 648 | 655 |
} else {
|
| 649 | 656 |
writeReferential = true;
|
| ... | ... | @@ -656,6 +663,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS |
| 656 | 663 |
readData,
|
| 657 | 664 |
writeData,
|
| 658 | 665 |
owner,
|
| 666 |
+ superUser,
|
|
| 659 | 667 |
ObserveTopiaMigrationServiceAskUserToMigrate.getMinimumVersion(),
|
| 660 | 668 |
null,
|
| 661 | 669 |
null);
|
| ... | ... | @@ -712,6 +720,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS |
| 712 | 720 |
readData,
|
| 713 | 721 |
writeData,
|
| 714 | 722 |
owner,
|
| 723 |
+ superUser,
|
|
| 715 | 724 |
ObserveTopiaMigrationServiceAskUserToMigrate.getMinimumVersion(),
|
| 716 | 725 |
version,
|
| 717 | 726 |
observeMigrationConfigurationProvider.getVersionsAfter(version));
|