05/19: Passer par un ficher pour charger un script h2
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 3a88afbfc91fb6150c083a225ba4f30f1cde0a52 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Jan 9 11:39:22 2016 +0100 Passer par un ficher pour charger un script h2 --- .../observe/ObserveTopiaApplicationContext.java | 57 ++++++++++++++++------ 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java index 8484845..2a9ee57 100644 --- a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java +++ b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java @@ -32,18 +32,22 @@ import org.hibernate.HibernateException; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.topia.persistence.jdbc.JdbcH2Helper; import org.nuiton.topia.persistence.jdbc.JdbcHelper; import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity; import org.nuiton.topia.service.sql.batch.TopiaSqlBatchService; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTablesFactory; import org.nuiton.util.GZUtil; +import org.nuiton.util.StringUtil; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringWriter; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.LinkedHashSet; import java.util.Objects; import java.util.Set; @@ -133,30 +137,53 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat public void executeSqlStatements(byte... content) throws IOException { + if (getConfiguration().isH2Configuration()) { - boolean gzip; - try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content)) { - gzip = GZUtil.isGzipStream(byteArrayInputStream); - } - try (StringWriter writer = new StringWriter()) { - if (gzip) { - try (InputStreamReader inputSream = new InputStreamReader(new BufferedInputStream(new GZIPInputStream(new ByteArrayInputStream(content))))) { - IOUtils.copyLarge(inputSream, writer); - } - } else { - try (InputStreamReader inputSream = new InputStreamReader(new BufferedInputStream(new ByteArrayInputStream(content)))) { - IOUtils.copyLarge(inputSream, writer); - } + Path tempFile = Files.createTempFile("observeRestoreH2", ".sql"); + log.info(String.format("Restore script size: %s to h2 from file : %s", StringUtil.convertMemory(content.length), tempFile.toString())); + try { + Files.write(tempFile, content); + JdbcH2Helper jdbcH2Helper = new JdbcH2Helper(configuration); + jdbcH2Helper.restore(tempFile.toFile()); + } finally { + Files.delete(tempFile); + } + + } else { + + boolean gzip; + try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content)) { + gzip = GZUtil.isGzipStream(byteArrayInputStream); } - String sqlScript = writer.toString(); + String sqlScript; + + try (StringWriter writer = new StringWriter()) { + if (gzip) { + + try (InputStreamReader inputSream = new InputStreamReader(new BufferedInputStream(new GZIPInputStream(new ByteArrayInputStream(content))))) { + IOUtils.copy(inputSream, writer); + } + sqlScript = writer.toString(); + log.info(String.format("Gunzip script %s to %s", StringUtil.convertMemory(content.length), StringUtil.convertMemory(sqlScript.length()))); + + } else { + + try (InputStreamReader inputSream = new InputStreamReader(new BufferedInputStream(new ByteArrayInputStream(content)))) { + IOUtils.copy(inputSream, writer); + } + sqlScript = writer.toString(); + log.info(String.format("Load script (size: %s)", StringUtil.convertMemory(sqlScript.length()))); + } + + } try (ObserveTopiaPersistenceContext persistenceContext = newPersistenceContext()) { + persistenceContext.getSqlSupport().executeSql(sqlScript); persistenceContext.commit(); } - } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm