branch develop-5.x updated (1ee38e0 -> 0c706f9)
This is an automated email from the git hooks/post-receive script. New change to branch develop-5.x in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from 1ee38e0 Plantage de la synchro avancée de référentiel (Fixes #8882) new 0c706f9 Use Topia 3.2 and Hibernate 5.1.3 (fixes #8889) 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 0c706f9550e8b31e792b6e3c465c7ad5a75a4697 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Dec 15 14:07:49 2016 +0100 Use Topia 3.2 and Hibernate 5.1.3 (fixes #8889) Summary of changes: .../observe/ObserveTopiaApplicationContext.java | 10 ++++-- .../entities/migration/ObserveMigrationEngine.java | 4 +-- pom.xml | 4 +-- .../sql/batch/actions/AbstractSchemaAction.java | 38 ++++++++++++++++++++++ .../sql/batch/actions/CreateSchemaAction.java | 24 +++----------- .../sql/batch/actions/DropSchemaAction.java | 36 +++++--------------- 6 files changed, 62 insertions(+), 54 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop-5.x in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 0c706f9550e8b31e792b6e3c465c7ad5a75a4697 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Dec 15 14:07:49 2016 +0100 Use Topia 3.2 and Hibernate 5.1.3 (fixes #8889) --- .../observe/ObserveTopiaApplicationContext.java | 10 ++++-- .../entities/migration/ObserveMigrationEngine.java | 4 +-- pom.xml | 4 +-- .../sql/batch/actions/AbstractSchemaAction.java | 38 ++++++++++++++++++++++ .../sql/batch/actions/CreateSchemaAction.java | 24 +++----------- .../sql/batch/actions/DropSchemaAction.java | 36 +++++--------------- 6 files changed, 62 insertions(+), 54 deletions(-) diff --git a/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java b/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java index 3fb657a..d96f70e 100644 --- a/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java +++ b/entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java @@ -29,8 +29,8 @@ import fr.ird.observe.entities.migration.ObserveMigrationEngine; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; -import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; +import org.hibernate.tool.schema.TargetType; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.internal.support.TopiaMetadataModelSupportImpl; import org.nuiton.topia.persistence.jdbc.JdbcH2Helper; @@ -46,6 +46,7 @@ import org.nuiton.util.StringUtil; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.EnumSet; import java.util.LinkedHashSet; import java.util.Objects; import java.util.Set; @@ -126,8 +127,11 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat topiaPersistenceContext.commit(); } - Configuration hibernateConfiguration = getHibernateProvider().getHibernateConfiguration(); - new SchemaExport(hibernateConfiguration).execute(showSchema, true, false, true); + EnumSet<TargetType> targetTypes = EnumSet.of(TargetType.DATABASE); + if (showSchema) { + targetTypes.add(TargetType.STDOUT); + } + new SchemaExport().execute(targetTypes, SchemaExport.Action.CREATE, getHibernateProvider().getMetaData()); topiaFiresSupport.firePostCreateSchema(this); } catch (HibernateException eee) { diff --git a/entities/src/main/java/fr/ird/observe/entities/migration/ObserveMigrationEngine.java b/entities/src/main/java/fr/ird/observe/entities/migration/ObserveMigrationEngine.java index d5ffe91..51ec92d 100644 --- a/entities/src/main/java/fr/ird/observe/entities/migration/ObserveMigrationEngine.java +++ b/entities/src/main/java/fr/ird/observe/entities/migration/ObserveMigrationEngine.java @@ -34,8 +34,8 @@ import org.nuiton.topia.persistence.util.TopiaUtil; public class ObserveMigrationEngine extends TopiaMigrationEngine { public void createSchemaIfNotExist() { - if (TopiaUtil.isSchemaEmpty(versionConfiguration)) { - TMSVersionHibernateDao.createTMSSchema(versionConfiguration); + if (TopiaUtil.isSchemaEmpty(versionConfiguration, metaData)) { + TMSVersionHibernateDao.createTMSSchema(metaData); } } diff --git a/pom.xml b/pom.xml index 2e8f2d2..7b6c994 100644 --- a/pom.xml +++ b/pom.xml @@ -161,14 +161,14 @@ <eugenePluginVersion>3.0-alpha-9</eugenePluginVersion> <processorPluginVersion>1.3</processorPluginVersion> - <topiaVersion>3.2-SNAPSHOT</topiaVersion> + <topiaVersion>3.2</topiaVersion> <jaxxVersion>2.36</jaxxVersion> <nuitonI18nVersion>3.6.2</nuitonI18nVersion> <nuitonValidatorVersion>3.0.1</nuitonValidatorVersion> <nuitonUtilsVersion>3.0-rc-15</nuitonUtilsVersion> <nuitonConfigVersion>3.1</nuitonConfigVersion> <xworkVersion>2.3.30</xworkVersion> - <hibernateVersion>4.3.11.Final</hibernateVersion> + <hibernateVersion>5.1.3.Final</hibernateVersion> <sl4jVersion>1.7.21</sl4jVersion> <swingXVersion>1.6.5-1</swingXVersion> <reflectionsVersion>0.9.10</reflectionsVersion> diff --git a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSchemaAction.java b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSchemaAction.java index 10e44c3..fb2f03e 100644 --- a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSchemaAction.java +++ b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractSchemaAction.java @@ -22,11 +22,23 @@ package org.nuiton.topia.service.sql.batch.actions; * #L% */ +import org.hibernate.boot.Metadata; +import org.hibernate.boot.registry.BootstrapServiceRegistry; +import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.dialect.Dialect; +import org.hibernate.engine.config.spi.ConfigurationService; +import org.hibernate.tool.hbm2ddl.SchemaExport; +import org.hibernate.tool.schema.TargetType; +import org.nuiton.topia.persistence.HibernateAvailableSettings; import java.io.IOException; import java.nio.file.Path; import java.sql.SQLException; +import java.util.EnumSet; +import java.util.Properties; /** * Created on 01/01/16. @@ -57,4 +69,30 @@ public abstract class AbstractSchemaAction<R extends AbstractSchemaRequest> exte } + + protected void generateSqlInFile(Class<? extends Dialect> dialectType, Path sqlScriptFile, SchemaExport.Action action) { + + Metadata hibernateMetadata = getSourcePersistenceContext().getHibernateSupport().getHibernateMetadata(); + + StandardServiceRegistry serviceRegistry = ((MetadataImplementor) hibernateMetadata).getMetadataBuildingOptions().getServiceRegistry(); + + Properties properties = new Properties(); + properties.putAll(serviceRegistry.getService(ConfigurationService.class).getSettings()); + properties.put(HibernateAvailableSettings.DIALECT, dialectType.getName()); + + BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder().build(); + StandardServiceRegistryBuilder ssrBuilder = new StandardServiceRegistryBuilder(bsr); + ssrBuilder.applySettings(properties); + StandardServiceRegistry registry = ssrBuilder.build(); + + try { + new SchemaExport() + .setOutputFile(sqlScriptFile.toFile().getAbsolutePath()) + .setDelimiter(";") + .execute(EnumSet.of(TargetType.SCRIPT), action, hibernateMetadata, registry); + } finally { + StandardServiceRegistryBuilder.destroy(registry); + } + } + } diff --git a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/CreateSchemaAction.java b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/CreateSchemaAction.java index f5173ac..299e6af 100644 --- a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/CreateSchemaAction.java +++ b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/CreateSchemaAction.java @@ -22,19 +22,15 @@ package org.nuiton.topia.service.sql.batch.actions; * #L% */ -import com.google.common.collect.ImmutableSet; import org.hibernate.HibernateException; -import org.hibernate.cfg.Configuration; -import org.hibernate.cfg.Environment; import org.hibernate.dialect.Dialect; import org.hibernate.tool.hbm2ddl.SchemaExport; -import org.hibernate.tool.hbm2ddl.Target; import org.nuiton.topia.persistence.TopiaException; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Properties; /** * Created on 01/01/16. @@ -56,28 +52,16 @@ public class CreateSchemaAction extends AbstractSchemaAction<CreateSchemaRequest Path sqlScriptFile = temporaryDirectory.resolve("replicateSchema_" + System.nanoTime() + ".sql"); - Configuration hibernateConfiguration = getSourcePersistenceContext().getHibernateSupport().getHibernateConfiguration(); - - Properties properties = new Properties(); - - properties.put(Environment.DIALECT, dialectType.getName()); - - new SchemaExport(hibernateConfiguration, properties) - .setOutputFile(sqlScriptFile.toFile().getAbsolutePath()) - .setDelimiter(";") - .execute(Target.NONE, SchemaExport.Type.CREATE); + generateSqlInFile(dialectType, sqlScriptFile, SchemaExport.Action.CREATE); String sqlStatements = ""; if (request.isAddSchema()) { - - ImmutableSet<String> schemaNames = getSchemaNames(); - for (String schemaName : schemaNames) { + for (String schemaName : getSchemaNames()) { sqlStatements += String.format(CREATE_SCHEMA_STATEMENT, schemaName); } - } - sqlStatements += new String(Files.readAllBytes(sqlScriptFile)); + sqlStatements += new String(Files.readAllBytes(sqlScriptFile), StandardCharsets.UTF_8); Files.delete(sqlScriptFile); return sqlStatements; diff --git a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DropSchemaAction.java b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DropSchemaAction.java index d04582e..f900ccb 100644 --- a/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DropSchemaAction.java +++ b/topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DropSchemaAction.java @@ -22,19 +22,15 @@ package org.nuiton.topia.service.sql.batch.actions; * #L% */ -import com.google.common.collect.ImmutableSet; -import org.apache.commons.io.output.WriterOutputStream; import org.hibernate.HibernateException; -import org.hibernate.cfg.Configuration; -import org.hibernate.cfg.Environment; import org.hibernate.dialect.Dialect; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.nuiton.topia.persistence.TopiaException; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Properties; /** * Created on 01/01/16. @@ -55,39 +51,25 @@ public class DropSchemaAction extends AbstractSchemaAction<DropSchemaRequest> { try { - Path sqlScriptFile = temporaryDirectory.resolve("replicateSchema_" + System.nanoTime() + ".sql"); + Path sqlScriptFile = temporaryDirectory.resolve("dropSchema_" + System.nanoTime() + ".sql"); - Configuration hibernateConfiguration = getSourcePersistenceContext().getHibernateSupport().getHibernateConfiguration(); + generateSqlInFile(dialectType, sqlScriptFile, SchemaExport.Action.DROP); - Properties properties = new Properties(); - - properties.put(Environment.DIALECT, dialectType.getName()); - - new SchemaExport(hibernateConfiguration, properties) - .setOutputFile(sqlScriptFile.toFile().getAbsolutePath()) - .setDelimiter(";") - .drop(false, false); - - WriterOutputStream out = new WriterOutputStream(writer); - Files.copy(sqlScriptFile, out); - out.flush(); - - String sqlContent = new String(Files.readAllBytes(sqlScriptFile)); + String sqlStatements = new String(Files.readAllBytes(sqlScriptFile), StandardCharsets.UTF_8); Files.delete(sqlScriptFile); if (request.isDropSchema()) { - - ImmutableSet<String> schemaNames = getSchemaNames(); - for (String schemaName : schemaNames) { - sqlContent += String.format(DROP_SCHEMA_STATEMENT, schemaName); + for (String schemaName : getSchemaNames()) { + sqlStatements += String.format(DROP_SCHEMA_STATEMENT, schemaName); } } - return sqlContent; + return sqlStatements; } catch (HibernateException eee) { - throw new TopiaException(String.format("Could not create schema for reason: %s", eee.getMessage()), eee); + throw new TopiaException(String.format("Could not drop schema for reason: %s", eee.getMessage()), eee); } } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm