Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
1ccd9702
by Tony Chemit at 2020-07-10T13:21:05+02:00
9 changed files:
- client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java
- client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveDataSourcesManager.java
- client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java
- client-core/src/main/java/fr/ird/observe/client/main/actions/ReloadApplicationAction.java
- client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/loading/close/OpenLocalDataSourceActionStep.java
- client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/StorageUIModel.java
- client-runner/src/main/java/fr/ird/observe/client/RunObserve.java
- common-service/src/main/java/fr/ird/observe/services/configuration/rest/ObserveDataSourceConfigurationRest.java
- common-service/src/main/java/fr/ird/observe/services/configuration/topia/ObserveDataSourceConfigurationTopiaSupport.java
Changes:
| ... | ... | @@ -22,9 +22,9 @@ |
| 22 | 22 |
package fr.ird.observe.client;
|
| 23 | 23 |
|
| 24 | 24 |
import fr.ird.observe.client.configuration.ClientConfig;
|
| 25 |
-import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
|
|
| 26 | 25 |
import fr.ird.observe.services.ObserveServiceMainFactory;
|
| 27 | 26 |
import fr.ird.observe.services.ObserveServiceMainFactoryApplicationComponent;
|
| 27 |
+import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration;
|
|
| 28 | 28 |
import fr.ird.observe.spi.DtoModelHelper;
|
| 29 | 29 |
import io.ultreia.java4all.application.context.ApplicationContext;
|
| 30 | 30 |
import org.apache.logging.log4j.LogManager;
|
| ... | ... | @@ -45,7 +45,7 @@ import static io.ultreia.java4all.i18n.I18n.n; |
| 45 | 45 |
public class ObserveSwingApplicationContext extends ApplicationContext {
|
| 46 | 46 |
|
| 47 | 47 |
private static final Logger log = LogManager.getLogger(ObserveSwingApplicationContext.class);
|
| 48 |
- private static ObserveSwingDataSource dataSourceToReload;
|
|
| 48 |
+ private static ObserveDataSourceConfiguration dataSourceConfigurationToReload;
|
|
| 49 | 49 |
|
| 50 | 50 |
public static ObserveSwingApplicationContext init(ClientConfig config) {
|
| 51 | 51 |
ClientConfigFinderInstance.config = config;
|
| ... | ... | @@ -94,11 +94,11 @@ public class ObserveSwingApplicationContext extends ApplicationContext { |
| 94 | 94 |
|
| 95 | 95 |
}
|
| 96 | 96 |
|
| 97 |
- public static void setDataSourceToReload(ObserveSwingDataSource dataSourceToReload) {
|
|
| 98 |
- ObserveSwingApplicationContext.dataSourceToReload = dataSourceToReload;
|
|
| 97 |
+ public static void setDataSourceToReload(ObserveDataSourceConfiguration dataSourceToReload) {
|
|
| 98 |
+ ObserveSwingApplicationContext.dataSourceConfigurationToReload = dataSourceToReload;
|
|
| 99 | 99 |
}
|
| 100 | 100 |
|
| 101 |
- public static Optional<ObserveSwingDataSource> getDataSourceToReload() {
|
|
| 102 |
- return Optional.ofNullable(dataSourceToReload);
|
|
| 101 |
+ public static Optional<ObserveDataSourceConfiguration> getDataSourceToReload() {
|
|
| 102 |
+ return Optional.ofNullable(dataSourceConfigurationToReload);
|
|
| 103 | 103 |
}
|
| 104 | 104 |
}
|
| ... | ... | @@ -25,7 +25,6 @@ package fr.ird.observe.client.datasource.api; |
| 25 | 25 |
import fr.ird.observe.client.configuration.ClientConfig;
|
| 26 | 26 |
import fr.ird.observe.client.datasource.api.event.ObserveSwingDataSourceEvent;
|
| 27 | 27 |
import fr.ird.observe.client.datasource.api.event.ObserveSwingDataSourceListenerAdapter;
|
| 28 |
-import fr.ird.observe.client.util.ProgressModel;
|
|
| 29 | 28 |
import fr.ird.observe.navigation.model.edit.ObserveEditModel;
|
| 30 | 29 |
import fr.ird.observe.navigation.model.select.ObserveSelectModel;
|
| 31 | 30 |
import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory;
|
| ... | ... | @@ -42,6 +41,7 @@ import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; |
| 42 | 41 |
import fr.ird.observe.services.service.DatabaseNotFoundException;
|
| 43 | 42 |
import fr.ird.observe.services.service.DatabaseOpenException;
|
| 44 | 43 |
import io.ultreia.java4all.application.context.spi.GenerateApplicationComponent;
|
| 44 |
+import io.ultreia.java4all.i18n.I18n;
|
|
| 45 | 45 |
import org.apache.logging.log4j.LogManager;
|
| 46 | 46 |
import org.apache.logging.log4j.Logger;
|
| 47 | 47 |
|
| ... | ... | @@ -50,11 +50,11 @@ import java.io.File; |
| 50 | 50 |
import java.util.ArrayList;
|
| 51 | 51 |
import java.util.LinkedList;
|
| 52 | 52 |
import java.util.List;
|
| 53 |
+import java.util.Objects;
|
|
| 53 | 54 |
import java.util.Optional;
|
| 54 | 55 |
import java.util.UUID;
|
| 55 | 56 |
|
| 56 | 57 |
import static fr.ird.observe.client.configuration.ClientConfig.DB_NAME;
|
| 57 |
-import static io.ultreia.java4all.i18n.I18n.t;
|
|
| 58 | 58 |
|
| 59 | 59 |
/**
|
| 60 | 60 |
* Permet de gérer les différentes data sources utilisées dans l'application.
|
| ... | ... | @@ -102,7 +102,7 @@ public class ObserveDataSourcesManager implements Closeable { |
| 102 | 102 |
*/
|
| 103 | 103 |
public ObserveSwingDataSource newLocalDataSource() {
|
| 104 | 104 |
|
| 105 |
- ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local"));
|
|
| 105 |
+ ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local"));
|
|
| 106 | 106 |
|
| 107 | 107 |
if (!dataSourceConfigurationH2.getDatabaseFile().exists()) {
|
| 108 | 108 |
throw new IllegalStateException("local base must exist, when using this method (" +
|
| ... | ... | @@ -197,7 +197,7 @@ public class ObserveDataSourcesManager implements Closeable { |
| 197 | 197 |
super.onOpened(event);
|
| 198 | 198 |
ObserveSwingDataSource dataSource = event.getSource();
|
| 199 | 199 |
dataSources.add(dataSource);
|
| 200 |
- log.info(String.format("Data source opened : %s (%d datas sources open)", dataSource.getConfiguration(), dataSources.size()));
|
|
| 200 |
+ log.info(String.format("Data source opened : %s (%d data sources open)", dataSource.getConfiguration(), dataSources.size()));
|
|
| 201 | 201 |
}
|
| 202 | 202 |
|
| 203 | 203 |
@Override
|
| ... | ... | @@ -205,6 +205,10 @@ public class ObserveDataSourcesManager implements Closeable { |
| 205 | 205 |
super.onClosed(event);
|
| 206 | 206 |
ObserveSwingDataSource dataSource = event.getSource();
|
| 207 | 207 |
dataSources.remove(dataSource);
|
| 208 |
+ if (Objects.equals(dataSource, getMainDataSource())) {
|
|
| 209 |
+ log.info(String.format("Remove main data source: %s", dataSource));
|
|
| 210 |
+ setMainDataSource(null);
|
|
| 211 |
+ }
|
|
| 208 | 212 |
log.info(String.format("Data source closed : %s (%d data sources open)", dataSource.getConfiguration(), dataSources.size()));
|
| 209 | 213 |
}
|
| 210 | 214 |
});
|
| ... | ... | @@ -215,10 +219,6 @@ public class ObserveDataSourcesManager implements Closeable { |
| 215 | 219 |
@Override
|
| 216 | 220 |
public void open() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException, DatabaseOpenException {
|
| 217 | 221 |
try {
|
| 218 |
- //FIXME:BodyContent Review progress model, not linked to ui any more...
|
|
| 219 |
- if (getProgressModel() == null) {
|
|
| 220 |
- setProgressModel(new ProgressModel());
|
|
| 221 |
- }
|
|
| 222 | 222 |
create(createDto);
|
| 223 | 223 |
} catch (IncompatibleDataSourceCreateConfigurationException | DataSourceCreateWithNoReferentialImportException e) {
|
| 224 | 224 |
throw new DatabaseOpenException(e, configuration);
|
| ... | ... | @@ -134,6 +134,8 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple |
| 134 | 134 |
this.servicesProvider = new ObserveDataSourceServicesProvider(this);
|
| 135 | 135 |
this.serviceFactory = serviceFactory;
|
| 136 | 136 |
this.expired = false;
|
| 137 |
+ setProgressModel(new ProgressModel());
|
|
| 138 |
+ |
|
| 137 | 139 |
if (isLocal()) {
|
| 138 | 140 |
icon = SwingUtil.getUIManagerActionIcon("db-local");
|
| 139 | 141 |
} else if (isRemote()) {
|
| ... | ... | @@ -26,6 +26,7 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; |
| 26 | 26 |
import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
|
| 27 | 27 |
import fr.ird.observe.client.main.body.NoBodyContentComponent;
|
| 28 | 28 |
import fr.ird.observe.client.util.UIHelper;
|
| 29 |
+import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration;
|
|
| 29 | 30 |
import org.apache.logging.log4j.LogManager;
|
| 30 | 31 |
import org.apache.logging.log4j.Logger;
|
| 31 | 32 |
import org.nuiton.jaxx.runtime.swing.application.ApplicationRunner;
|
| ... | ... | @@ -57,15 +58,17 @@ public class ReloadApplicationAction extends CloseApplicationAction { |
| 57 | 58 |
|
| 58 | 59 |
ObserveSwingDataSource mainDataSource = getObserveDataSourcesManager().getMainDataSource();
|
| 59 | 60 |
if (mainDataSource != null) {
|
| 61 |
+ ObserveDataSourceConfiguration mainDataSourceConfiguration = mainDataSource.getConfiguration();
|
|
| 60 | 62 |
if (mainDataSource.isOpen()) {
|
| 61 | 63 |
try {
|
| 62 | 64 |
mainDataSource.close();
|
| 63 | 65 |
} catch (Exception e) {
|
| 64 | 66 |
UIHelper.handlingError("Can't close data source", e);
|
| 65 |
- mainDataSource = null;
|
|
| 67 |
+ // In this case, won't try to reopen it
|
|
| 68 |
+ mainDataSourceConfiguration = null;
|
|
| 66 | 69 |
}
|
| 67 | 70 |
}
|
| 68 |
- ObserveSwingApplicationContext.setDataSourceToReload(mainDataSource);
|
|
| 71 |
+ ObserveSwingApplicationContext.setDataSourceToReload(mainDataSourceConfiguration);
|
|
| 69 | 72 |
}
|
| 70 | 73 |
ApplicationRunner.getRunner().setReload(true);
|
| 71 | 74 |
|
| ... | ... | @@ -27,6 +27,7 @@ import fr.ird.observe.client.datasource.api.ObserveDataSourcesManager; |
| 27 | 27 |
import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
|
| 28 | 28 |
import fr.ird.observe.client.datasource.editor.loading.LoadingDataSourceContext;
|
| 29 | 29 |
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
|
| 30 |
+import io.ultreia.java4all.i18n.I18n;
|
|
| 30 | 31 |
import org.apache.logging.log4j.LogManager;
|
| 31 | 32 |
import org.apache.logging.log4j.Logger;
|
| 32 | 33 |
|
| ... | ... | @@ -62,7 +63,7 @@ public class OpenLocalDataSourceActionStep extends CloseDataSourceActionStepSupp |
| 62 | 63 |
public void doAction0(ActionWithSteps<LoadingDataSourceContext> mainAction) throws Exception {
|
| 63 | 64 |
|
| 64 | 65 |
ObserveDataSourcesManager dataSourcesManager = actionContext.getDataSourcesManager();
|
| 65 |
- ObserveDataSourceConfigurationTopiaH2 localConfiguration = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local"));
|
|
| 66 |
+ ObserveDataSourceConfigurationTopiaH2 localConfiguration = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local"));
|
|
| 66 | 67 |
|
| 67 | 68 |
// can't migrate datasource in this case
|
| 68 | 69 |
//FIXME I don't understand why in this cas we can't try to migrate local data source?
|
| ... | ... | @@ -63,6 +63,7 @@ import fr.ird.observe.services.service.PingService; |
| 63 | 63 |
import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest;
|
| 64 | 64 |
import fr.ird.observe.services.service.sql.SqlScriptProducerService;
|
| 65 | 65 |
import io.ultreia.java4all.application.template.spi.GenerateTemplate;
|
| 66 |
+import io.ultreia.java4all.i18n.I18n;
|
|
| 66 | 67 |
import org.apache.commons.lang3.StringUtils;
|
| 67 | 68 |
import org.apache.commons.lang3.tuple.Pair;
|
| 68 | 69 |
import org.apache.logging.log4j.LogManager;
|
| ... | ... | @@ -160,8 +161,6 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 160 | 161 |
* doBackup est active.
|
| 161 | 162 |
*/
|
| 162 | 163 |
protected File backupFile = new File("");
|
| 163 |
- /** un drapeau pour savoir s'il faut sauver la configuration à distante */
|
|
| 164 |
- protected boolean storeRemoteConfig;
|
|
| 165 | 164 |
/** le storage precedemment utilise */
|
| 166 | 165 |
protected ObserveDataSourceConfiguration previousDataSourceConfiguration;
|
| 167 | 166 |
protected ConnexionStatus connexionStatus;
|
| ... | ... | @@ -236,7 +235,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 236 | 235 |
Version modelVersion = getClientConfig().getModelVersion();
|
| 237 | 236 |
|
| 238 | 237 |
h2Config = factory.createObserveDataSourceConfigurationTopiaH2(
|
| 239 |
- t("observe.runner.initStorage.label.local"),
|
|
| 238 |
+ I18n.n("observe.runner.initStorage.label.local"),
|
|
| 240 | 239 |
null,
|
| 241 | 240 |
ClientConfig.DB_NAME,
|
| 242 | 241 |
"",
|
| ... | ... | @@ -247,7 +246,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 247 | 246 |
);
|
| 248 | 247 |
|
| 249 | 248 |
pgConfig = factory.createObserveDataSourceConfigurationTopiaPG(
|
| 250 |
- t("observe.storage.label.remote"),
|
|
| 249 |
+ I18n.n("observe.storage.label.remote"),
|
|
| 251 | 250 |
"",
|
| 252 | 251 |
"",
|
| 253 | 252 |
EMPTY_PASSWORD,
|
| ... | ... | @@ -258,7 +257,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 258 | 257 |
);
|
| 259 | 258 |
|
| 260 | 259 |
restConfig = factory.createObserveDataSourceConfigurationRest(
|
| 261 |
- t("observe.storage.label.server"),
|
|
| 260 |
+ I18n.n("observe.storage.label.server"),
|
|
| 262 | 261 |
null,
|
| 263 | 262 |
"",
|
| 264 | 263 |
EMPTY_PASSWORD,
|
| ... | ... | @@ -341,9 +340,9 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 341 | 340 |
|
| 342 | 341 |
ObserveDataSourcesManager dataSourcesManager = ObserveDataSourcesManagerApplicationComponent.value();
|
| 343 | 342 |
|
| 344 |
- h2Config = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local"));
|
|
| 345 |
- pgConfig = dataSourcesManager.newPGDataSourceConfiguration(t("observe.storage.label.remote"));
|
|
| 346 |
- restConfig = dataSourcesManager.newRestDataSourceConfiguration(t("observe.storage.label.server"));
|
|
| 343 |
+ h2Config = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local"));
|
|
| 344 |
+ pgConfig = dataSourcesManager.newPGDataSourceConfiguration(I18n.n("observe.storage.label.remote"));
|
|
| 345 |
+ restConfig = dataSourcesManager.newRestDataSourceConfiguration(I18n.n("observe.storage.label.server"));
|
|
| 347 | 346 |
|
| 348 | 347 |
if (source != null) {
|
| 349 | 348 |
|
| ... | ... | @@ -417,9 +416,9 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 417 | 416 |
ObserveDataSourcesManager dataSourcesManager = ObserveDataSourcesManagerApplicationComponent.value();
|
| 418 | 417 |
|
| 419 | 418 |
// on initialise les configuration avec les valeurs par défaut
|
| 420 |
- h2Config = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local"));
|
|
| 421 |
- pgConfig = dataSourcesManager.newPGDataSourceConfiguration(t("observe.storage.label.remote"));
|
|
| 422 |
- restConfig = dataSourcesManager.newRestDataSourceConfiguration(t("observe.storage.label.server"));
|
|
| 419 |
+ h2Config = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local"));
|
|
| 420 |
+ pgConfig = dataSourcesManager.newPGDataSourceConfiguration(I18n.n("observe.storage.label.remote"));
|
|
| 421 |
+ restConfig = dataSourcesManager.newRestDataSourceConfiguration(I18n.n("observe.storage.label.server"));
|
|
| 423 | 422 |
|
| 424 | 423 |
if (previousConfig instanceof ObserveDataSourceConfigurationTopiaH2) {
|
| 425 | 424 |
|
| ... | ... | @@ -451,7 +450,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 451 | 450 |
ObserveDataSourceConfiguration configuration;
|
| 452 | 451 |
switch (getDbMode()) {
|
| 453 | 452 |
case CREATE_LOCAL:
|
| 454 |
- configuration = toH2StorageConfig(t("observe.runner.initStorage.label.local"));
|
|
| 453 |
+ configuration = toH2StorageConfig(I18n.n("observe.runner.initStorage.label.local"));
|
|
| 455 | 454 |
|
| 456 | 455 |
dataSource = dataSourcesManager.newDataSource(configuration);
|
| 457 | 456 |
dataSource.addObserveSwingDataSourceListener(
|
| ... | ... | @@ -493,15 +492,15 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 493 | 492 |
|
| 494 | 493 |
break;
|
| 495 | 494 |
case USE_LOCAL:
|
| 496 |
- configuration = toH2StorageConfig(t("observe.runner.initStorage.label.local"));
|
|
| 495 |
+ configuration = toH2StorageConfig(I18n.n("observe.runner.initStorage.label.local"));
|
|
| 497 | 496 |
dataSource = dataSourcesManager.newDataSource(configuration);
|
| 498 | 497 |
break;
|
| 499 | 498 |
case USE_REMOTE:
|
| 500 |
- configuration = toPGStorageConfig(t("observe.storage.label.remote"));
|
|
| 499 |
+ configuration = toPGStorageConfig(I18n.n("observe.storage.label.remote"));
|
|
| 501 | 500 |
dataSource = dataSourcesManager.newDataSource(configuration);
|
| 502 | 501 |
break;
|
| 503 | 502 |
case USE_SERVER:
|
| 504 |
- configuration = toRestStorageConfig(t("observe.storage.label.server"));
|
|
| 503 |
+ configuration = toRestStorageConfig(I18n.n("observe.storage.label.server"));
|
|
| 505 | 504 |
dataSource = dataSourcesManager.newDataSource(configuration);
|
| 506 | 505 |
break;
|
| 507 | 506 |
}
|
| ... | ... | @@ -553,9 +552,9 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 553 | 552 |
|
| 554 | 553 |
ObserveDataSourcesManager dataSourcesManager = ObserveDataSourcesManagerApplicationComponent.value();
|
| 555 | 554 |
|
| 556 |
- h2Config = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local"));
|
|
| 557 |
- pgConfig = dataSourcesManager.newPGDataSourceConfiguration(t("observe.storage.label.remote"));
|
|
| 558 |
- restConfig = dataSourcesManager.newRestDataSourceConfiguration(t("observe.storage.label.server"));
|
|
| 555 |
+ h2Config = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local"));
|
|
| 556 |
+ pgConfig = dataSourcesManager.newPGDataSourceConfiguration(I18n.n("observe.storage.label.remote"));
|
|
| 557 |
+ restConfig = dataSourcesManager.newRestDataSourceConfiguration(I18n.n("observe.storage.label.server"));
|
|
| 559 | 558 |
|
| 560 | 559 |
Pair<CreationMode, DbMode> modes = computeModes(config);
|
| 561 | 560 |
CreationMode mode = modes.getLeft();
|
| ... | ... | @@ -1217,10 +1216,6 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 1217 | 1216 |
validate();
|
| 1218 | 1217 |
}
|
| 1219 | 1218 |
|
| 1220 |
- public boolean isStoreRemoteConfig() {
|
|
| 1221 |
- return storeRemoteConfig;
|
|
| 1222 |
- }
|
|
| 1223 |
- |
|
| 1224 | 1219 |
public File getBackupFile() {
|
| 1225 | 1220 |
return backupFile;
|
| 1226 | 1221 |
}
|
| ... | ... | @@ -1839,7 +1834,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 1839 | 1834 |
|
| 1840 | 1835 |
if (isImportReferential()) {
|
| 1841 | 1836 |
|
| 1842 |
- String dbLabel = t("observe.storage.label.reference.import.db");
|
|
| 1837 |
+ String dbLabel = I18n.n("observe.storage.label.reference.import.db");
|
|
| 1843 | 1838 |
|
| 1844 | 1839 |
switch (getReferentielImportMode()) {
|
| 1845 | 1840 |
|
| ... | ... | @@ -1916,7 +1911,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie |
| 1916 | 1911 |
|
| 1917 | 1912 |
if (isImportData()) {
|
| 1918 | 1913 |
|
| 1919 |
- String dbLabel = t("observe.storage.label.data.import.db");
|
|
| 1914 |
+ String dbLabel = I18n.n("observe.storage.label.data.import.db");
|
|
| 1920 | 1915 |
|
| 1921 | 1916 |
switch (getDataImportMode()) {
|
| 1922 | 1917 |
|
| ... | ... | @@ -40,9 +40,9 @@ import fr.ird.observe.client.datasource.h2.backup.WithLocalDatabaseBackupTimer; |
| 40 | 40 |
import fr.ird.observe.client.main.ObserveMainUI;
|
| 41 | 41 |
import fr.ird.observe.client.util.FloatConverter;
|
| 42 | 42 |
import fr.ird.observe.client.util.ObserveSwingTechnicalException;
|
| 43 |
-import fr.ird.observe.client.util.ProgressModel;
|
|
| 44 | 43 |
import fr.ird.observe.client.util.UIHelper;
|
| 45 | 44 |
import fr.ird.observe.services.configuration.DataSourceCreateConfigurationDto;
|
| 45 |
+import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration;
|
|
| 46 | 46 |
import fr.ird.observe.services.configuration.ObserveDataSourceInformation;
|
| 47 | 47 |
import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2;
|
| 48 | 48 |
import io.ultreia.java4all.application.context.ApplicationContext;
|
| ... | ... | @@ -80,7 +80,6 @@ import java.util.Set; |
| 80 | 80 |
import java.util.logging.Level;
|
| 81 | 81 |
|
| 82 | 82 |
import static fr.ird.observe.client.ClientUIContext.askUser;
|
| 83 |
-import static io.ultreia.java4all.i18n.I18n.n;
|
|
| 84 | 83 |
import static io.ultreia.java4all.i18n.I18n.t;
|
| 85 | 84 |
|
| 86 | 85 |
/**
|
| ... | ... | @@ -119,6 +118,125 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, |
| 119 | 118 |
return (RunObserve) ApplicationRunner.getRunner();
|
| 120 | 119 |
}
|
| 121 | 120 |
|
| 121 |
+ public static void askToCreateLocalDatabase(ObserveMainUI mainUI,
|
|
| 122 |
+ ClientConfig config,
|
|
| 123 |
+ ObserveDataSourcesManager dataSourcesManager,
|
|
| 124 |
+ BackupStorage lastAutomaticBackup) {
|
|
| 125 |
+ |
|
| 126 |
+ InitStorageModel initStorageModel = new InitStorageModel(config.getLocalDBDirectory(), lastAutomaticBackup);
|
|
| 127 |
+ |
|
| 128 |
+ String text = InitStorageModelTemplate.generate(initStorageModel);
|
|
| 129 |
+ |
|
| 130 |
+ Object[] options;
|
|
| 131 |
+ int defaultOption;
|
|
| 132 |
+ boolean noAutomaticBackup = lastAutomaticBackup == null;
|
|
| 133 |
+ if (noAutomaticBackup) {
|
|
| 134 |
+ options = new Object[]{
|
|
| 135 |
+ t("observe.runner.initStorage.choice.useRemoteStorage"),
|
|
| 136 |
+ t("observe.runner.initStorage.choice.createLocalStorage"),
|
|
| 137 |
+ t("observe.runner.initStorage.choice.doNothing")};
|
|
| 138 |
+ defaultOption = 1;
|
|
| 139 |
+ |
|
| 140 |
+ } else {
|
|
| 141 |
+ options = new Object[]{
|
|
| 142 |
+ t("observe.runner.initStorage.choice.useRemoteStorage"),
|
|
| 143 |
+ t("observe.runner.initStorage.choice.createLocalStorage"),
|
|
| 144 |
+ t("observe.runner.initStorage.choice.loadLastAutomaticBackup"),
|
|
| 145 |
+ t("observe.runner.initStorage.choice.doNothing")};
|
|
| 146 |
+ defaultOption = 2;
|
|
| 147 |
+ |
|
| 148 |
+ }
|
|
| 149 |
+ |
|
| 150 |
+ JLabel label = new JLabel(text);
|
|
| 151 |
+ int response = askUser(
|
|
| 152 |
+ null,
|
|
| 153 |
+ t("observe.runner.initStorage.title.no.local.db.found"),
|
|
| 154 |
+ label,
|
|
| 155 |
+ JOptionPane.QUESTION_MESSAGE,
|
|
| 156 |
+ options,
|
|
| 157 |
+ defaultOption
|
|
| 158 |
+ );
|
|
| 159 |
+ log.debug(String.format("response : %d", response));
|
|
| 160 |
+ |
|
| 161 |
+ if (noAutomaticBackup) {
|
|
| 162 |
+ Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class);
|
|
| 163 |
+ String title = null;
|
|
| 164 |
+ if (response != JOptionPane.CLOSED_OPTION && response < 2) {
|
|
| 165 |
+ |
|
| 166 |
+ if (response == 1) {
|
|
| 167 |
+ // creation de la base locale
|
|
| 168 |
+ dbModes.add(DbMode.CREATE_LOCAL);
|
|
| 169 |
+ title = I18n.n("observe.runner.initStorage.title.create.local.db");
|
|
| 170 |
+ } else {
|
|
| 171 |
+ // connexion à une base distante
|
|
| 172 |
+ dbModes.add(DbMode.USE_REMOTE);
|
|
| 173 |
+ dbModes.add(DbMode.USE_SERVER);
|
|
| 174 |
+ title = I18n.n("observe.runner.initStorage.title.load.remote.db");
|
|
| 175 |
+ }
|
|
| 176 |
+ }
|
|
| 177 |
+ if (!dbModes.isEmpty()) {
|
|
| 178 |
+ |
|
| 179 |
+ DataSourceEditorBodyContent body = mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class);
|
|
| 180 |
+ body.doChangeStorage(dbModes, title);
|
|
| 181 |
+ }
|
|
| 182 |
+ } else {
|
|
| 183 |
+ |
|
| 184 |
+ Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class);
|
|
| 185 |
+ String title = null;
|
|
| 186 |
+ if (response != JOptionPane.CLOSED_OPTION && response < 3) {
|
|
| 187 |
+ |
|
| 188 |
+ switch (response) {
|
|
| 189 |
+ case 2:
|
|
| 190 |
+ // load last backup
|
|
| 191 |
+ loadBackup(dataSourcesManager, mainUI, lastAutomaticBackup);
|
|
| 192 |
+ break;
|
|
| 193 |
+ case 1:
|
|
| 194 |
+ // create local db
|
|
| 195 |
+ // creation de la base locale
|
|
| 196 |
+ dbModes.add(DbMode.CREATE_LOCAL);
|
|
| 197 |
+ title = I18n.n("observe.runner.initStorage.title.create.local.db");
|
|
| 198 |
+ break;
|
|
| 199 |
+ case 0:
|
|
| 200 |
+ // use remote db
|
|
| 201 |
+ dbModes.add(DbMode.USE_REMOTE);
|
|
| 202 |
+ dbModes.add(DbMode.USE_SERVER);
|
|
| 203 |
+ title = I18n.n("observe.runner.initStorage.title.load.remote.db");
|
|
| 204 |
+ break;
|
|
| 205 |
+ }
|
|
| 206 |
+ }
|
|
| 207 |
+ if (!dbModes.isEmpty()) {
|
|
| 208 |
+ DataSourceEditorBodyContent body = mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class);
|
|
| 209 |
+ body.doChangeStorage(dbModes, title);
|
|
| 210 |
+ }
|
|
| 211 |
+ }
|
|
| 212 |
+ |
|
| 213 |
+ }
|
|
| 214 |
+ |
|
| 215 |
+ public static void loadBackup(ObserveDataSourcesManager dataSourcesManager, ObserveMainUI mainUI, BackupStorage backupStorage) {
|
|
| 216 |
+ log.info("Will load last backup: " + backupStorage.getFile());
|
|
| 217 |
+ try {
|
|
| 218 |
+// byte[] dump = Files.readAllBytes(backupStorage.getFile().toPath());
|
|
| 219 |
+ DataSourceCreateConfigurationDto createDto = new DataSourceCreateConfigurationDto();
|
|
| 220 |
+ createDto.setImportDatabase(TopiaSqlScript.of(backupStorage.getFile().toURI()));
|
|
| 221 |
+ |
|
| 222 |
+ ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local"));
|
|
| 223 |
+ |
|
| 224 |
+ ObserveSwingDataSource dataSource = dataSourcesManager.newDataSource(dataSourceConfigurationH2, createDto);
|
|
| 225 |
+ |
|
| 226 |
+ mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, dataSource, true);
|
|
| 227 |
+ |
|
| 228 |
+ //FIXME:BodyContent Review progress model, not linked to ui any more...
|
|
| 229 |
+// dataSource.setProgressModel(new ProgressModel());
|
|
| 230 |
+// dataSource.create(createDto);
|
|
| 231 |
+//
|
|
| 232 |
+// mainUI.changeBodyContent(DataSourceEditor.class);
|
|
| 233 |
+// mainUI.getModel().setMode(ObserveUIMode.DB);
|
|
| 234 |
+ |
|
| 235 |
+ } catch (Exception e) {
|
|
| 236 |
+ throw new ObserveSwingTechnicalException("Impossible de créer la base locale", e);
|
|
| 237 |
+ }
|
|
| 238 |
+ }
|
|
| 239 |
+ |
|
| 122 | 240 |
@Override
|
| 123 | 241 |
protected void initOnce() {
|
| 124 | 242 |
if (!init) {
|
| ... | ... | @@ -272,7 +390,7 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, |
| 272 | 390 |
//
|
| 273 | 391 |
// return;
|
| 274 | 392 |
// }
|
| 275 |
- Optional<ObserveSwingDataSource> dataSourceToReload = ObserveSwingApplicationContext.getDataSourceToReload();
|
|
| 393 |
+ Optional<ObserveDataSourceConfiguration> dataSourceToReload = ObserveSwingApplicationContext.getDataSourceToReload();
|
|
| 276 | 394 |
ObserveSwingApplicationContext.setDataSourceToReload(null);
|
| 277 | 395 |
if (!config.isLoadLocalStorage() && !dataSourceToReload.isPresent()) {
|
| 278 | 396 |
|
| ... | ... | @@ -368,19 +486,19 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, |
| 368 | 486 |
//FIXME Need to have a unified API and only one
|
| 369 | 487 |
//FIXME first try to open specified ds (here local ds)
|
| 370 | 488 |
//FIXME if can not load local ds, then feedback it and propose to load automatic backup, or to create a new local ds
|
| 371 |
- private void initStorage(ClientConfig config, JFrame ui, ObserveSwingDataSource previousDataSource) {
|
|
| 489 |
+ private void initStorage(ClientConfig config, JFrame ui, ObserveDataSourceConfiguration previousDataSourceConfiguration) {
|
|
| 372 | 490 |
|
| 373 | 491 |
ObserveMainUI mainUI = (ObserveMainUI) ui;
|
| 374 | 492 |
ObserveDataSourcesManager dataSourcesManager = getObserveDataSourcesManager();
|
| 375 | 493 |
BackupsManager backupsManager = getBackupsManager();
|
| 376 | 494 |
|
| 377 |
- if (previousDataSource != null) {
|
|
| 495 |
+ if (previousDataSourceConfiguration != null) {
|
|
| 378 | 496 |
|
| 379 | 497 |
// reuse previous data source
|
| 380 |
- previousDataSource.setProgressModel(new ProgressModel());
|
|
| 498 |
+ ObserveSwingDataSource previousDataSource = dataSourcesManager.newDataSource(previousDataSourceConfiguration);
|
|
| 381 | 499 |
mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, previousDataSource, true);
|
| 382 | 500 |
|
| 383 |
- } else if (config.isLoadLocalStorage()){
|
|
| 501 |
+ } else if (config.isLoadLocalStorage()) {
|
|
| 384 | 502 |
|
| 385 | 503 |
boolean askToCreate = true;
|
| 386 | 504 |
BackupStorage lastAutomaticBackup = backupsManager.getAutomaticBackups().stream().findFirst().orElse(null);
|
| ... | ... | @@ -390,7 +508,6 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, |
| 390 | 508 |
// une base locale existe, on l'ouvre
|
| 391 | 509 |
|
| 392 | 510 |
ObserveSwingDataSource dataSource = dataSourcesManager.newLocalDataSource();
|
| 393 |
- dataSource.setProgressModel(new ProgressModel());
|
|
| 394 | 511 |
|
| 395 | 512 |
try {
|
| 396 | 513 |
|
| ... | ... | @@ -430,124 +547,4 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, |
| 430 | 547 |
log.info(t("observe.runner.initStorage.done"));
|
| 431 | 548 |
}
|
| 432 | 549 |
|
| 433 |
- |
|
| 434 |
- public static void askToCreateLocalDatabase(ObserveMainUI mainUI,
|
|
| 435 |
- ClientConfig config,
|
|
| 436 |
- ObserveDataSourcesManager dataSourcesManager,
|
|
| 437 |
- BackupStorage lastAutomaticBackup) {
|
|
| 438 |
- |
|
| 439 |
- InitStorageModel initStorageModel = new InitStorageModel(config.getLocalDBDirectory(), lastAutomaticBackup);
|
|
| 440 |
- |
|
| 441 |
- String text = InitStorageModelTemplate.generate(initStorageModel);
|
|
| 442 |
- |
|
| 443 |
- Object[] options;
|
|
| 444 |
- int defaultOption;
|
|
| 445 |
- boolean noAutomaticBackup = lastAutomaticBackup == null;
|
|
| 446 |
- if (noAutomaticBackup) {
|
|
| 447 |
- options = new Object[]{
|
|
| 448 |
- t("observe.runner.initStorage.choice.useRemoteStorage"),
|
|
| 449 |
- t("observe.runner.initStorage.choice.createLocalStorage"),
|
|
| 450 |
- t("observe.runner.initStorage.choice.doNothing")};
|
|
| 451 |
- defaultOption = 1;
|
|
| 452 |
- |
|
| 453 |
- } else {
|
|
| 454 |
- options = new Object[]{
|
|
| 455 |
- t("observe.runner.initStorage.choice.useRemoteStorage"),
|
|
| 456 |
- t("observe.runner.initStorage.choice.createLocalStorage"),
|
|
| 457 |
- t("observe.runner.initStorage.choice.loadLastAutomaticBackup"),
|
|
| 458 |
- t("observe.runner.initStorage.choice.doNothing")};
|
|
| 459 |
- defaultOption = 2;
|
|
| 460 |
- |
|
| 461 |
- }
|
|
| 462 |
- |
|
| 463 |
- JLabel label = new JLabel(text);
|
|
| 464 |
- int response = askUser(
|
|
| 465 |
- null,
|
|
| 466 |
- t("observe.runner.initStorage.title.no.local.db.found"),
|
|
| 467 |
- label,
|
|
| 468 |
- JOptionPane.QUESTION_MESSAGE,
|
|
| 469 |
- options,
|
|
| 470 |
- defaultOption
|
|
| 471 |
- );
|
|
| 472 |
- log.debug(String.format("response : %d", response));
|
|
| 473 |
- |
|
| 474 |
- if (noAutomaticBackup) {
|
|
| 475 |
- Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class);
|
|
| 476 |
- String title = null;
|
|
| 477 |
- if (response != JOptionPane.CLOSED_OPTION && response < 2) {
|
|
| 478 |
- |
|
| 479 |
- if (response == 1) {
|
|
| 480 |
- // creation de la base locale
|
|
| 481 |
- dbModes.add(DbMode.CREATE_LOCAL);
|
|
| 482 |
- title = n("observe.runner.initStorage.title.create.local.db");
|
|
| 483 |
- } else {
|
|
| 484 |
- // connexion à une base distante
|
|
| 485 |
- dbModes.add(DbMode.USE_REMOTE);
|
|
| 486 |
- dbModes.add(DbMode.USE_SERVER);
|
|
| 487 |
- title = n("observe.runner.initStorage.title.load.remote.db");
|
|
| 488 |
- }
|
|
| 489 |
- }
|
|
| 490 |
- if (!dbModes.isEmpty()) {
|
|
| 491 |
- |
|
| 492 |
- DataSourceEditorBodyContent body = mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class);
|
|
| 493 |
- body.doChangeStorage(dbModes, title);
|
|
| 494 |
- }
|
|
| 495 |
- } else {
|
|
| 496 |
- |
|
| 497 |
- Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class);
|
|
| 498 |
- String title = null;
|
|
| 499 |
- if (response != JOptionPane.CLOSED_OPTION && response < 3) {
|
|
| 500 |
- |
|
| 501 |
- switch (response) {
|
|
| 502 |
- case 2:
|
|
| 503 |
- // load last backup
|
|
| 504 |
- loadBackup(dataSourcesManager, mainUI, lastAutomaticBackup);
|
|
| 505 |
- break;
|
|
| 506 |
- case 1:
|
|
| 507 |
- // create local db
|
|
| 508 |
- // creation de la base locale
|
|
| 509 |
- dbModes.add(DbMode.CREATE_LOCAL);
|
|
| 510 |
- title = n("observe.runner.initStorage.title.create.local.db");
|
|
| 511 |
- break;
|
|
| 512 |
- case 0:
|
|
| 513 |
- // use remote db
|
|
| 514 |
- dbModes.add(DbMode.USE_REMOTE);
|
|
| 515 |
- dbModes.add(DbMode.USE_SERVER);
|
|
| 516 |
- title = n("observe.runner.initStorage.title.load.remote.db");
|
|
| 517 |
- break;
|
|
| 518 |
- }
|
|
| 519 |
- }
|
|
| 520 |
- if (!dbModes.isEmpty()) {
|
|
| 521 |
- DataSourceEditorBodyContent body = mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class);
|
|
| 522 |
- body.doChangeStorage(dbModes, title);
|
|
| 523 |
- }
|
|
| 524 |
- }
|
|
| 525 |
- |
|
| 526 |
- }
|
|
| 527 |
- |
|
| 528 |
- public static void loadBackup(ObserveDataSourcesManager dataSourcesManager, ObserveMainUI mainUI, BackupStorage backupStorage) {
|
|
| 529 |
- log.info("Will load last backup: " + backupStorage.getFile());
|
|
| 530 |
- try {
|
|
| 531 |
-// byte[] dump = Files.readAllBytes(backupStorage.getFile().toPath());
|
|
| 532 |
- DataSourceCreateConfigurationDto createDto = new DataSourceCreateConfigurationDto();
|
|
| 533 |
- createDto.setImportDatabase(TopiaSqlScript.of(backupStorage.getFile().toURI()));
|
|
| 534 |
- |
|
| 535 |
- ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local"));
|
|
| 536 |
- |
|
| 537 |
- ObserveSwingDataSource dataSource = dataSourcesManager.newDataSource(dataSourceConfigurationH2, createDto);
|
|
| 538 |
- |
|
| 539 |
- mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, dataSource, true);
|
|
| 540 |
- |
|
| 541 |
- //FIXME:BodyContent Review progress model, not linked to ui any more...
|
|
| 542 |
-// dataSource.setProgressModel(new ProgressModel());
|
|
| 543 |
-// dataSource.create(createDto);
|
|
| 544 |
-//
|
|
| 545 |
-// mainUI.changeBodyContent(DataSourceEditor.class);
|
|
| 546 |
-// mainUI.getModel().setMode(ObserveUIMode.DB);
|
|
| 547 |
- |
|
| 548 |
- } catch (Exception e) {
|
|
| 549 |
- throw new ObserveSwingTechnicalException("Impossible de créer la base locale", e);
|
|
| 550 |
- }
|
|
| 551 |
- }
|
|
| 552 |
- |
|
| 553 | 550 |
}
|
| ... | ... | @@ -25,10 +25,12 @@ package fr.ird.observe.services.configuration.rest; |
| 25 | 25 |
import com.google.common.base.MoreObjects;
|
| 26 | 26 |
import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration;
|
| 27 | 27 |
import fr.ird.observe.services.configuration.ObserveDataSourceType;
|
| 28 |
+import io.ultreia.java4all.i18n.I18n;
|
|
| 29 |
+import org.nuiton.version.Version;
|
|
| 30 |
+ |
|
| 28 | 31 |
import java.net.URL;
|
| 29 | 32 |
import java.nio.file.Path;
|
| 30 | 33 |
import java.util.Optional;
|
| 31 |
-import org.nuiton.version.Version;
|
|
| 32 | 34 |
|
| 33 | 35 |
/**
|
| 34 | 36 |
* Configuration d'une source de données Rest non connectée.
|
| ... | ... | @@ -37,6 +39,7 @@ import org.nuiton.version.Version; |
| 37 | 39 |
*
|
| 38 | 40 |
* @author Tony Chemit - dev@tchemit.fr
|
| 39 | 41 |
*/
|
| 42 |
+@SuppressWarnings("unused")
|
|
| 40 | 43 |
public class ObserveDataSourceConfigurationRest implements ObserveDataSourceConfiguration {
|
| 41 | 44 |
|
| 42 | 45 |
private static final long serialVersionUID = 1L;
|
| ... | ... | @@ -75,7 +78,7 @@ public class ObserveDataSourceConfigurationRest implements ObserveDataSourceConf |
| 75 | 78 |
|
| 76 | 79 |
@Override
|
| 77 | 80 |
public String getLabel() {
|
| 78 |
- return label;
|
|
| 81 |
+ return I18n.t(label);
|
|
| 79 | 82 |
}
|
| 80 | 83 |
|
| 81 | 84 |
@Override
|
| ... | ... | @@ -24,6 +24,7 @@ package fr.ird.observe.services.configuration.topia; |
| 24 | 24 |
|
| 25 | 25 |
import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration;
|
| 26 | 26 |
import fr.ird.observe.services.configuration.ObserveDataSourceType;
|
| 27 |
+import io.ultreia.java4all.i18n.I18n;
|
|
| 27 | 28 |
import org.nuiton.version.Version;
|
| 28 | 29 |
|
| 29 | 30 |
import java.nio.file.Path;
|
| ... | ... | @@ -101,7 +102,7 @@ public abstract class ObserveDataSourceConfigurationTopiaSupport implements Obse |
| 101 | 102 |
|
| 102 | 103 |
@Override
|
| 103 | 104 |
public String getLabel() {
|
| 104 |
- return label;
|
|
| 105 |
+ return I18n.t(label);
|
|
| 105 | 106 |
}
|
| 106 | 107 |
|
| 107 | 108 |
public void setLabel(String label) {
|