This is an automated email from the git hooks/post-receive script. New change to branch feature/7470_mise_en_place_de_la_date_de_derniere_mise_a_jour in repository tutti. See http://git.codelutin.com/tutti.git from ca8daea Debut de correction de la javadoc new 49444e3 Ajout de la réplication au niveau du topia application context + suppression autoMigrate configuration new c361698 Ajout d'un nouveau service pour produire les script sql The 2 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 c36169804dabc1098efa1fa1d531fda9e8649f3d Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Dec 31 19:38:23 2015 +0100 Ajout d'un nouveau service pour produire les script sql commit 49444e38a2741dee5ab6e59af942cf9566f8fb0d Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Dec 31 19:36:45 2015 +0100 Ajout de la réplication au niveau du topia application context + suppression autoMigrate configuration Summary of changes: .../observe/ObserveTopiaApplicationContext.java | 111 ++++++++++++++++++--- .../observe/ObserveTopiaConfigurationFactory.java | 20 +--- .../fr/ird/observe/entities/SqlDatabaseType.java | 26 +++++ .../ObserveTopiaApplicationContextTest.java | 1 - .../services/service/SqlScriptProducerRequest.java | 70 +++++++++++++ .../services/service/SqlScriptProducerService.java | 13 +++ .../ObserveTopiaApplicationContextFactory.java | 3 - .../services/service/DataSourceServiceTopia.java | 6 +- .../service/SqlScriptProducerServiceTopia.java | 82 +++++++++++++++ .../services/ApplicationContextResource.java | 4 + .../service/SqlScriptProducerServiceTopiaTest.java | 81 +++++++++++++++ .../java/fr/ird/observe/test/ObserveFixtures.java | 13 +++ 12 files changed, 391 insertions(+), 39 deletions(-) create mode 100644 observe-entities/src/main/java/fr/ird/observe/entities/SqlDatabaseType.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerService.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopia.java create mode 100644 observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java -- 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 feature/7470_mise_en_place_de_la_date_de_derniere_mise_a_jour in repository tutti. See http://git.codelutin.com/tutti.git commit 49444e38a2741dee5ab6e59af942cf9566f8fb0d Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Dec 31 19:36:45 2015 +0100 Ajout de la réplication au niveau du topia application context + suppression autoMigrate configuration --- .../observe/ObserveTopiaApplicationContext.java | 111 ++++++++++++++++++--- .../observe/ObserveTopiaConfigurationFactory.java | 20 +--- .../fr/ird/observe/entities/SqlDatabaseType.java | 26 +++++ .../ObserveTopiaApplicationContextTest.java | 1 - .../ObserveTopiaApplicationContextFactory.java | 3 - .../services/service/DataSourceServiceTopia.java | 6 +- 6 files changed, 128 insertions(+), 39 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 38862ab..5e4e31e 100644 --- a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java +++ b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaApplicationContext.java @@ -22,11 +22,16 @@ package fr.ird.observe; * #L% */ +import fr.ird.observe.entities.Entities; +import fr.ird.observe.entities.SqlDatabaseType; import fr.ird.observe.entities.migration.ObserveMigrationEngine; +import fr.ird.observe.entities.replication.ObserveReplicationTables; +import org.apache.commons.io.output.WriterOutputStream; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.cfg.Configuration; +import org.hibernate.cfg.Environment; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.jdbc.JdbcH2Helper; @@ -40,15 +45,19 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.Writer; import java.nio.file.Files; import java.nio.file.Path; import java.util.Objects; +import java.util.Properties; import java.util.UUID; import java.util.zip.GZIPInputStream; public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicationContext { - /** Logger. */ + /** + * Logger. + */ private static final Log log = LogFactory.getLog(ObserveTopiaApplicationContext.class); public static final String MIGRATION_SERVICE_NAME = "migration"; @@ -59,12 +68,10 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat public static final String DB_VERSION = "db.version"; - public static final String AUTO_MIGRATE = "auto.migrate"; - - private static final String CREATE_SCHEMA_SCRIPT = "CREATE SCHEMA OBSERVE_COMMON; CREATE SCHEMA OBSERVE_LONGLINE; CREATE SCHEMA OBSERVE_SEINE;"; - - //FIXME Voir comment remplir ça (probablement pour les tests ?) - protected boolean autoMigrate; + private static final String CREATE_SCHEMA_SCRIPT + = "CREATE SCHEMA OBSERVE_COMMON IF NOT EXISTS;\n" + + "CREATE SCHEMA OBSERVE_LONGLINE IF NOT EXISTS;\n" + + "CREATE SCHEMA OBSERVE_SEINE IF NOT EXISTS;\n"; /** * Mise à {@code true} quand au moins une connection a été effectuée. @@ -83,14 +90,6 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat return (ObserveTopiaConfiguration) super.getConfiguration(); } - public boolean isAutoMigrate() { - return autoMigrate; - } - - public void setAutoMigrate(boolean autoMigrate) { - this.autoMigrate = autoMigrate; - } - public boolean isOpen() { return isOpened() && open; } @@ -207,4 +206,86 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat } } + + public void replicateAllTrips(Writer writer) { + + TopiaSqlReplicationService sqlReplicationService = getSqlReplicationService(); + sqlReplicationService + .newReplicatetoSqlActionBuilder(writer) + .setTables(ObserveReplicationTables.getTripSeineTables(false)) + .build().run(); + + sqlReplicationService + .newReplicatetoSqlActionBuilder(writer) + .setTables(ObserveReplicationTables.getTripLonglineTables(false)) + .build().run(); + + } + + public void replicateTrips(Writer writer, Iterable<String> tripIds) { + + TopiaSqlReplicationService sqlReplicationService = getSqlReplicationService(); + + for (String tripId : tripIds) { + + if (Entities.isSeineId(tripId)) { + + sqlReplicationService + .newReplicatetoSqlActionBuilder(writer) + .setTables(ObserveReplicationTables.getTripSeineTables(true)) + .setArg(tripId) + .build().run(); + } else { + + sqlReplicationService + .newReplicatetoSqlActionBuilder(writer) + .setTables(ObserveReplicationTables.getTripLonglineTables(true)) + .setArg(tripId) + .build().run(); + + } + } + + } + + public void replicateReferentials(Writer writer) { + + TopiaSqlReplicationService sqlReplicationService = getSqlReplicationService(); + sqlReplicationService + .newReplicatetoSqlActionBuilder(writer) + .setTables(ObserveReplicationTables.getReferentialTables()) + .build().run(); + + } + + public void replicateSchema(SqlDatabaseType databaseType, File temporaryDirectory, Writer writer) throws IOException { + + writer.append(CREATE_SCHEMA_SCRIPT); + + try { + + File sqlScriptFile = new File(temporaryDirectory, "replicateSchema_" + System.nanoTime() + ".sql"); + + Configuration hibernateConfiguration = getHibernateProvider().getHibernateConfiguration(); + + Properties properties = new Properties(); + + properties.put(Environment.DIALECT, databaseType.getDialectType().getName()); + + new SchemaExport(hibernateConfiguration, properties) + .setOutputFile(sqlScriptFile.getAbsolutePath()) + .setDelimiter(";") + .create(false, false); + + WriterOutputStream out = new WriterOutputStream(writer); + Files.copy(sqlScriptFile.toPath(), out); + out.flush(); + Files.delete(sqlScriptFile.toPath()); + + } catch (HibernateException eee) { + throw new TopiaException(String.format("Could not create schema for reason: %s", eee.getMessage()), eee); + } + + } + } diff --git a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java index 498acb2..3bc774d 100644 --- a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java +++ b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaConfigurationFactory.java @@ -87,7 +87,6 @@ public class ObserveTopiaConfigurationFactory { String username, String password, boolean initSchema, - boolean autoMigrate, boolean showMigrationSql, boolean showMigrationProgression) { @@ -95,8 +94,7 @@ public class ObserveTopiaConfigurationFactory { ObserveTopiaConfiguration topiaConfiguration = createTopiaConfiguration(jdbcConfiguration, initSchema, - autoMigrate, - showMigrationSql, + showMigrationSql, showMigrationProgression, false); @@ -112,7 +110,6 @@ public class ObserveTopiaConfigurationFactory { String username, String password, boolean initSchema, - boolean autoMigrate, boolean showMigrationSql, boolean showMigrationProgression) { @@ -123,8 +120,7 @@ public class ObserveTopiaConfigurationFactory { ObserveTopiaConfiguration topiaConfiguration = createTopiaConfiguration(jdbcConfiguration, initSchema, - autoMigrate, - showMigrationSql, + showMigrationSql, showMigrationProgression, true); @@ -137,7 +133,6 @@ public class ObserveTopiaConfigurationFactory { protected static ObserveTopiaConfiguration createTopiaConfiguration(JdbcConfiguration jdbcConfiguration, boolean initSchema, - boolean autoMigrate, boolean showMigrationSql, boolean showMigrationProgression, boolean h2Configuration) { @@ -154,19 +149,12 @@ public class ObserveTopiaConfigurationFactory { ImmutableMap<String, String> migrationServiceConfiguration = ImmutableMap.of( ObserveMigrationEngine.MIGRATION_CALLBACK, H2DataSourceMigration.class.getName(), ObserveMigrationEngine.MIGRATION_SHOW_PROGRESSION, String.valueOf(showMigrationProgression), - ObserveMigrationEngine.MIGRATION_SHOW_SQL, String.valueOf(showMigrationSql), - ObserveTopiaApplicationContext.AUTO_MIGRATE, String.valueOf(autoMigrate) + ObserveMigrationEngine.MIGRATION_SHOW_SQL, String.valueOf(showMigrationSql) ); topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.MIGRATION_SERVICE_NAME, ObserveMigrationEngine.class, migrationServiceConfiguration); topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.REPLICATION_SERVICE_NAME, TopiaReplicationServiceImpl.class); topiaConfiguration.addDeclaredService(ObserveTopiaApplicationContext.SQL_REPLICATION_SERVICE_NAME, TopiaSqlReplicationServiceImpl .class); -// if (h2Configuration) { -// //FIXME J'ai mis ça mais sans conviction car y'a d'autres pb à régler et c3p0 n'est peut-être pas la cause -// // On ne veut pas utiliser c3pO dans ce cas -// topiaConfiguration.setHibernateExtraConfiguration( -// ImmutableMap.of("hibernate.connection.provider_class", "org.nuiton.topia.persistence.internal.TopiaConnectionProvider") -// ); -// } + return topiaConfiguration; } diff --git a/observe-entities/src/main/java/fr/ird/observe/entities/SqlDatabaseType.java b/observe-entities/src/main/java/fr/ird/observe/entities/SqlDatabaseType.java new file mode 100644 index 0000000..bf03604 --- /dev/null +++ b/observe-entities/src/main/java/fr/ird/observe/entities/SqlDatabaseType.java @@ -0,0 +1,26 @@ +package fr.ird.observe.entities; + +import org.hibernate.dialect.Dialect; +import org.hibernate.dialect.H2Dialect; +import org.hibernate.dialect.PostgreSQL9Dialect; + +/** + * Created on 31/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public enum SqlDatabaseType { + + h2(H2Dialect.class), + postgres(PostgreSQL9Dialect.class); + + private final Class<? extends Dialect> dialectType; + + SqlDatabaseType(Class<? extends Dialect> dialectType) { + this.dialectType = dialectType; + } + + public Class<? extends Dialect> getDialectType() { + return dialectType; + } +} diff --git a/observe-entities/src/test/java/fr/ird/observe/ObserveTopiaApplicationContextTest.java b/observe-entities/src/test/java/fr/ird/observe/ObserveTopiaApplicationContextTest.java index abcef39..cef34aa 100644 --- a/observe-entities/src/test/java/fr/ird/observe/ObserveTopiaApplicationContextTest.java +++ b/observe-entities/src/test/java/fr/ird/observe/ObserveTopiaApplicationContextTest.java @@ -75,7 +75,6 @@ public class ObserveTopiaApplicationContextTest { String.valueOf(TestHelper.TEST_H2_PASSWORD), true, true, - true, true ); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java index 124a7d3..43631a4 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveTopiaApplicationContextFactory.java @@ -130,7 +130,6 @@ public class ObserveTopiaApplicationContextFactory { configuration.getUsername(), String.valueOf(configuration.getPassword()), initSchema, - configuration.isAutoMigrate(), configuration.isShowMigrationSql(), configuration.isShowMigrationProgression() ); @@ -159,7 +158,6 @@ public class ObserveTopiaApplicationContextFactory { configuration.getUsername(), String.valueOf(configuration.getPassword()), initSchema, - configuration.isAutoMigrate(), configuration.isShowMigrationSql(), configuration.isShowMigrationProgression() ); @@ -179,7 +177,6 @@ public class ObserveTopiaApplicationContextFactory { public MyObserveTopiaApplicationContext(ObserveTopiaConfiguration topiaConfiguration, ObserveDataSourceConfigurationTopiaSupport observeDataSourceConfiguration) { super(topiaConfiguration); this.observeDataSourceConfiguration = observeDataSourceConfiguration; - setAutoMigrate(observeDataSourceConfiguration.isAutoMigrate()); TOPIA_APPLICATION_CONTEXT_CACHE.put(observeDataSourceConfiguration, this); } 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 9150146..2577552 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 @@ -102,8 +102,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS h2DataSourceConfiguration.getUsername(), new String(h2DataSourceConfiguration.getPassword()), false, - false, - false, + false, false); @@ -128,8 +127,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS pgDataSourceConfiguration.getUsername(), new String(pgDataSourceConfiguration.getPassword()), false, - false, - false, + false, false); try { -- 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 feature/7470_mise_en_place_de_la_date_de_derniere_mise_a_jour in repository tutti. See http://git.codelutin.com/tutti.git commit c36169804dabc1098efa1fa1d531fda9e8649f3d Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Dec 31 19:38:23 2015 +0100 Ajout d'un nouveau service pour produire les script sql --- .../services/service/SqlScriptProducerRequest.java | 70 ++++++++++++++++++ .../services/service/SqlScriptProducerService.java | 13 ++++ .../service/SqlScriptProducerServiceTopia.java | 82 ++++++++++++++++++++++ .../services/ApplicationContextResource.java | 4 ++ .../service/SqlScriptProducerServiceTopiaTest.java | 81 +++++++++++++++++++++ .../java/fr/ird/observe/test/ObserveFixtures.java | 13 ++++ 6 files changed, 263 insertions(+) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java new file mode 100644 index 0000000..20c2add --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java @@ -0,0 +1,70 @@ +package fr.ird.observe.services.service; + +import com.google.common.collect.ImmutableSet; + +/** + * Created on 31/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class SqlScriptProducerRequest { + + protected final boolean h2; + protected boolean addSchema; + protected boolean addReferential; + protected boolean addData; + protected ImmutableSet<String> dataIds; + + public static SqlScriptProducerRequest forH2() { + return new SqlScriptProducerRequest(true); + } + + public static SqlScriptProducerRequest forPostgres() { + return new SqlScriptProducerRequest(false); + } + + public SqlScriptProducerRequest addSchema() { + addSchema = true; + return this; + } + + public SqlScriptProducerRequest addReferential() { + addReferential = true; + return this; + } + + public SqlScriptProducerRequest addAllData() { + addData = true; + return this; + } + + public SqlScriptProducerRequest addDataIds(ImmutableSet<String> dataIds) { + addData = true; + this.dataIds = dataIds; + return this; + } + + public boolean isAddSchema() { + return addSchema; + } + + public boolean isAddReferential() { + return addReferential; + } + + protected SqlScriptProducerRequest(boolean h2) { + this.h2 = h2; + } + + public boolean isAddData() { + return addData; + } + + public ImmutableSet<String> getDataIds() { + return dataIds; + } + + public boolean isH2() { + return h2; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerService.java new file mode 100644 index 0000000..cf37249 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerService.java @@ -0,0 +1,13 @@ +package fr.ird.observe.services.service; + +import fr.ird.observe.services.ObserveService; + +/** + * Created on 31/12/15. + * @author Tony Chemit - chemit@codelutin.com + */ +public interface SqlScriptProducerService extends ObserveService { + + byte[] produceSqlScript(SqlScriptProducerRequest request); + +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopia.java new file mode 100644 index 0000000..ac8c592 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopia.java @@ -0,0 +1,82 @@ +package fr.ird.observe.services.service; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.ObserveTopiaApplicationContext; +import fr.ird.observe.entities.SqlDatabaseType; +import fr.ird.observe.services.ObserveServiceTopia; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.util.zip.GZIPOutputStream; + +/** + * Created on 31/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implements SqlScriptProducerService { + + @Override + public byte[] produceSqlScript(SqlScriptProducerRequest request) { + + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + + try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out))) { + + if (request.isAddSchema()) { + addSchema(request.isH2(), writer); + } + + if (request.isAddReferential()) { + addReferentialSqlScript(writer); + } + + if (request.isAddData()) { + + ImmutableSet<String> dataIds = request.getDataIds(); + if (dataIds == null) { + addAllTrips(writer); + } else { + addTrips(writer, dataIds); + } + + } + + } + + return out.toByteArray(); + + } catch (IOException e) { + throw new RuntimeException("Could not produce sql script", e); + } + + } + + public void addSchema(boolean h2, Writer writer) { + + try { + getObserveTopiaApplicationContext().replicateSchema(h2 ? SqlDatabaseType.h2 : SqlDatabaseType.postgres, serviceContext.getTemporaryDirectoryRoot(), writer); + } catch (IOException e) { + throw new RuntimeException("Could not add schema sql script", e); + } + } + + public void addReferentialSqlScript(Writer writer) { + getObserveTopiaApplicationContext().replicateReferentials(writer); + } + + public void addAllTrips(Writer writer) { + getObserveTopiaApplicationContext().replicateAllTrips(writer); + } + + public void addTrips(Writer writer, ImmutableSet<String> tripIds) { + getObserveTopiaApplicationContext().replicateTrips(writer, tripIds); + } + + protected ObserveTopiaApplicationContext getObserveTopiaApplicationContext() { + return serviceContext.getTopiaApplicationContext(); + } + +} diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java b/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java index a44a1b0..c4657f4 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/ApplicationContextResource.java @@ -263,6 +263,10 @@ public class ApplicationContextResource implements TestRule { return dbVersion; } + public File createTemporaryFile(String suffix) { + return temporaryDirectoryRoot.resolve(System.nanoTime()+suffix).toFile(); + } + /** * Created on 26/12/15. * diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java new file mode 100644 index 0000000..7989941 --- /dev/null +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/SqlScriptProducerServiceTopiaTest.java @@ -0,0 +1,81 @@ +package fr.ird.observe.services.service; + +import fr.ird.observe.test.DatabaseName; +import fr.ird.observe.test.ObserveFixtures; +import fr.ird.observe.test.spi.DatabaseNameConfiguration; +import org.apache.commons.io.IOUtils; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.util.StringUtil; +import org.nuiton.util.TimeLog; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * Created on 31/12/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest { + + private static final TimeLog timeLog = new TimeLog(SqlScriptProducerServiceTopiaTest.class, 10, 1000); + + protected SqlScriptProducerService service; + + @Before + public void setUp() throws Exception { + service = dataSourceResource.newService(SqlScriptProducerService.class); + } + + @DatabaseNameConfiguration(DatabaseName.empty) + @Test + public void testProduceSchema() throws Exception { + + produce(SqlScriptProducerRequest.forH2().addSchema()); + produce(SqlScriptProducerRequest.forPostgres().addSchema()); + + } + + @DatabaseNameConfiguration(DatabaseName.referentiel) + @Test + public void testProduceReferential() throws Exception { + + produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential()); + + } + + @DatabaseNameConfiguration(DatabaseName.dataForTestSeine) + @Test + public void testProduceTripSeine() throws Exception { + + produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData()); + produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential().addDataIds(ObserveFixtures.TRIP_SEINE_IDS)); + + } + + @DatabaseNameConfiguration(DatabaseName.dataForTestLongline) + @Test + public void testProduceTripLongline() throws Exception { + + produce(SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData()); + produce(SqlScriptProducerRequest.forH2().addSchema().addReferential().addDataIds(ObserveFixtures.TRIP_LONGLINE_IDS)); + + } + + protected void produce(SqlScriptProducerRequest request) throws IOException { + + long time = TimeLog.getTime(); + + File outputFile = applicationContextResource.createTemporaryFile("-out.sql.gz"); + + byte[] gzContent = service.produceSqlScript(request); + + try (FileOutputStream fileOutputStream = new FileOutputStream(outputFile)) { + IOUtils.write(gzContent, fileOutputStream); + } + + timeLog.log(time, "Output file - " + StringUtil.convertMemory(outputFile.length()) + "\n" + outputFile); + } +} \ No newline at end of file diff --git a/observe-test-data/src/main/java/fr/ird/observe/test/ObserveFixtures.java b/observe-test-data/src/main/java/fr/ird/observe/test/ObserveFixtures.java index a15d653..0f84698 100644 --- a/observe-test-data/src/main/java/fr/ird/observe/test/ObserveFixtures.java +++ b/observe-test-data/src/main/java/fr/ird/observe/test/ObserveFixtures.java @@ -1,6 +1,7 @@ package fr.ird.observe.test; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import org.apache.commons.lang3.mutable.MutableLong; import java.util.Map; @@ -21,6 +22,12 @@ public class ObserveFixtures { public static final String TRIP_SEINE_ID_3 = "fr.ird.observe.entities.seine.TripSeine#1360156698296#0.6097793743126777"; + public static final ImmutableSet<String> TRIP_SEINE_IDS = ImmutableSet.of( + TRIP_SEINE_ID_1, + TRIP_SEINE_ID_2, + TRIP_SEINE_ID_3 + ); + public static final String PROGRAM_ID = "fr.ird.observe.entities.referentiel.Program#1239832686262#0.31033946454061234"; public static final String TRIP_LONGLINE_ID_1 = "fr.ird.observe.entities.longline.TripLongline#1429538088091#0.763886003987864"; @@ -29,6 +36,12 @@ public class ObserveFixtures { public static final String TRIP_LONGLINE_ID_3 = "fr.ird.observe.entities.longline.TripLongline#1429537115030#0.493692863034084"; + public static final ImmutableSet<String> TRIP_LONGLINE_IDS = ImmutableSet.of( + TRIP_LONGLINE_ID_1, + TRIP_LONGLINE_ID_2, + TRIP_LONGLINE_ID_3 + ); + public static final String SET_LONGLINE_ID_1 = "fr.ird.observe.entities.longline.SetLongline#1429538714446#0.0876020351424813"; public static final ImmutableMap<String, Long> REFERENTIAL_COMMON_TABLES_COUNT = ImmutableMap -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm