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 f368cde85e5534eccd9dad896e4c100875fda39e Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 15:06:41 2016 +0200 Rendre la synchro de données utilisable en mode serveur --- .../synchronize/data/DataSynchroUIHandler.java | 12 +++--- .../data/DataSynchronizeServiceController.java | 12 +++--- .../synchro/data/DataSynchronizeService.java | 14 +++---- .../data/task/DataSynchronizeTaskSupport.java | 11 ------ .../synchro/data/DataSynchronizeServiceTopia.java | 44 ++++++++++------------ 5 files changed, 38 insertions(+), 55 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/data/DataSynchroUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/data/DataSynchroUIHandler.java index 36e1fa4..1c7157b 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/data/DataSynchroUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/data/DataSynchroUIHandler.java @@ -276,16 +276,16 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { DataSynchronizeRequest leftDataSynchronizeRequest = leftDataSynchronizeRequestBuilder.build(); if (leftDataSynchronizeRequest.isNotEmpty()) { - rightDataSynchronizeService.prepareRequestOnOppositeDataSource(leftDataSynchronizeRequest); - leftDataSynchronizeService.prepareRequestOnDataSource(leftDataSynchronizeRequest); - leftDataSynchronizeService.executeRequest(leftDataSynchronizeRequest); + byte[][] copySqlCodes = rightDataSynchronizeService.getCopySqlCodes(leftDataSynchronizeRequest); + byte[][] deleteSqlCodes = leftDataSynchronizeService.getDeleteSqlCodes(leftDataSynchronizeRequest); + leftDataSynchronizeService.executeRequest(copySqlCodes, deleteSqlCodes); } DataSynchronizeRequest rightDataSynchronizeRequest = rightDataSynchronizeRequestBuilder.build(); if (rightDataSynchronizeRequest.isNotEmpty()) { - leftDataSynchronizeService.prepareRequestOnOppositeDataSource(rightDataSynchronizeRequest); - rightDataSynchronizeService.prepareRequestOnDataSource(rightDataSynchronizeRequest); - rightDataSynchronizeService.executeRequest(rightDataSynchronizeRequest); + byte[][] copySqlCodes = leftDataSynchronizeService.getCopySqlCodes(rightDataSynchronizeRequest); + byte[][] deleteSqlCodes = rightDataSynchronizeService.getDeleteSqlCodes(rightDataSynchronizeRequest); + rightDataSynchronizeService.executeRequest(copySqlCodes, deleteSqlCodes); } getModel().setStepState(WizardState.SUCCESSED); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/data/DataSynchronizeServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/data/DataSynchronizeServiceController.java index 82ea702..3b7f1a4 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/data/DataSynchronizeServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/data/DataSynchronizeServiceController.java @@ -16,17 +16,17 @@ public class DataSynchronizeServiceController extends ObserveAuthenticatedServic } @Override - public void prepareRequestOnOppositeDataSource(DataSynchronizeRequest request) { - service.prepareRequestOnOppositeDataSource(request); + public byte[][] getCopySqlCodes(DataSynchronizeRequest request) { + return service.getCopySqlCodes(request); } @Override - public void prepareRequestOnDataSource(DataSynchronizeRequest request) { - service.prepareRequestOnDataSource(request); + public byte[][] getDeleteSqlCodes(DataSynchronizeRequest request) { + return service.getDeleteSqlCodes(request); } @Override - public void executeRequest(DataSynchronizeRequest request) { - service.executeRequest(request); + public void executeRequest(byte[][] copySqlCodes, byte[][] deleteSqlCodes) { + service.executeRequest(copySqlCodes, deleteSqlCodes); } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeService.java index ba500a3..5a9fc17 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeService.java @@ -15,7 +15,7 @@ import fr.ird.observe.services.spi.WriteDataPermission; public interface DataSynchronizeService extends ObserveService { /** - * Prépare la demande donnée en paramètre. Par exemple s'il y a des demandes de recopie, on récupère le code sql de recopie. + * Récupération du code sql de recopie. * * Cette méthode doit être executée sur la base opposée. * @@ -23,10 +23,10 @@ public interface DataSynchronizeService extends ObserveService { */ @ReadDataPermission @PostRequest - void prepareRequestOnOppositeDataSource(DataSynchronizeRequest request); + byte[][] getCopySqlCodes(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. + * Récupération du code sql de suppression. * * Cette méthode doit être executée sur la base cible. * @@ -34,19 +34,19 @@ public interface DataSynchronizeService extends ObserveService { */ @ReadDataPermission @PostRequest - void prepareRequestOnDataSource(DataSynchronizeRequest request); + byte[][] getDeleteSqlCodes(DataSynchronizeRequest request); /** * Exécution de la demande donnée en paramètre. * * Cette méthode doit être exécutée sur la base cible. - * - * @param request la demande des tâches à réaliser. + * @param copySqlCodes les codes sql de recopie + * @param deleteSqlCodes les codes sql de suppression */ @ReadDataPermission @WriteDataPermission @Write @PostRequest - void executeRequest(DataSynchronizeRequest request); + void executeRequest(byte[][] copySqlCodes, byte[][] deleteSqlCodes); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java index 018147e..7f5bb14 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/data/task/DataSynchronizeTaskSupport.java @@ -16,10 +16,6 @@ public abstract class DataSynchronizeTaskSupport { * Identifiant de la marée. */ private final String tripId; - /** - * Contient le code sql de la tâche. - */ - private byte[] dataContent; protected DataSynchronizeTaskSupport(String programId, String tripId) { this.programId = programId; @@ -34,11 +30,4 @@ public abstract class DataSynchronizeTaskSupport { return tripId; } - public byte[] getDataContent() { - return dataContent; - } - - public void setDataContent(byte[] dataContent) { - this.dataContent = dataContent; - } } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeServiceTopia.java index 5f577c7..ed2c4b4 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/data/DataSynchronizeServiceTopia.java @@ -12,6 +12,9 @@ import fr.ird.observe.services.service.actions.synchro.data.task.DataSynchronize import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.Collection; +import java.util.LinkedHashSet; + /** * Created on 08/08/16. * @@ -32,7 +35,9 @@ public class DataSynchronizeServiceTopia extends ObserveServiceTopia implements } @Override - public void prepareRequestOnOppositeDataSource(DataSynchronizeRequest request) { + public byte[][] getCopySqlCodes(DataSynchronizeRequest request) { + + Collection<byte[]> sqlCodeBuilder = new LinkedHashSet<>(); for (DataSynchronizeCopyTask task : request.getCopyTasks()) { @@ -51,16 +56,18 @@ public class DataSynchronizeServiceTopia extends ObserveServiceTopia implements sqlRequest.dataIdsToAdd(ImmutableSet.of(task.getTripId())); byte[] sqlScript = sqlScriptProducerService.produceAddSqlScript(sqlRequest); - // store it in task - task.setDataContent(sqlScript); + sqlCodeBuilder.add(sqlScript); } + return sqlCodeBuilder.toArray(new byte[sqlCodeBuilder.size()][]); + } @Override - public void prepareRequestOnDataSource(DataSynchronizeRequest request) { + public byte[][] getDeleteSqlCodes(DataSynchronizeRequest request) { + Collection<byte[]> sqlCodeBuilder = new LinkedHashSet<>(); for (DataSynchronizeDeleteTask task : request.getDeleteTasks()) { String tripId = task.getTripId(); @@ -81,34 +88,21 @@ public class DataSynchronizeServiceTopia extends ObserveServiceTopia implements sqlRequest.dataIdsToDelete(ImmutableSet.of(task.getTripId())); byte[] sqlScript = sqlScriptProducerService.produceDeleteSqlScript(sqlRequest); - // store it in task - task.setDataContent(sqlScript); + sqlCodeBuilder.add(sqlScript); } + + return sqlCodeBuilder.toArray(new byte[sqlCodeBuilder.size()][]); } @Override - public void executeRequest(DataSynchronizeRequest request) { - - for (DataSynchronizeDeleteTask task : request.getDeleteTasks()) { - - String tripId = task.getTripId(); - boolean longlineId = Entities.isLonglineId(tripId); + public void executeRequest(byte[][] copySqlCodes, byte[][] deleteSqlCodes) { - if (log.isInfoEnabled()) { - log.info("Delete trip: " + task.getProgramId() + " / " + task.getTripId()); - } - serviceContext.getTopiaApplicationContext().executeSqlStatements(task.getDataContent()); + byte[][] sqlCodes = new byte[copySqlCodes.length + deleteSqlCodes.length][]; + System.arraycopy(copySqlCodes, 0, sqlCodes, 0, copySqlCodes.length); + System.arraycopy(deleteSqlCodes, 0, sqlCodes, copySqlCodes.length, deleteSqlCodes.length); - } - - for (DataSynchronizeCopyTask task : request.getCopyTasks()) { + serviceContext.getTopiaPersistenceContext().executeSqlScripts(sqlCodes); - if (log.isInfoEnabled()) { - log.info("Copy trip: " + task.getProgramId() + " / " + task.getTripId()); - } - serviceContext.getTopiaApplicationContext().executeSqlStatements(task.getDataContent()); - - } } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.