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 628cccdc4c974b507977ca9966730e1078580dcc Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 10:00:59 2016 +0200 Utilisation d'un paquetage commun pour la génération des requetes sql dans les deux synchro référentiel --- ...nalReferentialSynchronizeLocalServiceTopia.java | 39 +++------------------- .../DeleteSqlStatementGenerator.java | 5 +-- .../DesactivateSqlStatementGenerator.java} | 29 +++++++++------- .../InsertSqlStatementGenerator.java | 2 +- .../ReplaceSqlStatementGenerator.java | 5 +-- .../UpdateSqlStatementGenerator.java | 2 +- 6 files changed, 30 insertions(+), 52 deletions(-) diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java index 3de581f..48f62a4 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java @@ -30,6 +30,11 @@ import fr.ird.observe.services.binder.BinderEngine; import fr.ird.observe.services.binder.referential.ReferentialBinderSupport; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.service.actions.synchro.referential.sql.ApplySqlRequestWork; +import fr.ird.observe.services.service.actions.synchro.referential.sql.DeleteSqlStatementGenerator; +import fr.ird.observe.services.service.actions.synchro.referential.sql.InsertSqlStatementGenerator; +import fr.ird.observe.services.service.actions.synchro.referential.sql.ReplaceSqlStatementGenerator; +import fr.ird.observe.services.service.actions.synchro.referential.sql.UpdateSqlStatementGenerator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaDao; @@ -38,9 +43,6 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity; import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; import org.nuiton.topia.persistence.support.TopiaSqlWork; -import java.sql.Connection; -import java.sql.SQLException; -import java.sql.Statement; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -214,35 +216,4 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser } - private static class ApplySqlRequestWork implements TopiaSqlWork { - - private static final int BATCH_SIZE = 100; - - private final Set<String> sqlRequests; - - ApplySqlRequestWork(Set<String> sqlRequests) { - this.sqlRequests = sqlRequests; - } - - @Override - public void execute(Connection connection) throws SQLException { - - Statement statement = connection.createStatement(); - - int count = 0; - for (String sqlRequest : sqlRequests) { - statement.addBatch(sqlRequest); - if ((count % BATCH_SIZE) == 0) { - flush(statement); - } - } - flush(statement); - - } - - private void flush(Statement statement) throws SQLException { - statement.executeBatch(); - statement.clearBatch(); - } - } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/DeleteSqlStatementGenerator.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/DeleteSqlStatementGenerator.java similarity index 93% copy from observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/DeleteSqlStatementGenerator.java copy to observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/DeleteSqlStatementGenerator.java index f589084..a61a3fc 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/DeleteSqlStatementGenerator.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/DeleteSqlStatementGenerator.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; +package fr.ird.observe.services.service.actions.synchro.referential.sql; /*- * #%L @@ -22,6 +22,7 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; * #L% */ +import fr.ird.observe.services.dto.referential.ReferentialDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity; @@ -33,7 +34,7 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity; * * @author Tony Chemit - chemit@codelutin.com */ -public class DeleteSqlStatementGenerator { +public class DeleteSqlStatementGenerator<R extends ReferentialDto> { /** Logger. */ private static final Log log = LogFactory.getLog(DeleteSqlStatementGenerator.class); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/DeleteSqlStatementGenerator.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/DesactivateSqlStatementGenerator.java similarity index 60% rename from observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/DeleteSqlStatementGenerator.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/DesactivateSqlStatementGenerator.java index f589084..13d264e 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/DeleteSqlStatementGenerator.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/DesactivateSqlStatementGenerator.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; +package fr.ird.observe.services.service.actions.synchro.referential.sql; /*- * #%L @@ -22,42 +22,47 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; * #L% */ +import fr.ird.observe.services.dto.referential.ReferentialDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity; /** - * Pour générer une requète sql de suppression à partir d'un référentiel donné. - * - * Created on 29/06/16. + * Pour générer une requète sql de désactivation d'un référentiel donné. + * Created on 04/08/14. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ -public class DeleteSqlStatementGenerator { +public class DesactivateSqlStatementGenerator<R extends ReferentialDto> { /** Logger. */ - private static final Log log = LogFactory.getLog(DeleteSqlStatementGenerator.class); + private static final Log log = LogFactory.getLog(DesactivateSqlStatementGenerator.class); - private static final String DELETE_STATEMENT = "DELETE FROM %s.%s WHERE topiaId = '%s';\n"; + private static final String UPDATE_STATEMENT = "UPDATE %s.%s SET enabled = false, topiaVersion = topiaVersion + 1 WHERE topiaId ='%s';\n"; private final String schemaName; private final String tableName; - public DeleteSqlStatementGenerator(TopiaMetadataEntity metadataEntity) { + public DesactivateSqlStatementGenerator(TopiaMetadataEntity metadataEntity) { this.schemaName = metadataEntity.getDbSchemaName(); this.tableName = metadataEntity.getDbTableName(); } - public String generateSql(String id) { + public String generateSql(String sourceId) { + + StringBuilder result = new StringBuilder(); - String result = String.format(DELETE_STATEMENT, schemaName, tableName, id); + String sql = String.format(UPDATE_STATEMENT, schemaName, tableName, sourceId); + result.append(sql); if (log.isDebugEnabled()) { - log.debug("sql: " + result); + log.debug("sql: " + sql); } - return result; + return result.toString(); } + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/InsertSqlStatementGenerator.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/InsertSqlStatementGenerator.java similarity index 99% rename from observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/InsertSqlStatementGenerator.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/InsertSqlStatementGenerator.java index d8643c8..74e53cd 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/InsertSqlStatementGenerator.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/InsertSqlStatementGenerator.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; +package fr.ird.observe.services.service.actions.synchro.referential.sql; /*- * #%L diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/ReplaceSqlStatementGenerator.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/ReplaceSqlStatementGenerator.java similarity index 97% rename from observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/ReplaceSqlStatementGenerator.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/ReplaceSqlStatementGenerator.java index 57973a2..3ac9bf9 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/ReplaceSqlStatementGenerator.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/ReplaceSqlStatementGenerator.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; +package fr.ird.observe.services.service.actions.synchro.referential.sql; /*- * #%L @@ -22,6 +22,7 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; * #L% */ +import fr.ird.observe.services.dto.referential.ReferentialDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity; @@ -38,7 +39,7 @@ import java.util.stream.Collectors; * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public class ReplaceSqlStatementGenerator { +public class ReplaceSqlStatementGenerator<R extends ReferentialDto> { /** Logger. */ private static final Log log = LogFactory.getLog(ReplaceSqlStatementGenerator.class); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UpdateSqlStatementGenerator.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/UpdateSqlStatementGenerator.java similarity index 99% rename from observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UpdateSqlStatementGenerator.java rename to observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/UpdateSqlStatementGenerator.java index b2c5089..3fbf6d7 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UpdateSqlStatementGenerator.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/UpdateSqlStatementGenerator.java @@ -1,4 +1,4 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; +package fr.ird.observe.services.service.actions.synchro.referential.sql; /*- * #%L -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.