Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 1ccd9702 by Tony Chemit at 2020-07-10T13:21:05+02:00 Bascule entre langues - Closes #1553 Improve the way to keep data source while reload application - - - - - 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: ===================================== client-core/src/main/java/fr/ird/observe/client/ObserveSwingApplicationContext.java ===================================== @@ -22,9 +22,9 @@ package fr.ird.observe.client; import fr.ird.observe.client.configuration.ClientConfig; -import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.services.ObserveServiceMainFactory; import fr.ird.observe.services.ObserveServiceMainFactoryApplicationComponent; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.spi.DtoModelHelper; import io.ultreia.java4all.application.context.ApplicationContext; import org.apache.logging.log4j.LogManager; @@ -45,7 +45,7 @@ import static io.ultreia.java4all.i18n.I18n.n; public class ObserveSwingApplicationContext extends ApplicationContext { private static final Logger log = LogManager.getLogger(ObserveSwingApplicationContext.class); - private static ObserveSwingDataSource dataSourceToReload; + private static ObserveDataSourceConfiguration dataSourceConfigurationToReload; public static ObserveSwingApplicationContext init(ClientConfig config) { ClientConfigFinderInstance.config = config; @@ -94,11 +94,11 @@ public class ObserveSwingApplicationContext extends ApplicationContext { } - public static void setDataSourceToReload(ObserveSwingDataSource dataSourceToReload) { - ObserveSwingApplicationContext.dataSourceToReload = dataSourceToReload; + public static void setDataSourceToReload(ObserveDataSourceConfiguration dataSourceToReload) { + ObserveSwingApplicationContext.dataSourceConfigurationToReload = dataSourceToReload; } - public static Optional<ObserveSwingDataSource> getDataSourceToReload() { - return Optional.ofNullable(dataSourceToReload); + public static Optional<ObserveDataSourceConfiguration> getDataSourceToReload() { + return Optional.ofNullable(dataSourceConfigurationToReload); } } ===================================== client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveDataSourcesManager.java ===================================== @@ -25,7 +25,6 @@ package fr.ird.observe.client.datasource.api; import fr.ird.observe.client.configuration.ClientConfig; import fr.ird.observe.client.datasource.api.event.ObserveSwingDataSourceEvent; import fr.ird.observe.client.datasource.api.event.ObserveSwingDataSourceListenerAdapter; -import fr.ird.observe.client.util.ProgressModel; import fr.ird.observe.navigation.model.edit.ObserveEditModel; import fr.ird.observe.navigation.model.select.ObserveSelectModel; import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; @@ -42,6 +41,7 @@ import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.DatabaseOpenException; import io.ultreia.java4all.application.context.spi.GenerateApplicationComponent; +import io.ultreia.java4all.i18n.I18n; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -50,11 +50,11 @@ import java.io.File; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.UUID; import static fr.ird.observe.client.configuration.ClientConfig.DB_NAME; -import static io.ultreia.java4all.i18n.I18n.t; /** * Permet de gérer les différentes data sources utilisées dans l'application. @@ -102,7 +102,7 @@ public class ObserveDataSourcesManager implements Closeable { */ public ObserveSwingDataSource newLocalDataSource() { - ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local")); + ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local")); if (!dataSourceConfigurationH2.getDatabaseFile().exists()) { throw new IllegalStateException("local base must exist, when using this method (" + @@ -197,7 +197,7 @@ public class ObserveDataSourcesManager implements Closeable { super.onOpened(event); ObserveSwingDataSource dataSource = event.getSource(); dataSources.add(dataSource); - log.info(String.format("Data source opened : %s (%d datas sources open)", dataSource.getConfiguration(), dataSources.size())); + log.info(String.format("Data source opened : %s (%d data sources open)", dataSource.getConfiguration(), dataSources.size())); } @Override @@ -205,6 +205,10 @@ public class ObserveDataSourcesManager implements Closeable { super.onClosed(event); ObserveSwingDataSource dataSource = event.getSource(); dataSources.remove(dataSource); + if (Objects.equals(dataSource, getMainDataSource())) { + log.info(String.format("Remove main data source: %s", dataSource)); + setMainDataSource(null); + } log.info(String.format("Data source closed : %s (%d data sources open)", dataSource.getConfiguration(), dataSources.size())); } }); @@ -215,10 +219,6 @@ public class ObserveDataSourcesManager implements Closeable { @Override public void open() throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException, DatabaseOpenException { try { - //FIXME:BodyContent Review progress model, not linked to ui any more... - if (getProgressModel() == null) { - setProgressModel(new ProgressModel()); - } create(createDto); } catch (IncompatibleDataSourceCreateConfigurationException | DataSourceCreateWithNoReferentialImportException e) { throw new DatabaseOpenException(e, configuration); ===================================== client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java ===================================== @@ -134,6 +134,8 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple this.servicesProvider = new ObserveDataSourceServicesProvider(this); this.serviceFactory = serviceFactory; this.expired = false; + setProgressModel(new ProgressModel()); + if (isLocal()) { icon = SwingUtil.getUIManagerActionIcon("db-local"); } else if (isRemote()) { ===================================== client-core/src/main/java/fr/ird/observe/client/main/actions/ReloadApplicationAction.java ===================================== @@ -26,6 +26,7 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.main.body.NoBodyContentComponent; import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.swing.application.ApplicationRunner; @@ -57,15 +58,17 @@ public class ReloadApplicationAction extends CloseApplicationAction { ObserveSwingDataSource mainDataSource = getObserveDataSourcesManager().getMainDataSource(); if (mainDataSource != null) { + ObserveDataSourceConfiguration mainDataSourceConfiguration = mainDataSource.getConfiguration(); if (mainDataSource.isOpen()) { try { mainDataSource.close(); } catch (Exception e) { UIHelper.handlingError("Can't close data source", e); - mainDataSource = null; + // In this case, won't try to reopen it + mainDataSourceConfiguration = null; } } - ObserveSwingApplicationContext.setDataSourceToReload(mainDataSource); + ObserveSwingApplicationContext.setDataSourceToReload(mainDataSourceConfiguration); } ApplicationRunner.getRunner().setReload(true); ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/loading/close/OpenLocalDataSourceActionStep.java ===================================== @@ -27,6 +27,7 @@ import fr.ird.observe.client.datasource.api.ObserveDataSourcesManager; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.datasource.editor.loading.LoadingDataSourceContext; import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2; +import io.ultreia.java4all.i18n.I18n; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -62,7 +63,7 @@ public class OpenLocalDataSourceActionStep extends CloseDataSourceActionStepSupp public void doAction0(ActionWithSteps<LoadingDataSourceContext> mainAction) throws Exception { ObserveDataSourcesManager dataSourcesManager = actionContext.getDataSourcesManager(); - ObserveDataSourceConfigurationTopiaH2 localConfiguration = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local")); + ObserveDataSourceConfigurationTopiaH2 localConfiguration = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local")); // can't migrate datasource in this case //FIXME I don't understand why in this cas we can't try to migrate local data source? ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/StorageUIModel.java ===================================== @@ -63,6 +63,7 @@ import fr.ird.observe.services.service.PingService; import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.SqlScriptProducerService; import io.ultreia.java4all.application.template.spi.GenerateTemplate; +import io.ultreia.java4all.i18n.I18n; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.LogManager; @@ -160,8 +161,6 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie * doBackup est active. */ protected File backupFile = new File(""); - /** un drapeau pour savoir s'il faut sauver la configuration à distante */ - protected boolean storeRemoteConfig; /** le storage precedemment utilise */ protected ObserveDataSourceConfiguration previousDataSourceConfiguration; protected ConnexionStatus connexionStatus; @@ -236,7 +235,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie Version modelVersion = getClientConfig().getModelVersion(); h2Config = factory.createObserveDataSourceConfigurationTopiaH2( - t("observe.runner.initStorage.label.local"), + I18n.n("observe.runner.initStorage.label.local"), null, ClientConfig.DB_NAME, "", @@ -247,7 +246,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie ); pgConfig = factory.createObserveDataSourceConfigurationTopiaPG( - t("observe.storage.label.remote"), + I18n.n("observe.storage.label.remote"), "", "", EMPTY_PASSWORD, @@ -258,7 +257,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie ); restConfig = factory.createObserveDataSourceConfigurationRest( - t("observe.storage.label.server"), + I18n.n("observe.storage.label.server"), null, "", EMPTY_PASSWORD, @@ -341,9 +340,9 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie ObserveDataSourcesManager dataSourcesManager = ObserveDataSourcesManagerApplicationComponent.value(); - h2Config = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local")); - pgConfig = dataSourcesManager.newPGDataSourceConfiguration(t("observe.storage.label.remote")); - restConfig = dataSourcesManager.newRestDataSourceConfiguration(t("observe.storage.label.server")); + h2Config = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local")); + pgConfig = dataSourcesManager.newPGDataSourceConfiguration(I18n.n("observe.storage.label.remote")); + restConfig = dataSourcesManager.newRestDataSourceConfiguration(I18n.n("observe.storage.label.server")); if (source != null) { @@ -417,9 +416,9 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie ObserveDataSourcesManager dataSourcesManager = ObserveDataSourcesManagerApplicationComponent.value(); // on initialise les configuration avec les valeurs par défaut - h2Config = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local")); - pgConfig = dataSourcesManager.newPGDataSourceConfiguration(t("observe.storage.label.remote")); - restConfig = dataSourcesManager.newRestDataSourceConfiguration(t("observe.storage.label.server")); + h2Config = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local")); + pgConfig = dataSourcesManager.newPGDataSourceConfiguration(I18n.n("observe.storage.label.remote")); + restConfig = dataSourcesManager.newRestDataSourceConfiguration(I18n.n("observe.storage.label.server")); if (previousConfig instanceof ObserveDataSourceConfigurationTopiaH2) { @@ -451,7 +450,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie ObserveDataSourceConfiguration configuration; switch (getDbMode()) { case CREATE_LOCAL: - configuration = toH2StorageConfig(t("observe.runner.initStorage.label.local")); + configuration = toH2StorageConfig(I18n.n("observe.runner.initStorage.label.local")); dataSource = dataSourcesManager.newDataSource(configuration); dataSource.addObserveSwingDataSourceListener( @@ -493,15 +492,15 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie break; case USE_LOCAL: - configuration = toH2StorageConfig(t("observe.runner.initStorage.label.local")); + configuration = toH2StorageConfig(I18n.n("observe.runner.initStorage.label.local")); dataSource = dataSourcesManager.newDataSource(configuration); break; case USE_REMOTE: - configuration = toPGStorageConfig(t("observe.storage.label.remote")); + configuration = toPGStorageConfig(I18n.n("observe.storage.label.remote")); dataSource = dataSourcesManager.newDataSource(configuration); break; case USE_SERVER: - configuration = toRestStorageConfig(t("observe.storage.label.server")); + configuration = toRestStorageConfig(I18n.n("observe.storage.label.server")); dataSource = dataSourcesManager.newDataSource(configuration); break; } @@ -553,9 +552,9 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie ObserveDataSourcesManager dataSourcesManager = ObserveDataSourcesManagerApplicationComponent.value(); - h2Config = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local")); - pgConfig = dataSourcesManager.newPGDataSourceConfiguration(t("observe.storage.label.remote")); - restConfig = dataSourcesManager.newRestDataSourceConfiguration(t("observe.storage.label.server")); + h2Config = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local")); + pgConfig = dataSourcesManager.newPGDataSourceConfiguration(I18n.n("observe.storage.label.remote")); + restConfig = dataSourcesManager.newRestDataSourceConfiguration(I18n.n("observe.storage.label.server")); Pair<CreationMode, DbMode> modes = computeModes(config); CreationMode mode = modes.getLeft(); @@ -1217,10 +1216,6 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie validate(); } - public boolean isStoreRemoteConfig() { - return storeRemoteConfig; - } - public File getBackupFile() { return backupFile; } @@ -1839,7 +1834,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie if (isImportReferential()) { - String dbLabel = t("observe.storage.label.reference.import.db"); + String dbLabel = I18n.n("observe.storage.label.reference.import.db"); switch (getReferentielImportMode()) { @@ -1916,7 +1911,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie if (isImportData()) { - String dbLabel = t("observe.storage.label.data.import.db"); + String dbLabel = I18n.n("observe.storage.label.data.import.db"); switch (getDataImportMode()) { ===================================== client-runner/src/main/java/fr/ird/observe/client/RunObserve.java ===================================== @@ -40,9 +40,9 @@ import fr.ird.observe.client.datasource.h2.backup.WithLocalDatabaseBackupTimer; import fr.ird.observe.client.main.ObserveMainUI; import fr.ird.observe.client.util.FloatConverter; import fr.ird.observe.client.util.ObserveSwingTechnicalException; -import fr.ird.observe.client.util.ProgressModel; import fr.ird.observe.client.util.UIHelper; import fr.ird.observe.services.configuration.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2; import io.ultreia.java4all.application.context.ApplicationContext; @@ -80,7 +80,6 @@ import java.util.Set; import java.util.logging.Level; import static fr.ird.observe.client.ClientUIContext.askUser; -import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; /** @@ -119,6 +118,125 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, return (RunObserve) ApplicationRunner.getRunner(); } + public static void askToCreateLocalDatabase(ObserveMainUI mainUI, + ClientConfig config, + ObserveDataSourcesManager dataSourcesManager, + BackupStorage lastAutomaticBackup) { + + InitStorageModel initStorageModel = new InitStorageModel(config.getLocalDBDirectory(), lastAutomaticBackup); + + String text = InitStorageModelTemplate.generate(initStorageModel); + + Object[] options; + int defaultOption; + boolean noAutomaticBackup = lastAutomaticBackup == null; + if (noAutomaticBackup) { + options = new Object[]{ + t("observe.runner.initStorage.choice.useRemoteStorage"), + t("observe.runner.initStorage.choice.createLocalStorage"), + t("observe.runner.initStorage.choice.doNothing")}; + defaultOption = 1; + + } else { + options = new Object[]{ + t("observe.runner.initStorage.choice.useRemoteStorage"), + t("observe.runner.initStorage.choice.createLocalStorage"), + t("observe.runner.initStorage.choice.loadLastAutomaticBackup"), + t("observe.runner.initStorage.choice.doNothing")}; + defaultOption = 2; + + } + + JLabel label = new JLabel(text); + int response = askUser( + null, + t("observe.runner.initStorage.title.no.local.db.found"), + label, + JOptionPane.QUESTION_MESSAGE, + options, + defaultOption + ); + log.debug(String.format("response : %d", response)); + + if (noAutomaticBackup) { + Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class); + String title = null; + if (response != JOptionPane.CLOSED_OPTION && response < 2) { + + if (response == 1) { + // creation de la base locale + dbModes.add(DbMode.CREATE_LOCAL); + title = I18n.n("observe.runner.initStorage.title.create.local.db"); + } else { + // connexion à une base distante + dbModes.add(DbMode.USE_REMOTE); + dbModes.add(DbMode.USE_SERVER); + title = I18n.n("observe.runner.initStorage.title.load.remote.db"); + } + } + if (!dbModes.isEmpty()) { + + DataSourceEditorBodyContent body = mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class); + body.doChangeStorage(dbModes, title); + } + } else { + + Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class); + String title = null; + if (response != JOptionPane.CLOSED_OPTION && response < 3) { + + switch (response) { + case 2: + // load last backup + loadBackup(dataSourcesManager, mainUI, lastAutomaticBackup); + break; + case 1: + // create local db + // creation de la base locale + dbModes.add(DbMode.CREATE_LOCAL); + title = I18n.n("observe.runner.initStorage.title.create.local.db"); + break; + case 0: + // use remote db + dbModes.add(DbMode.USE_REMOTE); + dbModes.add(DbMode.USE_SERVER); + title = I18n.n("observe.runner.initStorage.title.load.remote.db"); + break; + } + } + if (!dbModes.isEmpty()) { + DataSourceEditorBodyContent body = mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class); + body.doChangeStorage(dbModes, title); + } + } + + } + + public static void loadBackup(ObserveDataSourcesManager dataSourcesManager, ObserveMainUI mainUI, BackupStorage backupStorage) { + log.info("Will load last backup: " + backupStorage.getFile()); + try { +// byte[] dump = Files.readAllBytes(backupStorage.getFile().toPath()); + DataSourceCreateConfigurationDto createDto = new DataSourceCreateConfigurationDto(); + createDto.setImportDatabase(TopiaSqlScript.of(backupStorage.getFile().toURI())); + + ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = dataSourcesManager.newH2DataSourceConfiguration(I18n.n("observe.runner.initStorage.label.local")); + + ObserveSwingDataSource dataSource = dataSourcesManager.newDataSource(dataSourceConfigurationH2, createDto); + + mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, dataSource, true); + + //FIXME:BodyContent Review progress model, not linked to ui any more... +// dataSource.setProgressModel(new ProgressModel()); +// dataSource.create(createDto); +// +// mainUI.changeBodyContent(DataSourceEditor.class); +// mainUI.getModel().setMode(ObserveUIMode.DB); + + } catch (Exception e) { + throw new ObserveSwingTechnicalException("Impossible de créer la base locale", e); + } + } + @Override protected void initOnce() { if (!init) { @@ -272,7 +390,7 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, // // return; // } - Optional<ObserveSwingDataSource> dataSourceToReload = ObserveSwingApplicationContext.getDataSourceToReload(); + Optional<ObserveDataSourceConfiguration> dataSourceToReload = ObserveSwingApplicationContext.getDataSourceToReload(); ObserveSwingApplicationContext.setDataSourceToReload(null); if (!config.isLoadLocalStorage() && !dataSourceToReload.isPresent()) { @@ -368,19 +486,19 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, //FIXME Need to have a unified API and only one //FIXME first try to open specified ds (here local ds) //FIXME if can not load local ds, then feedback it and propose to load automatic backup, or to create a new local ds - private void initStorage(ClientConfig config, JFrame ui, ObserveSwingDataSource previousDataSource) { + private void initStorage(ClientConfig config, JFrame ui, ObserveDataSourceConfiguration previousDataSourceConfiguration) { ObserveMainUI mainUI = (ObserveMainUI) ui; ObserveDataSourcesManager dataSourcesManager = getObserveDataSourcesManager(); BackupsManager backupsManager = getBackupsManager(); - if (previousDataSource != null) { + if (previousDataSourceConfiguration != null) { // reuse previous data source - previousDataSource.setProgressModel(new ProgressModel()); + ObserveSwingDataSource previousDataSource = dataSourcesManager.newDataSource(previousDataSourceConfiguration); mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, previousDataSource, true); - } else if (config.isLoadLocalStorage()){ + } else if (config.isLoadLocalStorage()) { boolean askToCreate = true; BackupStorage lastAutomaticBackup = backupsManager.getAutomaticBackups().stream().findFirst().orElse(null); @@ -390,7 +508,6 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, // une base locale existe, on l'ouvre ObserveSwingDataSource dataSource = dataSourcesManager.newLocalDataSource(); - dataSource.setProgressModel(new ProgressModel()); try { @@ -430,124 +547,4 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, log.info(t("observe.runner.initStorage.done")); } - - public static void askToCreateLocalDatabase(ObserveMainUI mainUI, - ClientConfig config, - ObserveDataSourcesManager dataSourcesManager, - BackupStorage lastAutomaticBackup) { - - InitStorageModel initStorageModel = new InitStorageModel(config.getLocalDBDirectory(), lastAutomaticBackup); - - String text = InitStorageModelTemplate.generate(initStorageModel); - - Object[] options; - int defaultOption; - boolean noAutomaticBackup = lastAutomaticBackup == null; - if (noAutomaticBackup) { - options = new Object[]{ - t("observe.runner.initStorage.choice.useRemoteStorage"), - t("observe.runner.initStorage.choice.createLocalStorage"), - t("observe.runner.initStorage.choice.doNothing")}; - defaultOption = 1; - - } else { - options = new Object[]{ - t("observe.runner.initStorage.choice.useRemoteStorage"), - t("observe.runner.initStorage.choice.createLocalStorage"), - t("observe.runner.initStorage.choice.loadLastAutomaticBackup"), - t("observe.runner.initStorage.choice.doNothing")}; - defaultOption = 2; - - } - - JLabel label = new JLabel(text); - int response = askUser( - null, - t("observe.runner.initStorage.title.no.local.db.found"), - label, - JOptionPane.QUESTION_MESSAGE, - options, - defaultOption - ); - log.debug(String.format("response : %d", response)); - - if (noAutomaticBackup) { - Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class); - String title = null; - if (response != JOptionPane.CLOSED_OPTION && response < 2) { - - if (response == 1) { - // creation de la base locale - dbModes.add(DbMode.CREATE_LOCAL); - title = n("observe.runner.initStorage.title.create.local.db"); - } else { - // connexion à une base distante - dbModes.add(DbMode.USE_REMOTE); - dbModes.add(DbMode.USE_SERVER); - title = n("observe.runner.initStorage.title.load.remote.db"); - } - } - if (!dbModes.isEmpty()) { - - DataSourceEditorBodyContent body = mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class); - body.doChangeStorage(dbModes, title); - } - } else { - - Set<DbMode> dbModes = EnumSet.noneOf(DbMode.class); - String title = null; - if (response != JOptionPane.CLOSED_OPTION && response < 3) { - - switch (response) { - case 2: - // load last backup - loadBackup(dataSourcesManager, mainUI, lastAutomaticBackup); - break; - case 1: - // create local db - // creation de la base locale - dbModes.add(DbMode.CREATE_LOCAL); - title = n("observe.runner.initStorage.title.create.local.db"); - break; - case 0: - // use remote db - dbModes.add(DbMode.USE_REMOTE); - dbModes.add(DbMode.USE_SERVER); - title = n("observe.runner.initStorage.title.load.remote.db"); - break; - } - } - if (!dbModes.isEmpty()) { - DataSourceEditorBodyContent body = mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class); - body.doChangeStorage(dbModes, title); - } - } - - } - - public static void loadBackup(ObserveDataSourcesManager dataSourcesManager, ObserveMainUI mainUI, BackupStorage backupStorage) { - log.info("Will load last backup: " + backupStorage.getFile()); - try { -// byte[] dump = Files.readAllBytes(backupStorage.getFile().toPath()); - DataSourceCreateConfigurationDto createDto = new DataSourceCreateConfigurationDto(); - createDto.setImportDatabase(TopiaSqlScript.of(backupStorage.getFile().toURI())); - - ObserveDataSourceConfigurationTopiaH2 dataSourceConfigurationH2 = dataSourcesManager.newH2DataSourceConfiguration(t("observe.runner.initStorage.label.local")); - - ObserveSwingDataSource dataSource = dataSourcesManager.newDataSource(dataSourceConfigurationH2, createDto); - - mainUI.getMainUIBodyContentManager().getBodyTyped(DataSourceEditor.class, DataSourceEditorBodyContent.class).loadStorage(mainUI, dataSource, true); - - //FIXME:BodyContent Review progress model, not linked to ui any more... -// dataSource.setProgressModel(new ProgressModel()); -// dataSource.create(createDto); -// -// mainUI.changeBodyContent(DataSourceEditor.class); -// mainUI.getModel().setMode(ObserveUIMode.DB); - - } catch (Exception e) { - throw new ObserveSwingTechnicalException("Impossible de créer la base locale", e); - } - } - } ===================================== common-service/src/main/java/fr/ird/observe/services/configuration/rest/ObserveDataSourceConfigurationRest.java ===================================== @@ -25,10 +25,12 @@ package fr.ird.observe.services.configuration.rest; import com.google.common.base.MoreObjects; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceType; +import io.ultreia.java4all.i18n.I18n; +import org.nuiton.version.Version; + import java.net.URL; import java.nio.file.Path; import java.util.Optional; -import org.nuiton.version.Version; /** * Configuration d'une source de données Rest non connectée. @@ -37,6 +39,7 @@ import org.nuiton.version.Version; * * @author Tony Chemit - dev@tchemit.fr */ +@SuppressWarnings("unused") public class ObserveDataSourceConfigurationRest implements ObserveDataSourceConfiguration { private static final long serialVersionUID = 1L; @@ -75,7 +78,7 @@ public class ObserveDataSourceConfigurationRest implements ObserveDataSourceConf @Override public String getLabel() { - return label; + return I18n.t(label); } @Override ===================================== common-service/src/main/java/fr/ird/observe/services/configuration/topia/ObserveDataSourceConfigurationTopiaSupport.java ===================================== @@ -24,6 +24,7 @@ package fr.ird.observe.services.configuration.topia; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceType; +import io.ultreia.java4all.i18n.I18n; import org.nuiton.version.Version; import java.nio.file.Path; @@ -101,7 +102,7 @@ public abstract class ObserveDataSourceConfigurationTopiaSupport implements Obse @Override public String getLabel() { - return label; + return I18n.t(label); } public void setLabel(String label) { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/1ccd9702cdf11f53730dfc591d... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/1ccd9702cdf11f53730dfc591d... You're receiving this email because of your account on gitlab.com.