branch feature/4304_synchro_marees updated (f332626 -> 3504333)
This is an automated email from the git hooks/post-receive script. New change to branch feature/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from f332626 Meilleure utilisation des déclarations de service new 986f955 Make delete actions works new dfc2999 Introduce delete request in SqlScriptProducerService new f7a112b Add more logs new 3504333 use now delete from sql producer instead of hibernate delete The 4 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 35043332666718471bf82729816d9d6f8cc2cf3a Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:50 2016 +0200 use now delete from sql producer instead of hibernate delete commit f7a112b639c8e75c0123b000250f28ecfda7542f Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:30 2016 +0200 Add more logs commit dfc2999fd18f2adde1bf2ddfc51ca19427e12f6d Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:20 2016 +0200 Introduce delete request in SqlScriptProducerService commit 986f95552c3087d1f891d70ec27f10054c1b8c28 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:56:27 2016 +0200 Make delete actions works Summary of changes: .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 1 + .../ui/admin/datasynchro/DataSynchroUIHandler.java | 7 +- .../observe/ui/admin/save/SaveLocalUIHandler.java | 6 +- .../ird/observe/ui/storage/StorageUIHandler.java | 10 +-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 6 +- .../v1/SqlScriptProducerServiceController.java | 11 ++- .../injector/SqlScriptProducerRequestInjector.java | 12 ++-- .../java/fr/ird/observe/RunScriptTopiaSqlWork.java | 8 +++ ...quest.java => AddSqlScriptProducerRequest.java} | 20 +++--- ...st.java => DeleteSqlScriptProducerRequest.java} | 50 ++++--------- .../services/service/SqlScriptProducerService.java | 4 +- .../datasynchro/DataSynchronizeDeleteTask.java | 13 ++++ .../datasynchro/DataSynchronizeRequest.java | 21 ++++-- .../datasynchro/DataSynchronizeService.java | 11 +++ .../services/service/DataSourceServiceTopia.java | 22 +++--- .../service/SqlScriptProducerServiceTopia.java | 84 +++++++++++++++++++++- .../datasynchro/DataSynchronizeServiceTopia.java | 65 ++++++++++------- .../actions/export/ReplicateTripServiceTopia.java | 6 +- .../services/service/MigrateTestsDatabases.java | 24 +++---- .../service/SqlScriptProducerServiceTopiaTest.java | 18 ++--- .../sql/batch/actions/AbstractTablesAction.java | 5 +- .../sql/batch/actions/DeleteTablesAction.java | 13 +++- .../sql/batch/actions/ReplicateTablesAction.java | 6 ++ .../sql/batch/actions/UpdateTablesAction.java | 5 ++ .../service/sql/batch/tables/TopiaSqlTables.java | 11 +++ 25 files changed, 296 insertions(+), 143 deletions(-) copy observe-services-api/src/main/java/fr/ird/observe/services/service/{SqlScriptProducerRequest.java => AddSqlScriptProducerRequest.java} (80%) rename observe-services-api/src/main/java/fr/ird/observe/services/service/{SqlScriptProducerRequest.java => DeleteSqlScriptProducerRequest.java} (60%) -- 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/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 986f95552c3087d1f891d70ec27f10054c1b8c28 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:56:27 2016 +0200 Make delete actions works --- .../service/sql/batch/actions/AbstractTablesAction.java | 5 ++++- .../topia/service/sql/batch/actions/DeleteTablesAction.java | 13 ++++++++++--- .../service/sql/batch/actions/ReplicateTablesAction.java | 6 ++++++ .../topia/service/sql/batch/actions/UpdateTablesAction.java | 5 +++++ .../topia/service/sql/batch/tables/TopiaSqlTables.java | 11 +++++++++++ 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java index 0851106..ae640f3 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/AbstractTablesAction.java @@ -27,6 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.support.TopiaSqlWork; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import org.nuiton.util.TimeLog; import javax.sql.rowset.serial.SerialBlob; @@ -61,12 +62,14 @@ public abstract class AbstractTablesAction<R extends AbstractTablesRequest> exte super(request); } + protected abstract TopiaSqlTables getTables() ; + protected abstract void executeOnTable(R request, TopiaSqlTable table, PreparedStatement readStatement) throws SQLException; @Override protected final void execute() { - for (TopiaSqlTable table : request.getTables()) { + for (TopiaSqlTable table : getTables()) { long startTable = TimeLog.getTime(); diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java index bec2b89..ba71564 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/DeleteTablesAction.java @@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import java.io.IOException; import java.sql.PreparedStatement; @@ -43,7 +44,7 @@ import java.util.List; */ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest> { - public static final String DELETE_STATEMENT = "DELETE FROM %s.%s WHERE topiaId = '%%s'"; + public static final String DELETE_STATEMENT = "DELETE FROM %s.%s WHERE topiaId = '%%s';\n"; /** * Logger. */ @@ -64,7 +65,7 @@ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest List<String> columnNames = getColumnNames(readResultSetMetaData, columnCount); String topiaIdColumnName = TopiaEntity.PROPERTY_TOPIA_ID.toLowerCase(); - int topiaIdColumnIndex = columnNames.indexOf(topiaIdColumnName); + int topiaIdColumnIndex = columnNames.indexOf(topiaIdColumnName) + 1; boolean useOutputWriter = useOutputWriter(); boolean useOutputDb = useOutputDb(); @@ -95,7 +96,7 @@ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest if (useOutputDb) { writeStatement.clearParameters(); - writeStatement.setObject(1, topiaId); + writeStatement.setString(1, topiaId); writeStatement.addBatch(); } @@ -123,6 +124,12 @@ public class DeleteTablesAction extends AbstractTablesAction<DeleteTablesRequest } + @Override + protected TopiaSqlTables getTables() { + return request.getTables().reverse(); + + } + protected String newDeleteStatementSql(TopiaSqlTable table) { String sql = String.format(DELETE_STATEMENT, table.getSchemaName(), table.getTableName()); diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java index 792d5e9..cad3c45 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/ReplicateTablesAction.java @@ -25,6 +25,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.tables.TopiaSqlTable; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import java.io.IOException; import java.sql.PreparedStatement; @@ -121,6 +122,11 @@ public class ReplicateTablesAction extends AbstractTablesAction<ReplicateTablesR } + @Override + protected TopiaSqlTables getTables() { + return request.getTables(); + } + protected String newInsertStatementSql(TopiaSqlTable table, List<String> columnNames) { StringBuilder columnNamesBuilder = new StringBuilder(); diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java index 2b48710..ed4bab4 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/actions/UpdateTablesAction.java @@ -28,6 +28,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTable; +import org.nuiton.topia.service.sql.batch.tables.TopiaSqlTables; import javax.sql.rowset.serial.SerialBlob; import java.io.IOException; @@ -57,6 +58,10 @@ public class UpdateTablesAction extends AbstractTablesAction<UpdateTablesRequest super(request); } + protected TopiaSqlTables getTables() { + return request.getTables(); + } + @Override protected void executeOnTable(UpdateTablesRequest request, TopiaSqlTable table, PreparedStatement readStatement) throws SQLException { diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java index 1b02f23..82f1a87 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/service/sql/batch/tables/TopiaSqlTables.java @@ -31,6 +31,7 @@ import org.nuiton.topia.persistence.TopiaEntityEnum; import java.util.Collections; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -79,6 +80,16 @@ public class TopiaSqlTables implements Iterable<TopiaSqlTable> { .toString(); } + public TopiaSqlTables reverse() { + List<TopiaSqlTable> reverseList = new LinkedList<>(); + for (TopiaSqlTable orderedTable : orderedTables) { + reverseList.add(0,orderedTable); + } + ImmutableSet<TopiaSqlTable> reverseSet = ImmutableSet.copyOf(reverseList); + + return new TopiaSqlTables(tablesByFullyTableName, reverseSet); + } + /** * Created on 02/01/16. * -- 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/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit dfc2999fd18f2adde1bf2ddfc51ca19427e12f6d Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:20 2016 +0200 Introduce delete request in SqlScriptProducerService --- .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 1 + .../observe/ui/admin/save/SaveLocalUIHandler.java | 6 +- .../ird/observe/ui/storage/StorageUIHandler.java | 10 +-- .../fr/ird/observe/ui/storage/StorageUIModel.java | 6 +- .../v1/SqlScriptProducerServiceController.java | 11 ++- .../injector/SqlScriptProducerRequestInjector.java | 12 ++-- ...quest.java => AddSqlScriptProducerRequest.java} | 20 +++--- ...st.java => DeleteSqlScriptProducerRequest.java} | 50 ++++--------- .../services/service/SqlScriptProducerService.java | 4 +- .../services/service/DataSourceServiceTopia.java | 22 +++--- .../service/SqlScriptProducerServiceTopia.java | 84 +++++++++++++++++++++- .../actions/export/ReplicateTripServiceTopia.java | 6 +- .../services/service/MigrateTestsDatabases.java | 24 +++---- .../service/SqlScriptProducerServiceTopiaTest.java | 18 ++--- 14 files changed, 169 insertions(+), 105 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java index 9776e7c..e6133bd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUIModel.java @@ -822,6 +822,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { localSourceInformation = localSource.checkCanConnect(); } catch (Exception e) { + //FIXME ! il faut faire quelque chose dans ce cas précis, au moins avertir l'utilisateur if (log.isErrorEnabled()) { log.error("unable to find local source information", e); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java index 8d3bd23..8762b78 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/save/SaveLocalUIHandler.java @@ -22,7 +22,7 @@ package fr.ird.observe.ui.admin.save; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeContext; import fr.ird.observe.services.service.actions.synchro.UnidirectionalReferentialSynchronizeEngine; @@ -155,8 +155,8 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { File backupFile = stepModel.getBackupFile(); SqlScriptProducerService dumpService = source.newSqlScriptProducerService(); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addAllData(); - byte[] dump = dumpService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addAllData(); + byte[] dump = dumpService.produceAddSqlScript(request); try (FileOutputStream outputStream = new FileOutputStream(backupFile)) { IOUtils.write(dump, outputStream); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java index 34a5147..c353459 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIHandler.java @@ -44,7 +44,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.ObserveDbUserDto; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.ui.ObserveMainUI; import fr.ird.observe.ui.UIHelper; @@ -602,8 +602,8 @@ public class StorageUIHandler { log.debug(dst); } - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - byte[] dataDump = dumpProducerService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + byte[] dataDump = dumpProducerService.produceAddSqlScript(request); try (FileOutputStream outputStream = new FileOutputStream(dst)) { @@ -655,8 +655,8 @@ public class StorageUIHandler { ImmutableSet<String> tripIds = ImmutableSet.copyOf(Iterables.transform(trips, DataReference.getIdFunction())); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addDataIds(tripIds); - byte[] dump = dumpService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().dataIdsToAdd(tripIds); + byte[] dump = dumpService.produceAddSqlScript(request); try (FileOutputStream fileOutputStream = new FileOutputStream(dst)) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java index 89f63fe..67defd8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/storage/StorageUIModel.java @@ -44,11 +44,11 @@ import fr.ird.observe.services.security.UnknownObserveWebUserException; import fr.ird.observe.services.security.UnknownObserveWebUserForDatabaseException; import fr.ird.observe.services.security.UserLoginNotFoundException; import fr.ird.observe.services.security.UserPasswordNotFoundException; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.BabModelVersionException; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; import fr.ird.observe.services.service.PingService; -import fr.ird.observe.services.service.SqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.ui.storage.tabs.DataSelectionModel; import fr.ird.observe.ui.storage.tabs.SecurityModel; @@ -1597,8 +1597,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { SqlScriptProducerService dumpService = source.newSqlScriptProducerService(); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential(); - byte[] dump = dumpService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential(); + byte[] dump = dumpService.produceAddSqlScript(request); result.setImportDatabase(dump); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/SqlScriptProducerServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/SqlScriptProducerServiceController.java index 82cafc9..82b13ec 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/SqlScriptProducerServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/SqlScriptProducerServiceController.java @@ -22,7 +22,8 @@ package fr.ird.observe.application.web.controller.v1; * #L% */ -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; /** @@ -35,8 +36,12 @@ public class SqlScriptProducerServiceController extends ObserveAuthenticatedServ } @Override - public byte[] produceSqlScript(SqlScriptProducerRequest request) { - return service.produceSqlScript(request); + public byte[] produceAddSqlScript(AddSqlScriptProducerRequest request) { + return service.produceAddSqlScript(request); } + @Override + public byte[] produceDeleteSqlScript(DeleteSqlScriptProducerRequest request) { + return service.produceDeleteSqlScript(request); + } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/SqlScriptProducerRequestInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/SqlScriptProducerRequestInjector.java index 29771b6..33fb257 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/SqlScriptProducerRequestInjector.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/SqlScriptProducerRequestInjector.java @@ -24,7 +24,7 @@ package fr.ird.observe.application.web.injector; import com.google.common.base.Preconditions; import com.google.gson.Gson; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.debux.webmotion.server.call.Call; @@ -50,9 +50,9 @@ public class SqlScriptProducerRequestInjector implements ExecutorParametersInjec @Override public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { - SqlScriptProducerRequest sqlScriptProducerRequest = null; + AddSqlScriptProducerRequest addSqlScriptProducerRequest = null; - if (type.equals(SqlScriptProducerRequest.class)) { + if (type.equals(AddSqlScriptProducerRequest.class)) { Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); @@ -60,15 +60,15 @@ public class SqlScriptProducerRequestInjector implements ExecutorParametersInjec String gsonContent = ((String[]) parameterTree.getValue())[0]; - sqlScriptProducerRequest = gson.fromJson(gsonContent, SqlScriptProducerRequest.class); + addSqlScriptProducerRequest = gson.fromJson(gsonContent, AddSqlScriptProducerRequest.class); if (log.isInfoEnabled()) { - log.info("Inject sqlScriptProducerRequest: " + sqlScriptProducerRequest); + log.info("Inject addSqlScriptProducerRequest: " + addSqlScriptProducerRequest); } } - return sqlScriptProducerRequest; + return addSqlScriptProducerRequest; } 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/AddSqlScriptProducerRequest.java similarity index 80% copy from observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java copy to observe-services-api/src/main/java/fr/ird/observe/services/service/AddSqlScriptProducerRequest.java index 48040ef..61c89ad 100644 --- 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/AddSqlScriptProducerRequest.java @@ -32,7 +32,7 @@ import java.util.stream.Collectors; * * @author Tony Chemit - chemit@codelutin.com */ -public class SqlScriptProducerRequest { +public class AddSqlScriptProducerRequest { protected final boolean postgres; protected boolean addSchema; @@ -40,30 +40,30 @@ public class SqlScriptProducerRequest { protected boolean addData; protected ImmutableSet<String> dataIds; - public static SqlScriptProducerRequest forH2() { - return new SqlScriptProducerRequest(false); + public static AddSqlScriptProducerRequest forH2() { + return new AddSqlScriptProducerRequest(false); } - public static SqlScriptProducerRequest forPostgres() { - return new SqlScriptProducerRequest(true); + public static AddSqlScriptProducerRequest forPostgres() { + return new AddSqlScriptProducerRequest(true); } - public SqlScriptProducerRequest addSchema() { + public AddSqlScriptProducerRequest addSchema() { addSchema = true; return this; } - public SqlScriptProducerRequest addReferential() { + public AddSqlScriptProducerRequest addReferential() { addReferential = true; return this; } - public SqlScriptProducerRequest addAllData() { + public AddSqlScriptProducerRequest addAllData() { addData = true; return this; } - public SqlScriptProducerRequest addDataIds(ImmutableSet<String> dataIds) { + public AddSqlScriptProducerRequest dataIdsToAdd(ImmutableSet<String> dataIds) { addData = true; this.dataIds = dataIds; return this; @@ -77,7 +77,7 @@ public class SqlScriptProducerRequest { return addReferential; } - protected SqlScriptProducerRequest(boolean postgres) { + protected AddSqlScriptProducerRequest(boolean postgres) { this.postgres = postgres; } 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/DeleteSqlScriptProducerRequest.java similarity index 60% rename from observe-services-api/src/main/java/fr/ird/observe/services/service/SqlScriptProducerRequest.java rename to observe-services-api/src/main/java/fr/ird/observe/services/service/DeleteSqlScriptProducerRequest.java index 48040ef..bbcc54a 100644 --- 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/DeleteSqlScriptProducerRequest.java @@ -32,57 +32,37 @@ import java.util.stream.Collectors; * * @author Tony Chemit - chemit@codelutin.com */ -public class SqlScriptProducerRequest { +public class DeleteSqlScriptProducerRequest { protected final boolean postgres; - protected boolean addSchema; - protected boolean addReferential; - protected boolean addData; + protected boolean deleteData; protected ImmutableSet<String> dataIds; - public static SqlScriptProducerRequest forH2() { - return new SqlScriptProducerRequest(false); + public static DeleteSqlScriptProducerRequest forH2() { + return new DeleteSqlScriptProducerRequest(false); } - public static SqlScriptProducerRequest forPostgres() { - return new SqlScriptProducerRequest(true); + public static DeleteSqlScriptProducerRequest forPostgres() { + return new DeleteSqlScriptProducerRequest(true); } - public SqlScriptProducerRequest addSchema() { - addSchema = true; + public DeleteSqlScriptProducerRequest deleteAllData() { + deleteData = 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; + public DeleteSqlScriptProducerRequest dataIdsToDelete(ImmutableSet<String> dataIds) { + deleteData = true; this.dataIds = dataIds; return this; } - public boolean isAddSchema() { - return addSchema; - } - - public boolean isAddReferential() { - return addReferential; - } - - protected SqlScriptProducerRequest(boolean postgres) { + protected DeleteSqlScriptProducerRequest(boolean postgres) { this.postgres = postgres; } - public boolean isAddData() { - return addData; + public boolean isDeleteData() { + return deleteData; } public ImmutableSet<String> getDataIds() { @@ -101,9 +81,7 @@ public class SqlScriptProducerRequest { public String toString() { return MoreObjects.toStringHelper(this) .add("postgres", postgres) - .add("addSchema", addSchema) - .add("addReferential", addReferential) - .add("addData", addData) + .add("deleteData", deleteData) .add("dataIds", dataIds == null ? "" : "[" + dataIds.stream().collect(Collectors.joining(", ")) + "]") .toString(); } 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 index fd0fae8..50ce8b9 100644 --- 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 @@ -31,5 +31,7 @@ import fr.ird.observe.services.ObserveService; */ public interface SqlScriptProducerService extends ObserveService { - byte[] produceSqlScript(SqlScriptProducerRequest request); + byte[] produceAddSqlScript(AddSqlScriptProducerRequest request); + + byte[] produceDeleteSqlScript(DeleteSqlScriptProducerRequest request); } 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 95fc070..00095d2 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 @@ -204,8 +204,8 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS temporaryTopiaApplicationContext.getMigrationService().runSchemaMigration(); SqlScriptProducerService dumpProducerService = serviceContext.newService(temporaryConfiguration, SqlScriptProducerService.class); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData(); - byte[] dump = dumpProducerService.produceSqlScript(request); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData(); + byte[] dump = dumpProducerService.produceAddSqlScript(request); topiaApplicationContext.executeSqlStatements(dump); topiaApplicationContext.getMigrationService().createSchemaIfNotExist(); topiaApplicationContext.getMigrationService().runSchemaMigration(); @@ -253,11 +253,11 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportReferentialDataSourceConfiguration(); - SqlScriptProducerRequest request; + AddSqlScriptProducerRequest request; if (((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration).isH2Database()) { - request = SqlScriptProducerRequest.forH2(); + request = AddSqlScriptProducerRequest.forH2(); } else { - request = SqlScriptProducerRequest.forPostgres(); + request = AddSqlScriptProducerRequest.forPostgres(); } request.addReferential(); @@ -270,7 +270,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConnection importDataSourceConnection = dataSourceService.open(importDataSourceConfiguration); SqlScriptProducerService dumpProducerService = serviceContext.newService(importDataSourceConnection, SqlScriptProducerService.class); - referentialDump = dumpProducerService.produceSqlScript(request); + referentialDump = dumpProducerService.produceAddSqlScript(request); } finally { dataSourceService.close(); @@ -288,11 +288,11 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportDataDataSourceConfiguration(); - SqlScriptProducerRequest request; + AddSqlScriptProducerRequest request; if (((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration).isH2Database()) { - request = SqlScriptProducerRequest.forH2(); + request = AddSqlScriptProducerRequest.forH2(); } else { - request = SqlScriptProducerRequest.forPostgres(); + request = AddSqlScriptProducerRequest.forPostgres(); } if (!referantialImported) { @@ -310,7 +310,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS log.info("Get data: " + importDataIds); } - request.addDataIds(importDataIds); + request.dataIdsToAdd(importDataIds); DataSourceService dataSourceService = serviceContext.newService(importDataSourceConfiguration, DataSourceService.class); @@ -320,7 +320,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS ObserveDataSourceConnection importDataSourceConnection = dataSourceService.open(importDataSourceConfiguration); SqlScriptProducerService dumpProducerService = serviceContext.newService(importDataSourceConnection, SqlScriptProducerService.class); - dataDump = dumpProducerService.produceSqlScript(request); + dataDump = dumpProducerService.produceAddSqlScript(request); } finally { dataSourceService.close(); 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 index e2c4cc9..bb8a17d 100644 --- 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 @@ -51,9 +51,9 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement private static final Log log = LogFactory.getLog(SqlScriptProducerServiceTopia.class); @Override - public byte[] produceSqlScript(SqlScriptProducerRequest request) { + public byte[] produceAddSqlScript(AddSqlScriptProducerRequest request) { if (log.isTraceEnabled()) { - log.trace("produceSqlScript(" + request + ")"); + log.trace("produceAddSqlScript(" + request + ")"); } try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { @@ -75,7 +75,31 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement } - protected SqlRequests sqlRequests(SqlScriptProducerRequest request, SqlRequests.Builder builder) { + @Override + public byte[] produceDeleteSqlScript(DeleteSqlScriptProducerRequest request) { + if (log.isTraceEnabled()) { + log.trace("produceDeleteSqlScript(" + request + ")"); + } + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + + try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(out))) { + + TopiaSqlBatchService sqlBatchService = serviceContext.getTopiaApplicationContext().getSqlBatchService(); + SqlRequests.Builder builder = sqlBatchService.requestBuilder().to(writer); + + SqlRequests sqlRequests = sqlRequests(request, builder); + sqlBatchService.execute(sqlRequests); + + } + + return out.toByteArray(); + + } catch (IOException e) { + throw new RuntimeException("Could not produce delete sql script", e); + } + } + + protected SqlRequests sqlRequests(AddSqlScriptProducerRequest request, SqlRequests.Builder builder) { if (request.isAddSchema()) { @@ -152,4 +176,58 @@ public class SqlScriptProducerServiceTopia extends ObserveServiceTopia implement return builder.build(); } + protected SqlRequests sqlRequests(DeleteSqlScriptProducerRequest request, SqlRequests.Builder builder) { + + ObserveTopiaApplicationContext topiaApplicationContext = serviceContext.getTopiaApplicationContext(); + + if (request.isDeleteData()) { + + ImmutableSet<String> tripIds = request.getDataIds(); + if (tripIds == null) { + + builder.deleteTablesBuilder() + .setTables(topiaApplicationContext.getTripSeineTables()) + .replicateTablesBuilder() + .setTables(topiaApplicationContext.getTripLonglineTables()) + .flush(); + + } else { + + { + + Set<String> tripIds1 = Sets.newHashSet(Iterables.filter(tripIds, Entities.IS_SEINE_ID::test)); + + if (!tripIds1.isEmpty()) { + + builder.deleteTablesBuilder() + .setTables(topiaApplicationContext.getTripSeineTables()) + .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds1)) + .flush(); + + } + + } + + { + + Set<String> tripIds1 = Sets.newHashSet(Iterables.filter(tripIds, Entities.IS_LONGLINE_ID::test)); + + if (!tripIds1.isEmpty()) { + + builder.deleteTablesBuilder() + .setTables(topiaApplicationContext.getTripLonglineTables()) + .setSelectArgument(TopiaSqlTableSelectArgument.of(tripIds1)) + .flush(); + + } + + } + + } + + } + + return builder.build(); + } + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java index b606b28..fbaf1bf 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/export/ReplicateTripServiceTopia.java @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableSet; import fr.ird.observe.ObserveTopiaApplicationContext; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.IdDtos; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import fr.ird.observe.services.service.longline.TripLonglineService; import fr.ird.observe.services.service.seine.TripSeineService; @@ -49,9 +49,9 @@ public class ReplicateTripServiceTopia extends ObserveServiceTopia implements Re String tripId = replicateTripExportRequest.getTripId(); - SqlScriptProducerRequest request = SqlScriptProducerRequest.forPostgres().addDataIds(ImmutableSet.of(tripId)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().dataIdsToAdd(ImmutableSet.of(tripId)); - byte[] tripContent = sqlScriptProducerService.produceSqlScript(request); + byte[] tripContent = sqlScriptProducerService.produceAddSqlScript(request); resultBuilder.addTripToReplicate(replicateTripExportRequest, tripContent); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java index 3567ade..a9e0b6c 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/MigrateTestsDatabases.java @@ -63,44 +63,44 @@ public class MigrateTestsDatabases extends AbstractServiceTopiaTest { @DatabaseNameConfiguration(DatabaseName.referentiel) @Test public void migrateReferentielDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + migrate(service.produceAddSqlScript(request)); } @DatabaseNameConfiguration(DatabaseName.dataForTestSeine) @Test public void migrateDataForTestSeineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + migrate(service.produceAddSqlScript(request)); } @DatabaseNameConfiguration(DatabaseName.dataForTestLongline) @Test public void migrateDataForTestLonglineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + migrate(service.produceAddSqlScript(request)); } @DatabaseNameConfiguration(DatabaseName.empty_h2) @Test public void migrateEmptyH2Db() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema(); + migrate(service.produceAddSqlScript(request)); } @DatabaseVersionConfiguration("4.903") @DatabaseNameConfiguration(DatabaseName.dataForTestUnidirectionalReferentialSynchro) @Test public void migrateDataForTestUnidirectionalReferentialSynchroDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); - migrate(service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData(); + migrate(service.produceAddSqlScript(request)); } @DatabaseNameConfiguration(DatabaseName.empty_h2) @Test public void migrateEmptyPgDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { - SqlScriptProducerRequest request = SqlScriptProducerRequest.forPostgres().addSchema(); - migrate(DatabaseName.empty_pg.name(), service.produceSqlScript(request)); + AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().addSchema(); + migrate(DatabaseName.empty_pg.name(), service.produceAddSqlScript(request)); } protected void migrate(byte[] dump) throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseNotFoundException, BabModelVersionException, DatabaseConnexionNotAuthorizedException { 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 index 194a9f6..364c9bc 100644 --- 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 @@ -55,8 +55,8 @@ public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest @Test public void testProduceSchema() throws Exception { - produce(SqlScriptProducerRequest.forH2().addSchema()); - produce(SqlScriptProducerRequest.forPostgres().addSchema()); + produce(AddSqlScriptProducerRequest.forH2().addSchema()); + produce(AddSqlScriptProducerRequest.forPostgres().addSchema()); } @@ -64,7 +64,7 @@ public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest @Test public void testProduceReferential() throws Exception { - produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential()); + produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential()); } @@ -72,8 +72,8 @@ public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest @Test public void testProduceTripSeine() throws Exception { -// produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData()); - produce(SqlScriptProducerRequest.forPostgres().addSchema().addReferential().addDataIds(ObserveFixtures.TRIP_SEINE_IDS)); +// produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData()); + produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_SEINE_IDS)); } @@ -81,18 +81,18 @@ public class SqlScriptProducerServiceTopiaTest extends AbstractServiceTopiaTest @Test public void testProduceTripLongline() throws Exception { - produce(SqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData()); -// produce(SqlScriptProducerRequest.forH2().addSchema().addReferential().addDataIds(ObserveFixtures.TRIP_LONGLINE_IDS)); + produce(AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData()); +// produce(AddSqlScriptProducerRequest.forH2().addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_LONGLINE_IDS)); } - protected void produce(SqlScriptProducerRequest request) throws IOException { + protected void produce(AddSqlScriptProducerRequest request) throws IOException { long time = TimeLog.getTime(); File outputFile = applicationContextResource.createTemporaryFile("-out.sql.gz"); - byte[] gzContent = service.produceSqlScript(request); + byte[] gzContent = service.produceAddSqlScript(request); try (FileOutputStream fileOutputStream = new FileOutputStream(outputFile)) { IOUtils.write(gzContent, fileOutputStream); -- 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/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit f7a112b639c8e75c0123b000250f28ecfda7542f Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:30 2016 +0200 Add more logs --- .../src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java b/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java index b5ea405..aa63ad4 100644 --- a/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java +++ b/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java @@ -22,6 +22,8 @@ package fr.ird.observe; * #L% */ +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.support.TopiaSqlWork; import org.nuiton.util.GZUtil; @@ -45,6 +47,9 @@ import java.util.zip.GZIPInputStream; */ public class RunScriptTopiaSqlWork implements TopiaSqlWork { + /** Logger. */ + private static final Log log = LogFactory.getLog(RunScriptTopiaSqlWork.class); + protected final byte[] content; protected final boolean gzip; protected final int batchSize; @@ -87,6 +92,9 @@ public class RunScriptTopiaSqlWork implements TopiaSqlWork { } if (trimLine.endsWith(";")) { statement.addBatch(command); + if (log.isDebugEnabled()) { + log.debug("Sql statement: " + command); + } batchSize++; command = null; -- 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/4304_synchro_marees in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 35043332666718471bf82729816d9d6f8cc2cf3a Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Aug 8 15:58:50 2016 +0200 use now delete from sql producer instead of hibernate delete --- .../ui/admin/datasynchro/DataSynchroUIHandler.java | 7 ++- .../datasynchro/DataSynchronizeDeleteTask.java | 13 +++++ .../datasynchro/DataSynchronizeRequest.java | 21 +++++-- .../datasynchro/DataSynchronizeService.java | 11 ++++ .../datasynchro/DataSynchronizeServiceTopia.java | 65 +++++++++++++--------- 5 files changed, 83 insertions(+), 34 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java index f59acf1..332bf62 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/datasynchro/DataSynchroUIHandler.java @@ -256,8 +256,8 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { DefaultListModel<DataSynchronizeTaskSupport> tasks = getStepModel().getTasks(); int size = tasks.size(); - DataSynchronizeRequest.Builder leftDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(rightSourceIsH2); - DataSynchronizeRequest.Builder rightDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(leftSourceIsH2); + DataSynchronizeRequest.Builder leftDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(leftSourceIsH2, rightSourceIsH2); + DataSynchronizeRequest.Builder rightDataSynchronizeRequestBuilder = DataSynchronizeRequest.builder(rightSourceIsH2, leftSourceIsH2); for (int i = 0; i < size; i++) { DataSynchronizeTaskSupport task = tasks.getElementAt(i); @@ -292,19 +292,20 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { } - DataSynchronizeService leftDataSynchronizeService = leftSource.newDataSynchronizeService(); DataSynchronizeService rightDataSynchronizeService = rightSource.newDataSynchronizeService(); DataSynchronizeRequest leftDataSynchronizeRequest = leftDataSynchronizeRequestBuilder.build(); if (leftDataSynchronizeRequest.isNotEmpty()) { rightDataSynchronizeService.prepareRequestOnOppositeDataSource(leftDataSynchronizeRequest); + leftDataSynchronizeService.prepareRequestOnDataSource(leftDataSynchronizeRequest); leftDataSynchronizeService.executeRequest(leftDataSynchronizeRequest); } DataSynchronizeRequest rightDataSynchronizeRequest = rightDataSynchronizeRequestBuilder.build(); if (rightDataSynchronizeRequest.isNotEmpty()) { leftDataSynchronizeService.prepareRequestOnOppositeDataSource(rightDataSynchronizeRequest); + rightDataSynchronizeService.prepareRequestOnDataSource(rightDataSynchronizeRequest); rightDataSynchronizeService.executeRequest(rightDataSynchronizeRequest); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java index 490eae0..4b457ef 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeDeleteTask.java @@ -8,7 +8,20 @@ package fr.ird.observe.services.service.actions.datasynchro; */ public class DataSynchronizeDeleteTask extends DataSyncrhonizeTaskSupport { + /** + * Contient le code sql de la copie de la marée. + */ + private byte[] dataContent; + public DataSynchronizeDeleteTask(String programId, String tripId) { super(programId, tripId); } + + public byte[] getDataContent() { + return dataContent; + } + + public void setDataContent(byte[] dataContent) { + this.dataContent = dataContent; + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java index 16cc43f..d5fd59d 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeRequest.java @@ -15,11 +15,15 @@ public class DataSynchronizeRequest { /** Logger. */ private static final Log log = LogFactory.getLog(DataSynchronizeRequest.class); - public static Builder builder(boolean oppositeH2) { - return new Builder(oppositeH2); + public static Builder builder(boolean h2, boolean oppositeH2) { + return new Builder(h2, oppositeH2); } /** + * Is data source use h2 ? + */ + private final boolean h2; + /** * Is opposite data source use h2 ? */ private final boolean oppositeH2; @@ -35,16 +39,18 @@ public class DataSynchronizeRequest { public static class Builder { + private final boolean h2; private final boolean oppositeH2; private final ImmutableSet.Builder<DataSynchronizeCopyTask> copyTasksBuilder = ImmutableSet.builder(); private final ImmutableSet.Builder<DataSynchronizeDeleteTask> deleteTasksBuilder = ImmutableSet.builder(); - public Builder(boolean oppositeH2) { + public Builder(boolean h2, boolean oppositeH2) { + this.h2 = h2; this.oppositeH2 = oppositeH2; } public DataSynchronizeRequest build() { - return new DataSynchronizeRequest(oppositeH2, copyTasksBuilder.build(), deleteTasksBuilder.build()); + return new DataSynchronizeRequest(h2, oppositeH2, copyTasksBuilder.build(), deleteTasksBuilder.build()); } public Builder addDeleteTask(DataSynchronizeDeleteTask deleteTask) { @@ -82,7 +88,12 @@ public class DataSynchronizeRequest { return oppositeH2; } - private DataSynchronizeRequest(boolean oppositeH2, ImmutableSet<DataSynchronizeCopyTask> copyTasks, ImmutableSet<DataSynchronizeDeleteTask> deleteTasks) { + public boolean isH2() { + return h2; + } + + private DataSynchronizeRequest(boolean h2, boolean oppositeH2, ImmutableSet<DataSynchronizeCopyTask> copyTasks, ImmutableSet<DataSynchronizeDeleteTask> deleteTasks) { + this.h2 = h2; this.oppositeH2 = oppositeH2; this.copyTasks = copyTasks; this.deleteTasks = deleteTasks; diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java index 1f15d58..34882b2 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeService.java @@ -26,6 +26,17 @@ public interface DataSynchronizeService extends ObserveService { void prepareRequestOnOppositeDataSource(DataSynchronizeRequest request); /** + * Prépare la demande donnée en paramètre. Par exemple s'il y a des demandes de suppression, on récupère le code sql de suppression. + * + * Cette méthode doit être executée sur la base cible. + * + * @param request la demande des tâches à préparer. + */ + @ReadDataPermission + @PostRequest + void prepareRequestOnDataSource(DataSynchronizeRequest request); + + /** * Exécution de la demande donnée en paramètre. * * Cette méthode doit être exécutée sur la base cible. diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java index 3dead6c..b4c6e4e 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/datasynchro/DataSynchronizeServiceTopia.java @@ -2,13 +2,10 @@ package fr.ird.observe.services.service.actions.datasynchro; import com.google.common.collect.ImmutableSet; import fr.ird.observe.entities.Entities; -import fr.ird.observe.entities.longline.TripLongline; -import fr.ird.observe.entities.longline.TripLonglineTopiaDao; -import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.entities.seine.TripSeineTopiaDao; import fr.ird.observe.services.ObserveServiceContextTopia; import fr.ird.observe.services.ObserveServiceTopia; -import fr.ird.observe.services.service.SqlScriptProducerRequest; +import fr.ird.observe.services.service.AddSqlScriptProducerRequest; +import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; import fr.ird.observe.services.service.SqlScriptProducerService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -38,19 +35,19 @@ public class DataSynchronizeServiceTopia extends ObserveServiceTopia implements for (DataSynchronizeCopyTask copyTask : request.getCopyTasks()) { if (log.isInfoEnabled()) { - log.info("Obtain trip sql content: " + copyTask.getProgramId() + " / " + copyTask.getTripId()); + log.info("Obtain trip sql copy content: " + copyTask.getProgramId() + " / " + copyTask.getTripId()); } // get the data content - SqlScriptProducerRequest sqlRequest; + AddSqlScriptProducerRequest sqlRequest; if (request.isOppositeH2()) { - sqlRequest = SqlScriptProducerRequest.forH2(); + sqlRequest = AddSqlScriptProducerRequest.forH2(); } else { - sqlRequest = SqlScriptProducerRequest.forPostgres(); + sqlRequest = AddSqlScriptProducerRequest.forPostgres(); } - sqlRequest.addDataIds(ImmutableSet.of(copyTask.getTripId())); - byte[] sqlScript = sqlScriptProducerService.produceSqlScript(sqlRequest); + sqlRequest.dataIdsToAdd(ImmutableSet.of(copyTask.getTripId())); + byte[] sqlScript = sqlScriptProducerService.produceAddSqlScript(sqlRequest); // store it in task copyTask.setDataContent(sqlScript); @@ -60,36 +57,52 @@ public class DataSynchronizeServiceTopia extends ObserveServiceTopia implements } @Override - public void executeRequest(DataSynchronizeRequest request) { - - TripSeineTopiaDao tripSeineDao = serviceContext.getTopiaPersistenceContext().getTripSeineDao(); - TripLonglineTopiaDao tripLonglineDao = serviceContext.getTopiaPersistenceContext().getTripLonglineDao(); + public void prepareRequestOnDataSource(DataSynchronizeRequest request) { for (DataSynchronizeDeleteTask deleteTask : request.getDeleteTasks()) { String tripId = deleteTask.getTripId(); boolean longlineId = Entities.isLonglineId(tripId); - if (longlineId) { + if (log.isInfoEnabled()) { + log.info("Obtain trip sql delete content: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); + } - if (log.isInfoEnabled()) { - log.info("Delete longline trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); - } - TripLongline tripLongline = tripLonglineDao.forTopiaIdEquals(tripId).findUnique(); - tripLonglineDao.delete(tripLongline); + // get the data content + DeleteSqlScriptProducerRequest sqlRequest; + if (request.isH2()) { + sqlRequest = DeleteSqlScriptProducerRequest.forH2(); } else { + sqlRequest = DeleteSqlScriptProducerRequest.forPostgres(); + } + sqlRequest.dataIdsToDelete(ImmutableSet.of(deleteTask.getTripId())); + byte[] sqlScript = sqlScriptProducerService.produceDeleteSqlScript(sqlRequest); + + // store it in task + deleteTask.setDataContent(sqlScript); + + } + } + + @Override + public void executeRequest(DataSynchronizeRequest request) { + + for (DataSynchronizeDeleteTask deleteTask : request.getDeleteTasks()) { - if (log.isInfoEnabled()) { - log.info("Delete seine trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); - } - TripSeine tripSeine = tripSeineDao.forTopiaIdEquals(tripId).findUnique(); - tripSeineDao.delete(tripSeine); + String tripId = deleteTask.getTripId(); + boolean longlineId = Entities.isLonglineId(tripId); + if (log.isInfoEnabled()) { + log.info("Delete trip: " + deleteTask.getProgramId() + " / " + deleteTask.getTripId()); } + serviceContext.getTopiaApplicationContext().executeSqlStatements(deleteTask.getDataContent()); } + // need to flush to make deletion complete, before to execute the copy sql script + serviceContext.getTopiaPersistenceContext().flush(); + for (DataSynchronizeCopyTask copyTask : request.getCopyTasks()) { if (log.isInfoEnabled()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm