This is an automated email from the git hooks/post-receive script. New commit to branch feature/3860_introduce_topiasqlbatchsupport in repository topia. See http://git.nuiton.org/topia.git commit 3be1a247a86035d6edd9c469e7304b14eb7fb1b4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 5 20:10:16 2016 +0100 Add a configuration object for Topia Sql batch service and use it --- .../topia/service/sql/batch/SqlRequests.java | 2 +- .../service/sql/batch/TopiaSqlBatchService.java | 2 + .../batch/TopiaSqlBatchServiceConfiguration.java | 34 +++++++++++++++++ .../sql/batch/TopiaSqlBatchServiceImpl.java | 43 ++++++++++++++++++++-- .../sql/batch/actions/AbstractTablesAction.java | 2 +- .../sql/batch/actions/AbstractTablesRequest.java | 35 +++++++++++++----- .../sql/batch/actions/DeleteTablesAction.java | 4 +- .../sql/batch/actions/ReplicateTablesAction.java | 4 +- .../sql/batch/actions/UpdateTablesAction.java | 4 +- 9 files changed, 109 insertions(+), 21 deletions(-) diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/SqlRequests.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/SqlRequests.java index f6f3286..b67afe4 100644 --- a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/SqlRequests.java +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/SqlRequests.java @@ -386,7 +386,7 @@ public class SqlRequests implements Iterable<AbstractSqlRequest> { } public B setFetchSize(int fetchSize) { - delegate.setFetchSize(fetchSize); + delegate.setReadFetchSize(fetchSize); return returnThis(); } diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchService.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchService.java index 3f895ab..3e97c14 100644 --- a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchService.java +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchService.java @@ -37,6 +37,8 @@ import org.nuiton.topia.service.sql.batch.actions.UpdateTablesRequest; */ public interface TopiaSqlBatchService extends TopiaService { + TopiaSqlBatchServiceConfiguration getConfiguration(); + SqlRequests.Builder requestBuilder(); CreateSchemaRequest.Builder createSchemaRequestBuilder(); diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceConfiguration.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceConfiguration.java new file mode 100644 index 0000000..1a1f7fa --- /dev/null +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceConfiguration.java @@ -0,0 +1,34 @@ +package org.nuiton.topia.service.sql.batch; + +/** + * Created on 05/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class TopiaSqlBatchServiceConfiguration { + + public static final String PROPERTY_READ_FETCH_SIZE = "readFetchSize"; + public static final String PROPERTY_WRITE_BATCH_SIZE = "writeBatchSize"; + public static final int DEFAULT_READ_FETCH_SIZE = 1000; + public static final int DEFAULT_WRITE_BATCH_SIZE = 1000; + + protected int readFetchSize = DEFAULT_READ_FETCH_SIZE; + + protected int writeBatchSize = DEFAULT_WRITE_BATCH_SIZE; + + public int getReadFetchSize() { + return readFetchSize; + } + + public int getWriteBatchSize() { + return writeBatchSize; + } + + protected void setReadFetchSize(int readFetchSize) { + this.readFetchSize = readFetchSize; + } + + protected void setWriteBatchSize(int writeBatchSize) { + this.writeBatchSize = writeBatchSize; + } +} diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java index 1ea5fd2..5bf651a 100644 --- a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/TopiaSqlBatchServiceImpl.java @@ -60,11 +60,29 @@ public class TopiaSqlBatchServiceImpl implements TopiaSqlBatchService { .put(UpdateTablesRequest.class, UpdateTablesAction.class) .put(DeleteTablesRequest.class, DeleteTablesAction.class) .build(); - private TopiaApplicationContext topiaApplicationContext; + + protected TopiaApplicationContext topiaApplicationContext; + + protected TopiaSqlBatchServiceConfiguration configuration; @Override public void initTopiaService(TopiaApplicationContext topiaApplicationContext, Map<String, String> serviceConfiguration) { + this.topiaApplicationContext = topiaApplicationContext; + this.configuration = new TopiaSqlBatchServiceConfiguration(); + + String readFetchSizeStr = serviceConfiguration.get(TopiaSqlBatchServiceConfiguration.PROPERTY_READ_FETCH_SIZE); + int readFetchSize = readFetchSizeStr != null + ? Integer.valueOf(readFetchSizeStr) + : TopiaSqlBatchServiceConfiguration.DEFAULT_READ_FETCH_SIZE; + configuration.setReadFetchSize(readFetchSize); + + String writeBatchSizeStr = serviceConfiguration.get(TopiaSqlBatchServiceConfiguration.PROPERTY_WRITE_BATCH_SIZE); + int writeBatchSize = writeBatchSizeStr == null + ? TopiaSqlBatchServiceConfiguration.DEFAULT_WRITE_BATCH_SIZE + : Integer.valueOf(writeBatchSizeStr); + configuration.setWriteBatchSize(writeBatchSize); + } @Override @@ -73,6 +91,11 @@ public class TopiaSqlBatchServiceImpl implements TopiaSqlBatchService { } @Override + public TopiaSqlBatchServiceConfiguration getConfiguration() { + return configuration; + } + + @Override public SqlRequests.Builder requestBuilder() { return SqlRequests.builder().from(topiaApplicationContext); } @@ -89,17 +112,29 @@ public class TopiaSqlBatchServiceImpl implements TopiaSqlBatchService { @Override public ReplicateTablesRequest.Builder replicateTablesRequestBuilder() { - return ReplicateTablesRequest.builder().from(topiaApplicationContext); + return ReplicateTablesRequest + .builder() + .from(topiaApplicationContext) + .setReadFetchSize(configuration.getReadFetchSize()) + .setWriteBatchSize(configuration.getWriteBatchSize()); } @Override public UpdateTablesRequest.Builder updateTablesRequestBuilder() { - return UpdateTablesRequest.builder().from(topiaApplicationContext); + return UpdateTablesRequest + .builder() + .from(topiaApplicationContext) + .setReadFetchSize(configuration.getReadFetchSize()) + .setWriteBatchSize(configuration.getWriteBatchSize()); } @Override public DeleteTablesRequest.Builder deleteTablesRequestBuilder() { - return DeleteTablesRequest.builder().from(topiaApplicationContext); + return DeleteTablesRequest + .builder() + .from(topiaApplicationContext) + .setReadFetchSize(configuration.getReadFetchSize()) + .setWriteBatchSize(configuration.getWriteBatchSize()); } @Override diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java index 02ece9e..471f026 100644 --- a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java @@ -204,7 +204,7 @@ public abstract class AbstractTablesAction<R extends AbstractTablesRequest> exte statement.setString(index++, id); } } - statement.setFetchSize(request.getFetchSize()); + statement.setFetchSize(request.getReadFetchSize()); return statement; } diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesRequest.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesRequest.java index 9edad80..82cadac 100644 --- a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesRequest.java +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesRequest.java @@ -24,6 +24,7 @@ package org.nuiton.topia.service.sql.batch.actions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.service.sql.batch.TopiaSqlBatchServiceConfiguration; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; /** @@ -36,23 +37,33 @@ import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; */ public abstract class AbstractTablesRequest extends AbstractSqlRequest { - public static final int DEFAULT_FETCH_SIZE = 100; /** * Logger. */ private static final Log log = LogFactory.getLog(AbstractTablesRequest.class); - protected int fetchSize; + + protected int readFetchSize; + + protected int writeBatchSize; protected TopiaSqlTableSelectArgument selectArgument; protected TopiaSqlTables tables; - public int getFetchSize() { - return fetchSize; + public int getReadFetchSize() { + return readFetchSize; } - public void setFetchSize(int fetchSize) { - this.fetchSize = fetchSize; + public void setReadFetchSize(int readFetchSize) { + this.readFetchSize = readFetchSize; + } + + public int getWriteBatchSize() { + return writeBatchSize; + } + + public void setWriteBatchSize(int writeBatchSize) { + this.writeBatchSize = writeBatchSize; } public TopiaSqlTableSelectArgument getSelectArgument() { @@ -83,7 +94,8 @@ public abstract class AbstractTablesRequest extends AbstractSqlRequest { protected AbstractTablesRequestBuilder(R sqlActionRequest) { super(sqlActionRequest); - setFetchSize(DEFAULT_FETCH_SIZE); + setReadFetchSize(TopiaSqlBatchServiceConfiguration.DEFAULT_READ_FETCH_SIZE); + setWriteBatchSize(TopiaSqlBatchServiceConfiguration.DEFAULT_WRITE_BATCH_SIZE); } public B setTables(TopiaSqlTables tables) { @@ -91,8 +103,13 @@ public abstract class AbstractTablesRequest extends AbstractSqlRequest { return returnThis(); } - public B setFetchSize(int fetchSize) { - request.setFetchSize(fetchSize); + public B setReadFetchSize(int readFetchSize) { + request.setReadFetchSize(readFetchSize); + return returnThis(); + } + + public B setWriteBatchSize(int writeBatchSize) { + request.setWriteBatchSize(writeBatchSize); return returnThis(); } diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java index f703ec8..20e2ddb 100644 --- a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java @@ -80,7 +80,7 @@ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest } - int fetchSize = request.getFetchSize(); + int writeBatchSize = request.getWriteBatchSize(); String tableName = table.getFullyTableName(); long index = 0; @@ -113,7 +113,7 @@ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest } - if ((++index % fetchSize) == 0) { + if ((++index % writeBatchSize) == 0) { flush(writeStatement, writer, tableName, index); } diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java index 537b3c5..4f1c911 100644 --- a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java @@ -76,7 +76,7 @@ public class ReplicateTablesAction extends AbstractTablesAction<ReplicateTablesR } - int fetchSize = request.getFetchSize(); + int writeBatchSize = request.getWriteBatchSize(); String tableName = table.getFullyTableName(); long index = 0; @@ -111,7 +111,7 @@ public class ReplicateTablesAction extends AbstractTablesAction<ReplicateTablesR } - if ((++index % fetchSize) == 0) { + if ((++index % writeBatchSize) == 0) { flush(writeStatement, writer, tableName, index); } diff --git a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java index edf4bf0..4da342c 100644 --- a/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java +++ b/topia-service-sql-batch/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java @@ -86,7 +86,7 @@ public class UpdateTablesAction extends AbstractTablesAction<UpdateTablesRequest } - int fetchSize = request.getFetchSize(); + int writeBatchSize = request.getWriteBatchSize(); String tableName = table.getFullyTableName(); long index = 0; @@ -125,7 +125,7 @@ public class UpdateTablesAction extends AbstractTablesAction<UpdateTablesRequest } - if ((++index % fetchSize) == 0) { + if ((++index % writeBatchSize) == 0) { flush(writeStatement, writer, tableName, index); } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.