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 609b7af455360d8a560f3a194c66e7b97a54b49e Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Sep 2 23:58:43 2016 +0200 Ajout méthode pour faire une backup de base H2 --- .../controller/v1/DataSourceServiceController.java | 6 ++++ .../services/service/DataSourceService.java | 2 ++ .../topia/service/DataSourceServiceTopia.java | 40 ++++++++++++++-------- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java b/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java index 9db5b26..8154088 100644 --- a/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java +++ b/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java @@ -44,6 +44,7 @@ import fr.ird.observe.services.service.DatabaseNotFoundException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.io.File; import java.util.Optional; import java.util.Set; @@ -115,6 +116,11 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport } @Override + public void backup(File backupFile) { + + } + + @Override public Set<ObserveDbUserDto> getUsers(ObserveDataSourceConfiguration dataSourceConfiguration) { ObserveDataSourceConfiguration dataSourceConfigurationTopia = getTopiaDataSourceConfiguration(dataSourceConfiguration); return getAnonymousService(dataSourceConfigurationTopia).getUsers(dataSourceConfigurationTopia); diff --git a/services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java b/services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java index a2ba65d..0a3a94d 100644 --- a/services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java +++ b/services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java @@ -34,6 +34,7 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.spi.NoDataAccess; import java.io.Closeable; +import java.io.File; import java.util.Set; /** @@ -70,4 +71,5 @@ public interface DataSourceService extends ObserveService, Closeable { void destroy() throws DatabaseDestroyNotAuthorizedException; + void backup(File backupFile); } 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 8335c55..1f2dfd0 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 @@ -25,7 +25,6 @@ package fr.ird.observe.services.topia.service; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.ObserveTopiaApplicationContext; @@ -33,18 +32,6 @@ import fr.ird.observe.ObserveTopiaConfiguration; import fr.ird.observe.ObserveTopiaConfigurationFactory; import fr.ird.observe.entities.migration.ObserveMigrationConfigurationProvider; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; -import fr.ird.observe.services.service.AddSqlScriptProducerRequest; -import fr.ird.observe.services.service.BabModelVersionException; -import fr.ird.observe.services.service.DataSourceService; -import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; -import fr.ird.observe.services.service.DatabaseDestroyNotAuthorizedException; -import fr.ird.observe.services.service.DatabaseNotFoundException; -import fr.ird.observe.services.service.SqlScriptProducerService; -import fr.ird.observe.services.topia.ObserveJdbcHelper; -import fr.ird.observe.services.topia.ObserveSecurityHelper; -import fr.ird.observe.services.topia.ObserveServiceTopia; -import fr.ird.observe.services.topia.ObserveTopiaApplicationContextFactory; -import fr.ird.observe.services.topia.binder.BinderEngine; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaPG; @@ -58,6 +45,18 @@ import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationExce import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.dto.ObserveDbUserDtos; import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; +import fr.ird.observe.services.service.BabModelVersionException; +import fr.ird.observe.services.service.DataSourceService; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseDestroyNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; +import fr.ird.observe.services.service.SqlScriptProducerService; +import fr.ird.observe.services.topia.ObserveJdbcHelper; +import fr.ird.observe.services.topia.ObserveSecurityHelper; +import fr.ird.observe.services.topia.ObserveServiceTopia; +import fr.ird.observe.services.topia.ObserveTopiaApplicationContextFactory; +import fr.ird.observe.services.topia.binder.BinderEngine; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.jdbc.JdbcHelper; @@ -72,6 +71,7 @@ import java.nio.file.Files; import java.util.Optional; import java.util.Set; import java.util.UUID; +import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.l; @@ -467,6 +467,18 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } @Override + public void backup(File backupFile) { + + if (!serviceContext.getTopiaApplicationContext().getConfiguration().isH2Configuration()) { + + throw new IllegalStateException("Cant backup a none H2 database."); + } + + getTopiaPersistenceContext().getSqlSupport().executeSql("SCRIPT NOPASSWORDS NOSETTINGS BLOCKSIZE 2048 TO '" + backupFile.getAbsolutePath() + "' COMPRESSION GZIP CHARSET 'UTF-8';"); + + } + + @Override public Set<ObserveDbUserDto> getUsers(ObserveDataSourceConfiguration dataSourceConfiguration) { if (log.isTraceEnabled()) { log.trace("getUsers(" + dataSourceConfiguration + ")"); @@ -497,7 +509,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS @Override public void applySecurity(ObserveDataSourceConfiguration dataSourceConfiguration, Set<ObserveDbUserDto> users) { if (log.isTraceEnabled()) { - log.trace("applySecurity(" + dataSourceConfiguration + ", [" + Joiner.on(", ").join(Iterables.transform(users, ObserveDbUserDtos.NAME_FUNCTION::apply)) + "])"); + log.trace("applySecurity(" + dataSourceConfiguration + ", [" + Joiner.on(", ").join(users.stream().map(ObserveDbUserDtos.NAME_FUNCTION).collect(Collectors.toList())) + "])"); } // pas de securité pour les bases autres que postgresql -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.