This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 6097c21d01aa0d93e579a50014bbc9bd5b092f62 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 5 13:32:37 2016 +0200 Ne pas fermer la source lors d'une création de base dans un cas particulier... --- .../swing/ui/storage/StorageBackupUILauncher.java | 10 ++++++++-- .../dto/DataSourceCreateConfigurationDto.java | 10 ++++++++++ .../topia/service/DataSourceServiceTopia.java | 23 +++++++++++++++++----- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageBackupUILauncher.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageBackupUILauncher.java index f6e9109..3187d77 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageBackupUILauncher.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageBackupUILauncher.java @@ -27,6 +27,9 @@ import fr.ird.observe.application.swing.configuration.constants.DbMode; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; +import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.service.BabModelVersionException; @@ -133,8 +136,11 @@ public class StorageBackupUILauncher extends StorageUILauncher { sourceToBackup = ObserveSwingApplicationContext.get().getDataSourcesManager().newTemporaryH2Datasource("Backup-" + backupFile.getName()); + DataSourceCreateConfigurationDto createDto = new DataSourceCreateConfigurationDto(); + createDto.setLeaveOpenSource(true); + createDto.setImportReferentialDataSourceConfiguration(localSource.getConfiguration()); - sourceToBackup.open(); + sourceToBackup.create(createDto); TripManagementService tmpManagementService = sourceToBackup.newTripManagementService(); @@ -160,7 +166,7 @@ public class StorageBackupUILauncher extends StorageUILauncher { sourceToBackup.newDataSourceService().backup(backupFile); - } catch (DatabaseNotFoundException | DatabaseConnexionNotAuthorizedException | BabModelVersionException e) { + } catch (DatabaseNotFoundException | DatabaseConnexionNotAuthorizedException | BabModelVersionException | IncompatibleDataSourceCreateConfigurationException | DataSourceCreateWithNoReferentialImportException e) { throw new ObserveSwingTechnicalException(e); } finally { diff --git a/services-model/src/main/java/fr/ird/observe/services/dto/DataSourceCreateConfigurationDto.java b/services-model/src/main/java/fr/ird/observe/services/dto/DataSourceCreateConfigurationDto.java index 9933604..bcf0789 100644 --- a/services-model/src/main/java/fr/ird/observe/services/dto/DataSourceCreateConfigurationDto.java +++ b/services-model/src/main/java/fr/ird/observe/services/dto/DataSourceCreateConfigurationDto.java @@ -61,6 +61,8 @@ public class DataSourceCreateConfigurationDto extends AbstractObserveDto { */ protected boolean canCreateEmptyDatabase; + private boolean leaveOpenSource; + public boolean isCanCreateEmptyDatabase() { return canCreateEmptyDatabase; } @@ -81,6 +83,14 @@ public class DataSourceCreateConfigurationDto extends AbstractObserveDto { return optionalImportDataDataSourceConfiguration != null; } + public boolean isLeaveOpenSource() { + return leaveOpenSource; + } + + public void setLeaveOpenSource(boolean leaveOpenSource) { + this.leaveOpenSource = leaveOpenSource; + } + public byte[] getImportDatabase() { return optionalImportDatabase; } diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/DataSourceServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/DataSourceServiceTopia.java index d4d334d..cd5bdb2 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/DataSourceServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/DataSourceServiceTopia.java @@ -294,15 +294,21 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS byte[] referentialDump; - try (DataSourceService dataSourceService = serviceContext.newService(importDataSourceConfiguration, DataSourceService.class)) { + DataSourceService dataSourceService = serviceContext.newService(importDataSourceConfiguration, DataSourceService.class); + try { ObserveDataSourceConnection importDataSourceConnection = dataSourceService.open(importDataSourceConfiguration); SqlScriptProducerService dumpProducerService = serviceContext.newService(importDataSourceConnection, SqlScriptProducerService.class); referentialDump = dumpProducerService.produceAddSqlScript(request).getSqlCode(); - } + topiaApplicationContext.executeSqlStatements(referentialDump); + } finally { + + if (!dataSourceCreateConfiguration.isLeaveOpenSource()) { + dataSourceService.close(); + } - topiaApplicationContext.executeSqlStatements(referentialDump); + } referantialImported = true; @@ -340,14 +346,21 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS byte[] dataDump; - try (DataSourceService dataSourceService = serviceContext.newService(importDataSourceConfiguration, DataSourceService.class)) { - ObserveDataSourceConnection importDataSourceConnection = dataSourceService.open(importDataSourceConfiguration); + DataSourceService dataSourceService = serviceContext.newService(importDataSourceConfiguration, DataSourceService.class); + try { + + ObserveDataSourceConnection importDataSourceConnection = dataSourceService.open(importDataSourceConfiguration); SqlScriptProducerService dumpProducerService = serviceContext.newService(importDataSourceConnection, SqlScriptProducerService.class); dataDump = dumpProducerService.produceAddSqlScript(request).getSqlCode(); + } finally { + if (!dataSourceCreateConfiguration.isLeaveOpenSource()) { + dataSourceService.close(); + } } + if (log.isInfoEnabled()) { log.info("Import data" + (request.isAddReferential() ? " and referential." : ".")); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.