branch feature/7549 updated (7791a1f -> 853519a)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7549 in repository observe. See http://git.codelutin.com/observe.git from 7791a1f miragtion des base de données (refs #7549) new 853519a migrer une base sans l'ouvrir, verification de la version de la base local au chargement et migration si nécessaire (refs #7549) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 853519a9b5765bac89ea5c0ec68bd3356636f283 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 30 17:53:37 2015 +0200 migrer une base sans l'ouvrir, verification de la version de la base local au chargement et migration si nécessaire (refs #7549) Summary of changes: .../observe/ObserveSwingApplicationContext.java | 22 +++++++----- .../fr/ird/observe/db/ObserveSwingDataSource.java | 39 +++++++++++++++++--- .../ird/observe/ui/storage/ObstunaAdminAction.java | 41 +--------------------- .../ird/observe/ui/storage/StorageUIHandler.java | 10 ++++++ .../services/service/DataSourceService.java | 6 +--- .../services/service/DataSourceServiceTopia.java | 7 ++-- 6 files changed, 63 insertions(+), 62 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7549 in repository observe. See http://git.codelutin.com/observe.git commit 853519a9b5765bac89ea5c0ec68bd3356636f283 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 30 17:53:37 2015 +0200 migrer une base sans l'ouvrir, verification de la version de la base local au chargement et migration si nécessaire (refs #7549) --- .../observe/ObserveSwingApplicationContext.java | 22 +++++++----- .../fr/ird/observe/db/ObserveSwingDataSource.java | 39 +++++++++++++++++--- .../ird/observe/ui/storage/ObstunaAdminAction.java | 41 +--------------------- .../ird/observe/ui/storage/StorageUIHandler.java | 10 ++++++ .../services/service/DataSourceService.java | 6 +--- .../services/service/DataSourceServiceTopia.java | 7 ++-- 6 files changed, 63 insertions(+), 62 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java index 756316c..e60343c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ObserveSwingApplicationContext.java @@ -36,6 +36,7 @@ import fr.ird.observe.services.ObserveDataSourceConfigurationMainFactory; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.ObserveServiceMainFactory; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; +import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; @@ -542,16 +543,21 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext { // création de la source de données sur la base locale ObserveSwingDataSource dataSource = ObserveServiceHelper.newLocalStorageService(getConfig()); - // la source sera utilisée dans les ui - prepareMainStorage(dataSource); - setDataSource(dataSource); + try { - if (log.isInfoEnabled()) { - log.info(t("observe.init.local.db.detected", dataSource.getLabel())); - } + ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(); - // la base locale existe, on l'ouvre - try { + dataSource.migrateData(dataSourceInformation, getConfig().getModelVersion()); + + // la source sera utilisée dans les ui + prepareMainStorage(dataSource); + setDataSource(dataSource); + + if (log.isInfoEnabled()) { + log.info(t("observe.init.local.db.detected", dataSource.getLabel())); + } + + // la base locale existe, on l'ouvre dataSource.open(); success = true; } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException e) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java index 1ab99ab..c484126 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java @@ -28,6 +28,7 @@ import org.apache.commons.logging.LogFactory; import org.jdesktop.beans.AbstractSerializableBean; import org.nuiton.util.version.Version; +import javax.swing.JOptionPane; import javax.swing.event.EventListenerList; import java.io.File; import java.util.Locale; @@ -189,13 +190,43 @@ public class ObserveSwingDataSource extends AbstractSerializableBean { dataSourceService.applySecurity(users); } - public void migrateData() { + public void migrateData(ObserveDataSourceInformation dataSourceInformation, Version targetVersion) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - Preconditions.checkState(isOpen(), "Connection is not open"); + Preconditions.checkState(!isOpen(), "Connection is open"); - DataSourceService dataSourceService = newService(DataSourceService.class); + Version dbVersion = dataSourceInformation.getVersion(); + if (! dataSourceInformation.getMigrations().isEmpty()) { + + if (dbVersion.before(dataSourceInformation.getMinnimumVersion())) { + + JOptionPane.showMessageDialog( + null, + t("observe.storage.migrate.not.possible.before.version.3.0.message", targetVersion, dbVersion), + t("observe.storage.migrate.not.possible.before.version.3.0.title", targetVersion), + JOptionPane.WARNING_MESSAGE); + + } else { + + int answer = JOptionPane.showConfirmDialog( + null, + t("observe.storage.migrate.askUser.message", dbVersion, targetVersion, dataSourceInformation.getMigrations()), + t("observe.storage.migrate.askUser.title", targetVersion), + JOptionPane.YES_NO_OPTION, + JOptionPane.WARNING_MESSAGE); - dataSourceService.migrateData(); + if (answer == JOptionPane.YES_OPTION) { + + DataSourceService dataSourceService = newService(DataSourceService.class); + + + if (log.isInfoEnabled()) { + log.info("Migrate data source " + getLabel() + " in " + dbVersion + " to " + targetVersion); + } + + dataSourceService.migrateData(); + } + } + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java index 6783328..59fb938 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/ObstunaAdminAction.java @@ -42,7 +42,6 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.version.Version; import org.nuiton.util.version.Versions; -import javax.swing.JOptionPane; import java.awt.Window; import java.util.Set; @@ -246,45 +245,7 @@ public enum ObstunaAdminAction { @Override protected void execute() throws Exception { - Version dbVersion = dataSourceInformation.getVersion(); - if (! dataSourceInformation.getMigrations().isEmpty()) { - - if (dbVersion.before(dataSourceInformation.getMinnimumVersion())) { - - JOptionPane.showMessageDialog( - null, - t("observe.storage.migrate.not.possible.before.version.3.0.message", targetVersion, dbVersion), - t("observe.storage.migrate.not.possible.before.version.3.0.title", targetVersion), - JOptionPane.WARNING_MESSAGE); - - } else { - - int answer = JOptionPane.showConfirmDialog( - null, - t("observe.storage.migrate.askUser.message", dbVersion, targetVersion, dataSourceInformation.getMigrations()), - t("observe.storage.migrate.askUser.title", targetVersion), - JOptionPane.YES_NO_OPTION, - JOptionPane.WARNING_MESSAGE); - - if (answer == JOptionPane.YES_OPTION) { - - try { - - dataSource.open(); - - if (log.isInfoEnabled()) { - log.info("Migrate data source " + dataSource.getLabel() + " in " + dbVersion + " to " + targetVersion); - } - - dataSource.migrateData(); - } finally { - if (dataSource.isOpen()) { - dataSource.close(); - } - } - } - } - } + dataSource.migrateData(dataSourceInformation, targetVersion); } @Override diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index 7596a48..893bdda 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -41,6 +41,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRest; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; +import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.IdDtos; @@ -491,6 +492,15 @@ public class StorageUIHandler { currentDataSource = newDataSourceFromModel(model); + // si on utilise la base local on lance une migration de la base si necessaire + if (DbMode.USE_LOCAL.equals((model.getDbMode()))) { + + ObserveDataSourceInformation dataSourceInformation = model.getDataSourceInformation(); + + currentDataSource.migrateData(dataSourceInformation, config.getModelVersion()); + + } + observeContext.setDataSource(currentDataSource); observeContext.prepareMainStorage(currentDataSource); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java index bca26c5..8753db9 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java @@ -72,10 +72,6 @@ public interface DataSourceService extends ObserveService { @Write void applySecurity(Set<ObserveDbUserDto> users); - @ReadReferentialPermission - @WriteReferentialPermission - @ReadDataPermission - @WriteDataPermission - @Write + @NoDataAccess void migrateData(); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java index b238073..7308a30 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -340,12 +340,9 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); - Optional<ObserveTopiaApplicationContext> optionalTopiaApplicationContext = ObserveTopiaApplicationContextFactory.getTopiaApplicationContextIfPresent(dataSourceConfiguration); - - if (optionalTopiaApplicationContext.isPresent()) { + ObserveTopiaApplicationContext topiaApplicationContext = ObserveTopiaApplicationContextFactory.createTopiaApplicationContext(dataSourceConfiguration, false); - optionalTopiaApplicationContext.get().getMigrationService().runSchemaMigration(); - } + topiaApplicationContext.getMigrationService().runSchemaMigration(); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm