This is an automated email from the git hooks/post-receive script. New change to branch feature/4309_synchro_referential in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from 89a4ea3 alignement du service pour les taches sql à generer new 9e5da6e Pouvoir récupérer une liste d'entities à partir de leur ids + pouvoir executer plusieurs scripts dans une même transaction new cb580be Utilisation d'un paquetage commun pour la génération des requetes sql dans les deux synchro référentiel new 72dbb37 pass on topai to fix a bug new 7232f0f Ajout du moteur de synchro bi-di new dc4a198 Intégration dans les ui de la synchro bidi + un peu de nettoyage par ci par là new e16f107 Ajout d'un FIXME à corriger plus tard... new d78eefa Bien enlever la référence à remplacer de la liste des choix possibles The 7 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 d78eefa42aa2ca4a752e145b4d20d7405d610426 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:52:54 2016 +0200 Bien enlever la référence à remplacer de la liste des choix possibles commit e16f10755a2bfaacde631c0a01b99cf590809125 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:31:56 2016 +0200 Ajout d'un FIXME à corriger plus tard... commit dc4a1987ac3c677ff98bc4d88f7adc141cd77a07 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:28:27 2016 +0200 Intégration dans les ui de la synchro bidi + un peu de nettoyage par ci par là commit 7232f0f32d2e0d7a55eddffd62f901ec21f5f853 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:28:21 2016 +0200 Ajout du moteur de synchro bi-di commit 72dbb374a8785f6b9bafcfe83afb8b3722d54733 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:28:14 2016 +0200 pass on topai to fix a bug commit cb580be20be8e240c02580cc16f686224de9c825 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 commit 9e5da6e908762661ba83304118a75afdd46aa178 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 09:59:33 2016 +0200 Pouvoir récupérer une liste d'entities à partir de leur ids + pouvoir executer plusieurs scripts dans une même transaction Summary of changes: .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 6 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 28 +-- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 1 - .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 103 +++------ .../observe/ui/admin/export/ExportUIHandler.java | 2 +- .../observe/ui/admin/report/ReportUIHandler.java | 15 +- .../ird/observe/ui/admin/resume/ShowResumeUI.jaxx | 3 +- .../ui/admin/resume/ShowResumeUIHandler.java | 3 + .../ng/ReferentialReplaceUIHandler.java | 11 +- .../referential/ng/ReferentialSynchroModel.java | 7 + .../ng/ReferentialSynchronizeResources.java | 14 ++ ...ReferentialSynchronizeTaskListCellRenderer.java | 2 +- .../ng/ReferentialSynchronizeTaskListModel.java | 9 +- .../referential/ng/action/ApplyAction.java | 109 ++++------ .../ng/action/RegisterAddTaskAction.java | 12 +- .../ng/action/RegisterCopyTaskAction.java | 7 +- .../ng/action/RegisterDeleteTaskAction.java | 1 + .../ng/action/RegisterDesactivateTaskAction.java | 1 + .../ng/action/RegisterRevertTaskAction.java | 1 + .../ng/action/RegisterSkipTaskAction.java | 1 + .../ng/action/RegisterTasksActionSupport.java | 11 +- .../ng/action/RegisterUpdateTaskAction.java | 12 +- ...ask.java => AddReferentialSynchronizeTask.java} | 4 +- .../ng/task/ReferentialSynchronizeTaskSupport.java | 24 ++- ...ferentialSynchronizeTaskWithReplaceSupport.java | 9 +- .../ng/task/SkipReferentialSynchronizeTask.java | 5 + ....java => UpdateReferentialSynchronizeTask.java} | 4 +- .../ng/tree/ReferentialSynchronizeTreeModel.java | 13 +- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../observe/ui/content/ref/ContentReferenceUI.jaxx | 1 + .../observe/ui/content/ref/ContentReferenceUI.jcss | 1 + .../ui/content/ref/ContentReferenceUIHandler.java | 25 ++- .../fr/ird/observe/ui/storage/StorageUIModel.java | 23 +- .../observe-application-swing_fr_FR.properties | 28 +-- .../ReferentialSynchronizeServiceController.java | 14 +- .../observe/ObserveTopiaPersistenceContext.java | 5 + .../java/fr/ird/observe/RunScriptTopiaSqlWork.java | 79 ++++--- .../fr/ird/observe/RunScriptsTopiaSqlWork.java | 37 +++- .../ng/ReferentialSynchronizeRequest.java | 178 +++++----------- .../ng/ReferentialSynchronizeService.java | 31 +-- .../ng/ReferentialSynchronizeServiceEngine.java | 36 ++++ ...entialSynchronizeServiceProduceSqlsRequest.java | 64 ++++++ ...rentialSynchronizeServiceProduceSqlsResult.java | 26 +++ .../ng/ReferentialSynchronizeSqlsRequest.java | 101 +++++++++ .../ng/task/ReferentialSynchronizeAddTask.java | 17 -- .../ng/task/ReferentialSynchronizeDeleteTask.java | 24 --- .../ReferentialSynchronizeDesactivateTask.java | 24 --- .../ng/task/ReferentialSynchronizeRevertTask.java | 17 -- .../ng/task/ReferentialSynchronizeTask.java | 37 ++++ .../ng/task/ReferentialSynchronizeTaskSupport.java | 38 ---- .../ng/task/ReferentialSynchronizeTaskType.java | 26 +++ .../ng/task/ReferentialSynchronizeUpdateTask.java | 17 -- .../ird/observe/services/ObserveServiceTopia.java | 7 + ...nalReferentialSynchronizeLocalServiceTopia.java | 39 +--- .../ng/ReferentialSynchronizeServiceTopia.java | 138 ++---------- .../ReferentialSynchronizeSqlsRequestBuilder.java | 234 +++++++++++++++++++++ .../referential/sql/ApplySqlRequestWork.java | 44 ++++ .../DeleteSqlStatementGenerator.java | 5 +- .../DesactivateSqlStatementGenerator.java} | 29 +-- .../InsertSqlStatementGenerator.java | 2 +- .../ReplaceSqlStatementGenerator.java | 5 +- .../UpdateSqlStatementGenerator.java | 2 +- pom.xml | 2 +- 63 files changed, 1004 insertions(+), 772 deletions(-) rename observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/{AddToReferentialSynchronizeTask.java => AddReferentialSynchronizeTask.java} (68%) rename observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/{UpdateToReferentialSynchronizeTask.java => UpdateReferentialSynchronizeTask.java} (68%) copy observe-services-topia/src/main/java/fr/ird/observe/services/binder/ReferenceBinderEngineSupplierTopia.java => observe-entities/src/main/java/fr/ird/observe/RunScriptsTopiaSqlWork.java (50%) create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceEngine.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceProduceSqlsRequest.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceProduceSqlsResult.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequest.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeAddTask.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeDeleteTask.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeDesactivateTask.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeRevertTask.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTask.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTaskSupport.java create mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTaskType.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeUpdateTask.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequestBuilder.java create mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/ApplySqlRequestWork.java copy observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/{legacy => sql}/DeleteSqlStatementGenerator.java (93%) rename observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/{legacy/DeleteSqlStatementGenerator.java => sql/DesactivateSqlStatementGenerator.java} (60%) rename observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/{legacy => sql}/InsertSqlStatementGenerator.java (99%) rename observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/{legacy => sql}/ReplaceSqlStatementGenerator.java (97%) rename observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/{legacy => sql}/UpdateSqlStatementGenerator.java (99%) -- 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/4309_synchro_referential in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 9e5da6e908762661ba83304118a75afdd46aa178 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 09:59:33 2016 +0200 Pouvoir récupérer une liste d'entities à partir de leur ids + pouvoir executer plusieurs scripts dans une même transaction --- .../observe/ObserveTopiaPersistenceContext.java | 5 ++ .../java/fr/ird/observe/RunScriptTopiaSqlWork.java | 79 ++++++++++++---------- .../fr/ird/observe/RunScriptsTopiaSqlWork.java | 59 ++++++++++++++++ .../ird/observe/services/ObserveServiceTopia.java | 7 ++ .../referential/sql/ApplySqlRequestWork.java | 44 ++++++++++++ 5 files changed, 160 insertions(+), 34 deletions(-) diff --git a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaPersistenceContext.java b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaPersistenceContext.java index 6ca60d4..abd3f83 100644 --- a/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaPersistenceContext.java +++ b/observe-entities/src/main/java/fr/ird/observe/ObserveTopiaPersistenceContext.java @@ -150,4 +150,9 @@ public class ObserveTopiaPersistenceContext extends AbstractObserveTopiaPersiste getSqlSupport().doSqlWork(new RunScriptTopiaSqlWork(1000, content)); } + + public void executeSqlScripts(byte[]... contents) { + + getSqlSupport().doSqlWork(new RunScriptsTopiaSqlWork(1000, contents)); + } } 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 aa63ad4..eed97d7 100644 --- a/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java +++ b/observe-entities/src/main/java/fr/ird/observe/RunScriptTopiaSqlWork.java @@ -54,12 +54,18 @@ public class RunScriptTopiaSqlWork implements TopiaSqlWork { protected final boolean gzip; protected final int batchSize; - public RunScriptTopiaSqlWork(int batchSize, byte[] content) throws IOException { + public RunScriptTopiaSqlWork(int batchSize, byte[] content) { this.batchSize = batchSize; this.content = content; - try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content)) { - gzip = GZUtil.isGzipStream(byteArrayInputStream); + if (content == null || content.length == 0) { + gzip = false; + } else { + try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content)) { + gzip = GZUtil.isGzipStream(byteArrayInputStream); + } catch (IOException e) { + throw new TopiaException(e); + } } } @@ -70,49 +76,54 @@ public class RunScriptTopiaSqlWork implements TopiaSqlWork { try { connection.setAutoCommit(false); - try (BufferedReader reader = createReader()) { - try (Statement statement = connection.createStatement()) { + execute0(connection); + } finally { + connection.setAutoCommit(autoCommit); + } + } - int batchSize = 0; - String command = null; - String next; - while ((next = reader.readLine()) != null) { + protected void execute0(Connection connection) throws SQLException { + try (BufferedReader reader = createReader()) { - String trimLine = next.trim(); + try (Statement statement = connection.createStatement()) { - if (trimLine.startsWith("--")) { - continue; - } + int batchSize = 0; + String command = null; + String next; + while ((next = reader.readLine()) != null) { - if (command == null) { - command = next; - } else { - command += ' ' + next; - } - if (trimLine.endsWith(";")) { - statement.addBatch(command); - if (log.isDebugEnabled()) { - log.debug("Sql statement: " + command); - } - batchSize++; - command = null; - - if (batchSize % this.batchSize == 0) { - flushStatement(statement); - } + String trimLine = next.trim(); + + if (trimLine.startsWith("--")) { + continue; + } + + if (command == null) { + command = next; + } else { + command += ' ' + next; + } + if (trimLine.endsWith(";")) { + statement.addBatch(command); + if (log.isDebugEnabled()) { + log.debug("Sql statement: " + command); } + batchSize++; + command = null; + if (batchSize % this.batchSize == 0) { + flushStatement(statement); + } } - flushStatement(statement); } - } catch (IOException e) { - throw new TopiaException(e); + flushStatement(statement); } - } finally { - connection.setAutoCommit(autoCommit); + + } catch (IOException e) { + throw new TopiaException(e); } } diff --git a/observe-entities/src/main/java/fr/ird/observe/RunScriptsTopiaSqlWork.java b/observe-entities/src/main/java/fr/ird/observe/RunScriptsTopiaSqlWork.java new file mode 100644 index 0000000..a0ef1bc --- /dev/null +++ b/observe-entities/src/main/java/fr/ird/observe/RunScriptsTopiaSqlWork.java @@ -0,0 +1,59 @@ +package fr.ird.observe; + +/*- + * #%L + * ObServe :: Entities + * %% + * Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.sql.Connection; +import java.sql.SQLException; + +/** + * TODO Move this in ToPIA. + * + * Created on 09/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RunScriptsTopiaSqlWork extends RunScriptTopiaSqlWork { + + /** Logger. */ + private static final Log log = LogFactory.getLog(RunScriptsTopiaSqlWork.class); + + protected final byte[][] contents; + + public RunScriptsTopiaSqlWork(int batchSize, byte[][] contents) { + super(batchSize, null); + this.contents = contents; + } + + @Override + protected void execute0(Connection connection) throws SQLException { + + for (byte[] content : contents) { + new RunScriptTopiaSqlWork(batchSize, content).execute0(connection); + } + + } + +} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java index 3646444..ccce727 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveServiceTopia.java @@ -53,6 +53,7 @@ import org.nuiton.topia.persistence.TopiaNoResultException; import java.sql.Blob; import java.sql.SQLException; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Locale; @@ -133,6 +134,12 @@ public abstract class ObserveServiceTopia implements ObserveService { List<E> entities = dao.findAll(); return entities; } + public <E extends ObserveEntity> List<E> loadEntities(Class<E> entityType, Collection<String> ids) { + ObserveTopiaPersistenceContext persistenceContext = getTopiaPersistenceContext(); + TopiaDao<E> dao = persistenceContext.getDao(entityType); + List<E> entities = dao.forTopiaIdIn(ids).findAll(); + return entities; + } protected <E extends ObserveEntity> Optional<Date> getLastUpdate(Class<E> entityType) { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/ApplySqlRequestWork.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/ApplySqlRequestWork.java new file mode 100644 index 0000000..3c32d62 --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/ApplySqlRequestWork.java @@ -0,0 +1,44 @@ +package fr.ird.observe.services.service.actions.synchro.referential.sql; + +import org.nuiton.topia.persistence.support.TopiaSqlWork; + +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; + +/** + * Created on 14/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ApplySqlRequestWork implements TopiaSqlWork { + + private static final int BATCH_SIZE = 100; + + private final Iterable<String> sqlRequests; + + public ApplySqlRequestWork(Iterable<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(); + } +} -- 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/4309_synchro_referential in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit cb580be20be8e240c02580cc16f686224de9c825 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>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/4309_synchro_referential in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 72dbb374a8785f6b9bafcfe83afb8b3722d54733 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:28:14 2016 +0200 pass on topai to fix a bug --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3732cec..93067d8 100644 --- a/pom.xml +++ b/pom.xml @@ -126,7 +126,7 @@ <eugenePluginVersion>3.0-alpha-5</eugenePluginVersion> <processorPluginVersion>1.3</processorPluginVersion> - <topiaVersion>3.1.2</topiaVersion> + <topiaVersion>3.1.3-SNAPSHOT</topiaVersion> <jaxxVersion>2.30.1</jaxxVersion> <nuitonI18nVersion>3.5</nuitonI18nVersion> <nuitonValidatorVersion>3.0.1</nuitonValidatorVersion> -- 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/4309_synchro_referential in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 7232f0f32d2e0d7a55eddffd62f901ec21f5f853 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:28:21 2016 +0200 Ajout du moteur de synchro bi-di --- .../ReferentialSynchronizeServiceController.java | 14 +- .../ng/ReferentialSynchronizeRequest.java | 178 +++++----------- .../ng/ReferentialSynchronizeService.java | 31 +-- .../ng/ReferentialSynchronizeServiceEngine.java | 36 ++++ ...entialSynchronizeServiceProduceSqlsRequest.java | 64 ++++++ ...rentialSynchronizeServiceProduceSqlsResult.java | 26 +++ .../ng/ReferentialSynchronizeSqlsRequest.java | 101 +++++++++ .../ng/task/ReferentialSynchronizeAddTask.java | 17 -- .../ng/task/ReferentialSynchronizeDeleteTask.java | 24 --- .../ReferentialSynchronizeDesactivateTask.java | 24 --- .../ng/task/ReferentialSynchronizeRevertTask.java | 17 -- .../ng/task/ReferentialSynchronizeTask.java | 37 ++++ .../ng/task/ReferentialSynchronizeTaskSupport.java | 38 ---- .../ng/task/ReferentialSynchronizeTaskType.java | 26 +++ .../ng/task/ReferentialSynchronizeUpdateTask.java | 17 -- .../ng/ReferentialSynchronizeServiceTopia.java | 138 ++---------- .../ReferentialSynchronizeSqlsRequestBuilder.java | 234 +++++++++++++++++++++ 17 files changed, 608 insertions(+), 414 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/ng/ReferentialSynchronizeServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/ng/ReferentialSynchronizeServiceController.java index b523601..bc1c876 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/ng/ReferentialSynchronizeServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/ng/ReferentialSynchronizeServiceController.java @@ -3,6 +3,7 @@ package fr.ird.observe.application.web.controller.v1.actions.synchro.referential import fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeRequest; import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeService; +import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeSqlsRequest; /** * Created on 09/08/16. @@ -16,17 +17,12 @@ public class ReferentialSynchronizeServiceController extends ObserveAuthenticate } @Override - public void prepareRequestOnOppositeDataSource(ReferentialSynchronizeRequest request) { - service.prepareRequestOnOppositeDataSource(request); + public ReferentialSynchronizeSqlsRequest produceSqlsRequest(ReferentialSynchronizeRequest request) { + return service.produceSqlsRequest(request); } @Override - public void prepareRequestOnDataSource(ReferentialSynchronizeRequest request) { - service.prepareRequestOnDataSource(request); - } - - @Override - public void executeRequest(ReferentialSynchronizeRequest request) { - service.executeRequest(request); + public void executeSqlsRequests(ReferentialSynchronizeSqlsRequest localSqlsRequest, ReferentialSynchronizeSqlsRequest oppositeSqlsRequest) { + service.executeSqlsRequests(localSqlsRequest, oppositeSqlsRequest); } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeRequest.java index 3ddcb8a..c8ea1aa 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeRequest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeRequest.java @@ -1,16 +1,16 @@ package fr.ird.observe.services.service.actions.synchro.referential.ng; +import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableSet; 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.ng.task.ReferentialSynchronizeAddTask; -import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeDeleteTask; -import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeDesactivateTask; -import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeRevertTask; -import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeUpdateTask; +import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeTask; +import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeTaskType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.Set; +import java.util.stream.Collectors; + /** * Created on 08/08/16. * @@ -22,145 +22,73 @@ public class ReferentialSynchronizeRequest { /** Logger. */ private static final Log log = LogFactory.getLog(ReferentialSynchronizeRequest.class); - 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; - /** - * Add tasks. - */ - private final ImmutableSet<ReferentialSynchronizeAddTask> addTasks; - /** - * Update tasks. - */ - private final ImmutableSet<ReferentialSynchronizeUpdateTask> updateTasks; - /** - * Revert tasks. - */ - private final ImmutableSet<ReferentialSynchronizeRevertTask> revertTasks; - /** - * Delete tasks. - */ - private final ImmutableSet<ReferentialSynchronizeDeleteTask> deleteTasks; - /** - * Desactivate tasks. - */ - private final ImmutableSet<ReferentialSynchronizeDesactivateTask> desactivateTasks; - - public static class Builder { - - private final boolean h2; - private final boolean oppositeH2; - private final ImmutableSet.Builder<ReferentialSynchronizeAddTask> addTasksBuilder = ImmutableSet.builder(); - private final ImmutableSet.Builder<ReferentialSynchronizeUpdateTask> updateTasksBuilder = ImmutableSet.builder(); - private final ImmutableSet.Builder<ReferentialSynchronizeRevertTask> revertTasksBuilder = ImmutableSet.builder(); - private final ImmutableSet.Builder<ReferentialSynchronizeDeleteTask> deleteTasksBuilder = ImmutableSet.builder(); - private final ImmutableSet.Builder<ReferentialSynchronizeDesactivateTask> desactivateTasksBuilder = ImmutableSet.builder(); - - public Builder(boolean h2, boolean oppositeH2) { - this.h2 = h2; - this.oppositeH2 = oppositeH2; - } - - public ReferentialSynchronizeRequest build() { - return new ReferentialSynchronizeRequest(h2, oppositeH2, addTasksBuilder.build(), updateTasksBuilder.build(), revertTasksBuilder.build(), deleteTasksBuilder.build(), desactivateTasksBuilder.build()); - } - - public <R extends ReferentialDto> Builder addDeleteTask(ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { - - if (log.isInfoEnabled()) { - log.info("Add delete task for data: " + reference.getType().getName() + " / " + reference.getId()); - } - deleteTasksBuilder.add(new ReferentialSynchronizeDeleteTask<>(reference, replaceReference)); - return this; - } - - public <R extends ReferentialDto> Builder addDesactivateTask(ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { - - if (log.isInfoEnabled()) { - log.info("Add desactivate (without replacement) task for data: " + reference.getType().getName() + " / " + reference.getId()); - } - desactivateTasksBuilder.add(new ReferentialSynchronizeDesactivateTask<>(reference, replaceReference)); - return this; - } - - public <R extends ReferentialDto> Builder addAddTask(ReferentialReference<R> reference) { - if (log.isInfoEnabled()) { - log.info("Add add task for trip: " + reference.getType().getName() + " / " + reference.getId()); - } - addTasksBuilder.add(new ReferentialSynchronizeAddTask<>(reference)); - return this; - } + private final ImmutableMultimap<ReferentialSynchronizeTaskType, ReferentialSynchronizeTask<?>> tasks; + private final ImmutableSet<Class<? extends ReferentialDto>> types; - public <R extends ReferentialDto> Builder addUpdateTask(ReferentialReference<R> reference) { - if (log.isInfoEnabled()) { - log.info("Add update task for trip: " + reference.getType().getName() + " / " + reference.getId()); - } - updateTasksBuilder.add(new ReferentialSynchronizeUpdateTask<>(reference)); - return this; - } + private ReferentialSynchronizeRequest(ImmutableMultimap<ReferentialSynchronizeTaskType, ReferentialSynchronizeTask<?>> tasks, + ImmutableSet<Class<? extends ReferentialDto>> types) { + this.tasks = tasks; + this.types = types; + } - public <R extends ReferentialDto> Builder addRevertTask(ReferentialReference<R> reference) { - if (log.isInfoEnabled()) { - log.info("Add revert task for trip: " + reference.getType().getName() + " / " + reference.getId()); - } - revertTasksBuilder.add(new ReferentialSynchronizeRevertTask<>(reference)); - return this; - } + public static Builder builder() { + return new Builder(); + } + public boolean isNotEmpty() { + return !tasks.isEmpty(); } - public ImmutableSet<ReferentialSynchronizeAddTask> getAddTasks() { - return addTasks; + public ImmutableMultimap<ReferentialSynchronizeTaskType, ReferentialSynchronizeTask<?>> getTasks() { + return tasks; } - public ImmutableSet<ReferentialSynchronizeUpdateTask> getUpdateTasks() { - return updateTasks; + public <R extends ReferentialDto> Set<ReferentialSynchronizeTask<R>> getAddTasks(Class<R> referentialName) { + return getTasks0(ReferentialSynchronizeTaskType.ADD, referentialName); } - public ImmutableSet<ReferentialSynchronizeRevertTask> getRevertTasks() { - return revertTasks; + public <R extends ReferentialDto> Set<ReferentialSynchronizeTask<R>> getUpdateTasks(Class<R> referentialName) { + return getTasks0(ReferentialSynchronizeTaskType.UPDATE, referentialName); } - public ImmutableSet<ReferentialSynchronizeDeleteTask> getDeleteTasks() { - return deleteTasks; + public <R extends ReferentialDto> Set<ReferentialSynchronizeTask<R>> getRevertTasks(Class<R> referentialName) { + return getTasks0(ReferentialSynchronizeTaskType.REVERT, referentialName); } - public ImmutableSet<ReferentialSynchronizeDesactivateTask> getDesactivateTasks() { - return desactivateTasks; + public <R extends ReferentialDto> Set<ReferentialSynchronizeTask<R>> getDesactivateTasks(Class<R> referentialName) { + return getTasks0(ReferentialSynchronizeTaskType.DESACTIVATE, referentialName); } - public boolean isNotEmpty() { - return !(addTasks.isEmpty() && updateTasks.isEmpty() && revertTasks.isEmpty() && deleteTasks.isEmpty() && desactivateTasks.isEmpty()); + public <R extends ReferentialDto> Set<ReferentialSynchronizeTask<R>> getDeleteTasks(Class<R> referentialName) { + return getTasks0(ReferentialSynchronizeTaskType.DELETE, referentialName); } - public boolean isOppositeH2() { - return oppositeH2; + public ImmutableSet<Class<? extends ReferentialDto>> getTypes() { + return types; } - public boolean isH2() { - return h2; + private <R extends ReferentialDto> Set<ReferentialSynchronizeTask<R>> getTasks0(ReferentialSynchronizeTaskType type, Class<R> referentialName) { + Set<ReferentialSynchronizeTask<?>> collect = tasks.get(type).stream().filter(t -> referentialName.equals(t.getReferentialType())).collect(Collectors.toSet()); + return (Set) collect; } - private ReferentialSynchronizeRequest(boolean h2, boolean oppositeH2, - ImmutableSet<ReferentialSynchronizeAddTask> addTasks, - ImmutableSet<ReferentialSynchronizeUpdateTask> updateTasks, - ImmutableSet<ReferentialSynchronizeRevertTask> revertTasks, ImmutableSet<ReferentialSynchronizeDeleteTask> deleteTasks, - ImmutableSet<ReferentialSynchronizeDesactivateTask> desactivateTasks) { - this.h2 = h2; - this.oppositeH2 = oppositeH2; - this.addTasks = addTasks; - this.updateTasks = updateTasks; - this.revertTasks = revertTasks; - this.deleteTasks = deleteTasks; - this.desactivateTasks = desactivateTasks; + public static class Builder { + + private final ImmutableMultimap.Builder<ReferentialSynchronizeTaskType, ReferentialSynchronizeTask<?>> tasksBuilder = ImmutableMultimap.builder(); + private final ImmutableSet.Builder<Class<? extends ReferentialDto>> typesBuilder = ImmutableSet.builder(); + + public ReferentialSynchronizeRequest build() { + return new ReferentialSynchronizeRequest(tasksBuilder.build(), typesBuilder.build()); + } + + public <R extends ReferentialDto> Builder addTask(ReferentialSynchronizeTaskType taskType, Class<R> type, String referentialId, String replaceReferentialId) { + if (log.isInfoEnabled()) { + log.info("Add " + taskType + " task: " + type.getName() + " / " + referentialId); + } + tasksBuilder.put(taskType, new ReferentialSynchronizeTask<>(type, referentialId, replaceReferentialId)); + typesBuilder.add(type); + return this; + } + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeService.java index f84279a..b8064d5 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeService.java @@ -3,6 +3,7 @@ package fr.ird.observe.services.service.actions.synchro.referential.ng; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; +import fr.ird.observe.services.spi.ReadReferentialPermission; import fr.ird.observe.services.spi.Write; import fr.ird.observe.services.spi.WriteDataPermission; @@ -14,39 +15,15 @@ import fr.ird.observe.services.spi.WriteDataPermission; */ public interface ReferentialSynchronizeService 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. - * - * Cette méthode doit être executée sur la base opposée. - * - * @param request la demande des tâches à préparer. - */ + @ReadReferentialPermission @ReadDataPermission @PostRequest - void prepareRequestOnOppositeDataSource(ReferentialSynchronizeRequest request); + ReferentialSynchronizeSqlsRequest produceSqlsRequest(ReferentialSynchronizeRequest 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(ReferentialSynchronizeRequest 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. - */ @ReadDataPermission @WriteDataPermission @Write @PostRequest - void executeRequest(ReferentialSynchronizeRequest request); + void executeSqlsRequests(ReferentialSynchronizeSqlsRequest localSqlsRequest, ReferentialSynchronizeSqlsRequest oppositeSqlsRequest); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceEngine.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceEngine.java new file mode 100644 index 0000000..f3df603 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceEngine.java @@ -0,0 +1,36 @@ +package fr.ird.observe.services.service.actions.synchro.referential.ng; + +/** + * Created on 14/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class ReferentialSynchronizeServiceEngine { + + private final ReferentialSynchronizeService leftService; + private final ReferentialSynchronizeService rightService; + + public ReferentialSynchronizeServiceEngine(ReferentialSynchronizeService leftService, ReferentialSynchronizeService rightService) { + this.leftService = leftService; + this.rightService = rightService; + } + + public ReferentialSynchronizeServiceProduceSqlsResult produceSqlsRequests(ReferentialSynchronizeServiceProduceSqlsRequest produceSqlsRequests) { + + ReferentialSynchronizeSqlsRequest leftSqlsRequest = leftService.produceSqlsRequest(produceSqlsRequests.getLeftRequest()); + ReferentialSynchronizeSqlsRequest rightSqlsRequest = rightService.produceSqlsRequest(produceSqlsRequests.getRightRequest()); + + return new ReferentialSynchronizeServiceProduceSqlsResult(leftSqlsRequest, rightSqlsRequest); + + } + + public void executeSqlRequests(ReferentialSynchronizeServiceProduceSqlsResult sqlsRequests) { + + ReferentialSynchronizeSqlsRequest leftSqlsRequest = sqlsRequests.getLeftRequest(); + ReferentialSynchronizeSqlsRequest rightSqlsRequest = sqlsRequests.getRightRequest(); + leftService.executeSqlsRequests(leftSqlsRequest, rightSqlsRequest); + rightService.executeSqlsRequests(rightSqlsRequest, leftSqlsRequest); + + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceProduceSqlsRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceProduceSqlsRequest.java new file mode 100644 index 0000000..92e7ef8 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceProduceSqlsRequest.java @@ -0,0 +1,64 @@ +package fr.ird.observe.services.service.actions.synchro.referential.ng; + +import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeTaskType; + +/** + * Created on 15/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ReferentialSynchronizeServiceProduceSqlsRequest { + + protected final ReferentialSynchronizeRequest leftRequest; + protected final ReferentialSynchronizeRequest rightRequest; + + private ReferentialSynchronizeServiceProduceSqlsRequest(ReferentialSynchronizeRequest leftRequest, ReferentialSynchronizeRequest rightRequest) { + this.leftRequest = leftRequest; + this.rightRequest = rightRequest; + } + + public static Builder builder() { + return new Builder(); + } + + public ReferentialSynchronizeRequest getLeftRequest() { + return leftRequest; + } + + public ReferentialSynchronizeRequest getRightRequest() { + return rightRequest; + } + + public static class Builder { + + private final ReferentialSynchronizeRequest.Builder leftRequestBuilder; + private final ReferentialSynchronizeRequest.Builder rightRequestBuilder; + + private Builder() { + leftRequestBuilder = ReferentialSynchronizeRequest.builder(); + rightRequestBuilder = ReferentialSynchronizeRequest.builder(); + } + + public ReferentialSynchronizeServiceProduceSqlsRequest build() { + + return new ReferentialSynchronizeServiceProduceSqlsRequest(leftRequestBuilder.build(), + rightRequestBuilder.build()); + + } + + public <R extends ReferentialDto> Builder addTask(boolean left, + ReferentialSynchronizeTaskType taskType, + Class<R> type, + String id, + String replaceId) { + getRequestBuilder(left).addTask(taskType, type, id, replaceId); + return this; + } + + private ReferentialSynchronizeRequest.Builder getRequestBuilder(boolean left) { + return left ? leftRequestBuilder : rightRequestBuilder; + } + + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceProduceSqlsResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceProduceSqlsResult.java new file mode 100644 index 0000000..e495f4f --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceProduceSqlsResult.java @@ -0,0 +1,26 @@ +package fr.ird.observe.services.service.actions.synchro.referential.ng; + +/** + * Created on 15/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ReferentialSynchronizeServiceProduceSqlsResult { + + protected final ReferentialSynchronizeSqlsRequest leftRequest; + protected final ReferentialSynchronizeSqlsRequest rightRequest; + + public ReferentialSynchronizeServiceProduceSqlsResult(ReferentialSynchronizeSqlsRequest leftRequest, ReferentialSynchronizeSqlsRequest rightRequest) { + this.leftRequest = leftRequest; + this.rightRequest = rightRequest; + } + + public ReferentialSynchronizeSqlsRequest getLeftRequest() { + return leftRequest; + } + + public ReferentialSynchronizeSqlsRequest getRightRequest() { + return rightRequest; + } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequest.java new file mode 100644 index 0000000..b3ac9b9 --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequest.java @@ -0,0 +1,101 @@ +package fr.ird.observe.services.service.actions.synchro.referential.ng; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Created on 08/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class ReferentialSynchronizeSqlsRequest { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ReferentialSynchronizeSqlsRequest.class); + + private final byte[] insertSqlCode; + private final byte[] updateSqlCode; + private final byte[] deleteSqlCode; + private final byte[] desactivateSqlCode; + + private ReferentialSynchronizeSqlsRequest(String insertSqlCode, + String updateSqlCode, + String deleteSqlCode, + String desactivateSqlCode) { + this.insertSqlCode = insertSqlCode.getBytes(); + this.updateSqlCode = updateSqlCode.getBytes(); + this.deleteSqlCode = deleteSqlCode.getBytes(); + this.desactivateSqlCode = desactivateSqlCode.getBytes(); + } + + public static Builder builder() { + return new Builder(); + } + + public byte[] getInsertSqlCode() { + return insertSqlCode; + } + + public byte[] getUpdateSqlCode() { + return updateSqlCode; + } + + public byte[] getDeleteSqlCode() { + return deleteSqlCode; + } + + public byte[] getDesactivateSqlCode() { + return desactivateSqlCode; + } + + public static class Builder { + + private final StringBuilder addTasksBuilder = new StringBuilder(); + private final StringBuilder updateTasksBuilder = new StringBuilder(); + private final StringBuilder deleteTasksBuilder = new StringBuilder(); + private final StringBuilder desactivateTasksBuilder = new StringBuilder(); + + public ReferentialSynchronizeSqlsRequest build() { + return new ReferentialSynchronizeSqlsRequest(addTasksBuilder.toString(), + updateTasksBuilder.toString(), + deleteTasksBuilder.toString(), + desactivateTasksBuilder.toString()); + } + + public Builder addInsertStatement(String sql) { + if (log.isInfoEnabled()) { + log.info("Add add sql: " + sql); + } + addTasksBuilder.append(sql); + return this; + } + + public Builder addUpdateStatement(String sql) { + if (log.isInfoEnabled()) { + log.info("Add update sql: " + sql); + } + updateTasksBuilder.append(sql); + return this; + } + + public Builder addDeleteStatement(String sql) { + + if (log.isInfoEnabled()) { + log.info("Add delete sql: " + sql); + } + deleteTasksBuilder.append(sql); + return this; + } + + public Builder addDesactivateStatement(String sql) { + + if (log.isInfoEnabled()) { + log.info("Add desactivate sql: " + sql); + } + desactivateTasksBuilder.append(sql); + return this; + } + + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeAddTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeAddTask.java deleted file mode 100644 index 030877b..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeAddTask.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.ng.task; - -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ReferentialSynchronizeAddTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { - - public ReferentialSynchronizeAddTask(ReferentialReference<R> reference) { - super(reference); - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeDeleteTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeDeleteTask.java deleted file mode 100644 index 4d1d5a2..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeDeleteTask.java +++ /dev/null @@ -1,24 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.ng.task; - -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ReferentialSynchronizeDeleteTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { - - private final ReferentialReference<R> replaceReference; - - public ReferentialSynchronizeDeleteTask(ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { - super(reference); - this.replaceReference = replaceReference; - } - - public ReferentialReference<R> getReplaceReference() { - return replaceReference; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeDesactivateTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeDesactivateTask.java deleted file mode 100644 index 4c44ad1..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeDesactivateTask.java +++ /dev/null @@ -1,24 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.ng.task; - -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ReferentialSynchronizeDesactivateTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { - - private final ReferentialReference<R> replaceReference; - - public ReferentialSynchronizeDesactivateTask(ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { - super(reference); - this.replaceReference = replaceReference; - } - - public ReferentialReference<R> getReplaceReference() { - return replaceReference; - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeRevertTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeRevertTask.java deleted file mode 100644 index 7510e5e..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeRevertTask.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.ng.task; - -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ReferentialSynchronizeRevertTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { - - public ReferentialSynchronizeRevertTask(ReferentialReference<R> reference) { - super(reference); - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTask.java new file mode 100644 index 0000000..1f409bf --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTask.java @@ -0,0 +1,37 @@ +package fr.ird.observe.services.service.actions.synchro.referential.ng.task; + +import fr.ird.observe.services.dto.referential.ReferentialDto; + +import java.util.Optional; + +/** + * Created on 14/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public class ReferentialSynchronizeTask<R extends ReferentialDto> { + + private final Class<R> referentialType; + private final String referentialId; + private final String replaceReferentialId; + + public ReferentialSynchronizeTask(Class<R> referentialName, String referentialId, String replaceReferenceId) { + this.referentialType = referentialName; + this.referentialId = referentialId; + this.replaceReferentialId = replaceReferenceId; + } + + public Class<R> getReferentialType() { + return referentialType; + } + + public String getReferentialId() { + return referentialId; + } + + public Optional<String> getOptionalReplaceReferentialId() { + return Optional.ofNullable(replaceReferentialId); + } + +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTaskSupport.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTaskSupport.java deleted file mode 100644 index a9f3e8d..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTaskSupport.java +++ /dev/null @@ -1,38 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.ng.task; - -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public abstract class ReferentialSynchronizeTaskSupport<R extends ReferentialDto> { - - private final Class<R> referentialType; - private final String referentialId; - private byte[] dataContent; - - protected ReferentialSynchronizeTaskSupport(ReferentialReference<R> reference) { - this.referentialType = reference.getType(); - this.referentialId = reference.getId(); - } - - public Class<R> getReferentialType() { - return referentialType; - } - - public String getReferentialId() { - return referentialId; - } - - 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/synchro/referential/ng/task/ReferentialSynchronizeTaskType.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTaskType.java new file mode 100644 index 0000000..549fa2c --- /dev/null +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeTaskType.java @@ -0,0 +1,26 @@ +package fr.ird.observe.services.service.actions.synchro.referential.ng.task; + +/** + * Created on 14/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 + */ +public enum ReferentialSynchronizeTaskType { + + ADD(false), + UPDATE(false), + REVERT(false), + DELETE(true), + DESACTIVATE(true); + + private final boolean withReplace; + + ReferentialSynchronizeTaskType(boolean withReplace) { + this.withReplace = withReplace; + } + + public boolean withReplace() { + return withReplace; + } +} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeUpdateTask.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeUpdateTask.java deleted file mode 100644 index 67397ca..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/task/ReferentialSynchronizeUpdateTask.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.ng.task; - -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReference; - -/** - * Created on 08/08/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class ReferentialSynchronizeUpdateTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { - - public ReferentialSynchronizeUpdateTask(ReferentialReference<R> reference) { - super(reference); - } -} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceTopia.java index f736624..ad21b82 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeServiceTopia.java @@ -1,18 +1,10 @@ package fr.ird.observe.services.service.actions.synchro.referential.ng; -import com.google.common.collect.ImmutableSet; -import fr.ird.observe.entities.Entities; import fr.ird.observe.services.ObserveServiceContextTopia; import fr.ird.observe.services.ObserveServiceTopia; -import fr.ird.observe.services.service.AddSqlScriptProducerRequest; -import fr.ird.observe.services.service.DeleteSqlScriptProducerRequest; -import fr.ird.observe.services.service.SqlScriptProducerService; -import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeAddTask; -import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeDeleteTask; -import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeDesactivateTask; -import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeUpdateTask; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.util.TimeLog; /** * Created on 08/08/16. @@ -24,135 +16,49 @@ public class ReferentialSynchronizeServiceTopia extends ObserveServiceTopia impl /** Logger. */ private static final Log log = LogFactory.getLog(ReferentialSynchronizeServiceTopia.class); - - protected SqlScriptProducerService sqlScriptProducerService; + private static final TimeLog timeLog = new TimeLog(ReferentialSynchronizeServiceTopia.class); @Override public void setServiceContext(ObserveServiceContextTopia serviceContext) { super.setServiceContext(serviceContext); - sqlScriptProducerService = serviceContext.newService(SqlScriptProducerService.class); } @Override - public void prepareRequestOnOppositeDataSource(ReferentialSynchronizeRequest request) { - - for (ReferentialSynchronizeAddTask copyTask : request.getAddTasks()) { - - if (log.isInfoEnabled()) { - log.info("Obtain add data sql copy content: " + copyTask.getReferentialType().getName() + " / " + copyTask.getReferentialId()); - } - - // get the data content - - AddSqlScriptProducerRequest sqlRequest; - if (request.isOppositeH2()) { - sqlRequest = AddSqlScriptProducerRequest.forH2(); - } else { - sqlRequest = AddSqlScriptProducerRequest.forPostgres(); - } - sqlRequest.dataIdsToAdd(ImmutableSet.of(copyTask.getReferentialId())); - byte[] sqlScript = sqlScriptProducerService.produceAddSqlScript(sqlRequest); + public ReferentialSynchronizeSqlsRequest produceSqlsRequest(ReferentialSynchronizeRequest request) { - // store it in task - copyTask.setDataContent(sqlScript); + long startTime = TimeLog.getTime(); + if (log.isTraceEnabled()) { + log.trace("produceSqlsRequest(" + request + ")"); } + ReferentialSynchronizeSqlsRequest result = ReferentialSynchronizeSqlsRequestBuilder + .builder(this, serviceContext.getTopiaApplicationContext().getMetadataModel(), request) + .build(); - for (ReferentialSynchronizeUpdateTask copyTask : request.getUpdateTasks()) { - - if (log.isInfoEnabled()) { - log.info("Obtain update data sql copy content: " + copyTask.getReferentialType().getName() + " / " + copyTask.getReferentialId()); - } - - // get the data content - - AddSqlScriptProducerRequest sqlRequest; - if (request.isOppositeH2()) { - sqlRequest = AddSqlScriptProducerRequest.forH2(); - } else { - sqlRequest = AddSqlScriptProducerRequest.forPostgres(); - } - sqlRequest.dataIdsToAdd(ImmutableSet.of(copyTask.getReferentialId())); - byte[] sqlScript = sqlScriptProducerService.produceAddSqlScript(sqlRequest); - - // store it in task - copyTask.setDataContent(sqlScript); - - } - - } - - @Override - public void prepareRequestOnDataSource(ReferentialSynchronizeRequest request) { - - for (ReferentialSynchronizeDeleteTask deleteTask : request.getDeleteTasks()) { - - String tripId = deleteTask.getReferentialId(); - boolean longlineId = Entities.isLonglineId(tripId); + timeLog.log(startTime, "produceSqlsRequest"); + return result; - if (log.isInfoEnabled()) { - log.info("Obtain trip sql delete content: " + deleteTask.getReferentialType().getName() + " / " + deleteTask.getReferentialId()); - } - - // get the data content - - DeleteSqlScriptProducerRequest sqlRequest; - if (request.isH2()) { - sqlRequest = DeleteSqlScriptProducerRequest.forH2(); - } else { - sqlRequest = DeleteSqlScriptProducerRequest.forPostgres(); - } - sqlRequest.dataIdsToDelete(ImmutableSet.of(deleteTask.getReferentialId())); - byte[] sqlScript = sqlScriptProducerService.produceDeleteSqlScript(sqlRequest); - - // store it in task - deleteTask.setDataContent(sqlScript); - - } } @Override - public void executeRequest(ReferentialSynchronizeRequest request) { + public void executeSqlsRequests(ReferentialSynchronizeSqlsRequest request, ReferentialSynchronizeSqlsRequest oppositeSqlsRequest) { - for (ReferentialSynchronizeDeleteTask task : request.getDeleteTasks()) { - - String tripId = task.getReferentialId(); - boolean longlineId = Entities.isLonglineId(tripId); - - if (log.isInfoEnabled()) { - log.info("Delete data: " + task.getReferentialType().getName() + " / " + task.getReferentialId()); - } - serviceContext.getTopiaApplicationContext().executeSqlStatements(task.getDataContent()); + long startTime = TimeLog.getTime(); + if (log.isTraceEnabled()) { + log.trace("executeSqlsRequests(" + request + ")"); } - for (ReferentialSynchronizeAddTask task : request.getAddTasks()) { + byte[] insertSqlCode = oppositeSqlsRequest.getInsertSqlCode(); + byte[] updateSqlCode = oppositeSqlsRequest.getUpdateSqlCode(); + byte[] deleteSqlCode = request.getDeleteSqlCode(); + byte[] desactivateSqlCode = request.getDesactivateSqlCode(); - if (log.isInfoEnabled()) { - log.info("Add data: " + task.getReferentialType().getName() + " / " + task.getReferentialId()); - } - serviceContext.getTopiaApplicationContext().executeSqlStatements(task.getDataContent()); - - } + getTopiaPersistenceContext().executeSqlScripts(insertSqlCode, updateSqlCode, desactivateSqlCode, deleteSqlCode); - for (ReferentialSynchronizeUpdateTask task : request.getUpdateTasks()) { - - if (log.isInfoEnabled()) { - log.info("Update data: " + task.getReferentialType().getName() + " / " + task.getReferentialId()); - } - serviceContext.getTopiaApplicationContext().executeSqlStatements(task.getDataContent()); - - } - - for (ReferentialSynchronizeDesactivateTask task : request.getDesactivateTasks()) { - - if (log.isInfoEnabled()) { - log.info("Desactivate data (without replacement) : " + task.getReferentialType().getName() + " / " + task.getReferentialId()); - } - serviceContext.getTopiaApplicationContext().executeSqlStatements(task.getDataContent()); - - } + timeLog.log(startTime, "produceSqlsRequest"); } + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequestBuilder.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequestBuilder.java new file mode 100644 index 0000000..1de4f5a --- /dev/null +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/ng/ReferentialSynchronizeSqlsRequestBuilder.java @@ -0,0 +1,234 @@ +package fr.ird.observe.services.service.actions.synchro.referential.ng; + +import fr.ird.observe.ObserveEntityEnum; +import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; +import fr.ird.observe.services.binder.BinderEngine; +import fr.ird.observe.services.binder.referential.ReferentialBinderSupport; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeTask; +import fr.ird.observe.services.service.actions.synchro.referential.sql.DeleteSqlStatementGenerator; +import fr.ird.observe.services.service.actions.synchro.referential.sql.DesactivateSqlStatementGenerator; +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.metadata.TopiaMetadataEntity; +import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; + +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Created on 14/08/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ReferentialSynchronizeSqlsRequestBuilder { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ReferentialSynchronizeSqlsRequestBuilder.class); + + private final BinderEngine binderEngine; + private final ReferentialSynchronizeServiceTopia service; + private final ReferentialLocale referentialLocale; + private final TopiaMetadataModel metadataModel; + private final ReferentialSynchronizeRequest request; + private final ReferentialSynchronizeSqlsRequest.Builder resultBuilder; + + private ReferentialSynchronizeSqlsRequestBuilder(ReferentialSynchronizeServiceTopia service, + TopiaMetadataModel metadataModel, + ReferentialSynchronizeRequest request) { + this.metadataModel = metadataModel; + this.request = request; + this.binderEngine = BinderEngine.get(); + this.service = service; + this.referentialLocale = service.getReferentialLocale(); + this.resultBuilder = new ReferentialSynchronizeSqlsRequest.Builder(); + } + + public static ReferentialSynchronizeSqlsRequestBuilder builder(ReferentialSynchronizeServiceTopia service, + TopiaMetadataModel metadataModel, + ReferentialSynchronizeRequest request) { + + return new ReferentialSynchronizeSqlsRequestBuilder(service, metadataModel, request); + } + + public ReferentialSynchronizeSqlsRequest build() { + + request.getTypes().forEach(this::build0); + return resultBuilder.build(); + + } + + private <R extends ReferentialDto, E extends ObserveReferentialEntity> void build0(Class<R> type) { + + Class<E> entityType = binderEngine.getReferentialEntityType(type); + ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(entityType); + String referentialName = entityEnum.name(); + + Set<ReferentialSynchronizeTask<R>> addTasks = request.getAddTasks(type); + if (log.isInfoEnabled()) { + log.info("Add: " + addTasks.size()); + } + onAdd(referentialName, type, addTasks); + + Set<ReferentialSynchronizeTask<R>> updateTasks = request.getUpdateTasks(type); + if (log.isInfoEnabled()) { + log.info("Update: " + updateTasks.size()); + } + onUpdate(referentialName, type, updateTasks); + + Set<ReferentialSynchronizeTask<R>> revertTasks = request.getRevertTasks(type); + if (log.isInfoEnabled()) { + log.info("Revert: " + revertTasks.size()); + } + onRevert(referentialName, type, revertTasks); + + Set<ReferentialSynchronizeTask<R>> deleteTasks = request.getDeleteTasks(type); + if (log.isInfoEnabled()) { + log.info("Delete: " + deleteTasks.size()); + } + onDelete(referentialName, type, deleteTasks); + + Set<ReferentialSynchronizeTask<R>> desactivateTasks = request.getDesactivateTasks(type); + if (log.isInfoEnabled()) { + log.info("Desactivate: " + desactivateTasks.size()); + } + onDesactivate(referentialName, type, desactivateTasks); + + } + + private <R extends ReferentialDto, E extends ObserveReferentialEntity> void onAdd(String referentialName, Class<R> type, Set<ReferentialSynchronizeTask<R>> tasks) { + + ReferentialBinderSupport<E, R> binder = binderEngine.getReferentialBinder(type); + Class<E> entityType = binderEngine.getReferentialEntityType(type); + TopiaMetadataEntity metadata = metadataModel.getEntity(referentialName); + InsertSqlStatementGenerator<R> insertGenerator = new InsertSqlStatementGenerator<>(metadata, type); + List<E> insertEntities = loadEntities(entityType, tasks); + for (E entity : insertEntities) { + R referential = binder.toDto(referentialLocale, entity); + String sql = insertGenerator.generateSql(referential); + + if (log.isInfoEnabled()) { + log.info("Insert referential: " + type.getName() + " / " + referential.getId() + " -- " + sql); + } + resultBuilder.addInsertStatement(sql); + } + + } + + private <R extends ReferentialDto, E extends ObserveReferentialEntity> void onUpdate(String referentialName, Class<R> type, Set<ReferentialSynchronizeTask<R>> tasks) { + + ReferentialBinderSupport<E, R> binder = binderEngine.getReferentialBinder(type); + TopiaMetadataEntity metadata = metadataModel.getEntity(referentialName); + Class<E> entityType = binderEngine.getReferentialEntityType(type); + + UpdateSqlStatementGenerator<R> updateGenerator = new UpdateSqlStatementGenerator<>(metadata, type); + List<E> updateEntities = loadEntities(entityType, tasks); + for (E entity : updateEntities) { + R referential = binder.toDto(referentialLocale, entity); + String sql = updateGenerator.generateSql(referential); + + if (log.isInfoEnabled()) { + log.info("Update referential: " + type.getName() + " / " + referential.getId() + " -- " + sql); + } + resultBuilder.addUpdateStatement(sql); + } + + } + + private <R extends ReferentialDto, E extends ObserveReferentialEntity> void onRevert(String referentialName, Class<R> type, Set<ReferentialSynchronizeTask<R>> tasks) { + + ReferentialBinderSupport<E, R> binder = binderEngine.getReferentialBinder(type); + TopiaMetadataEntity metadata = metadataModel.getEntity(referentialName); + Class<E> entityType = binderEngine.getReferentialEntityType(type); + + UpdateSqlStatementGenerator<R> updateGenerator = new UpdateSqlStatementGenerator<>(metadata, type); + List<E> updateEntities = loadEntities(entityType, tasks); + for (E entity : updateEntities) { + R referential = binder.toDto(referentialLocale, entity); + String sql = updateGenerator.generateSql(referential); + + if (log.isInfoEnabled()) { + log.info("Revert referential: " + type.getName() + " / " + referential.getId() + " -- " + sql); + } + resultBuilder.addUpdateStatement(sql); + } + + } + + private <R extends ReferentialDto, E extends ObserveReferentialEntity> void onDelete(String referentialName, Class<R> type, Set<ReferentialSynchronizeTask<R>> tasks) { + + TopiaMetadataEntity metadata = metadataModel.getEntity(referentialName); + + ReplaceSqlStatementGenerator<R> replaceGenerator = new ReplaceSqlStatementGenerator<>(metadataModel, referentialName); + DeleteSqlStatementGenerator<R> deleteGenerator = new DeleteSqlStatementGenerator<>(metadata); + + for (ReferentialSynchronizeTask<R> task : tasks) { + + String referentialId = task.getReferentialId(); + Optional<String> replaceReferentialId = task.getOptionalReplaceReferentialId(); + if (replaceReferentialId.isPresent()) { + String sql = computeReplaceRequestSql(type, replaceGenerator, referentialId, replaceReferentialId.get()); + resultBuilder.addDeleteStatement(sql); + } + String sql = deleteGenerator.generateSql(referentialId); + + if (log.isInfoEnabled()) { + log.info("Delete referential: " + type.getName() + " / " + referentialId + " -- " + sql); + } + resultBuilder.addDeleteStatement(sql); + } + + } + + private <R extends ReferentialDto, E extends ObserveReferentialEntity> void onDesactivate(String referentialName, + Class<R> type, + Set<ReferentialSynchronizeTask<R>> tasks) { + + TopiaMetadataEntity metadata = metadataModel.getEntity(referentialName); + + ReplaceSqlStatementGenerator<R> replaceGenerator = new ReplaceSqlStatementGenerator<>(metadataModel, referentialName); + DesactivateSqlStatementGenerator<R> desactivateGenerator = new DesactivateSqlStatementGenerator<>(metadata); + + for (ReferentialSynchronizeTask<R> task : tasks) { + String referentialId = task.getReferentialId(); + Optional<String> replaceReferentialId = task.getOptionalReplaceReferentialId(); + if (replaceReferentialId.isPresent()) { + String sql = computeReplaceRequestSql(type, replaceGenerator, referentialId, replaceReferentialId.get()); + resultBuilder.addDesactivateStatement(sql); + } + String sql = desactivateGenerator.generateSql(referentialId); + + if (log.isInfoEnabled()) { + log.info("Desactivate referential: " + type.getName() + " / " + referentialId + " -- " + sql); + } + resultBuilder.addDesactivateStatement(sql); + } + + } + + private <R extends ReferentialDto, E extends ObserveReferentialEntity> String computeReplaceRequestSql(Class<R> type, ReplaceSqlStatementGenerator replaceSqlStatementGenerator, String referentialId, String replaceReferentialId) { + + String sql = replaceSqlStatementGenerator.generateSql(referentialId, replaceReferentialId); + + if (log.isInfoEnabled()) { + log.info("Replace referential: " + type.getName() + " / " + referentialId + " -- " + sql); + } + + return sql; + + } + + private <R extends ReferentialDto, E extends ObserveReferentialEntity> List<E> loadEntities(Class<E> entityType, Set<ReferentialSynchronizeTask<R>> tasks) { + + Set<String> ids = tasks.stream().map(ReferentialSynchronizeTask::getReferentialId).collect(Collectors.toSet()); + return service.loadEntities(entityType, ids); + + } + +} -- 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/4309_synchro_referential in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit dc4a1987ac3c677ff98bc4d88f7adc141cd77a07 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:28:27 2016 +0200 Intégration dans les ui de la synchro bidi + un peu de nettoyage par ci par là --- .../java/fr/ird/observe/ui/admin/AdminTabUI.jaxx | 6 +- .../fr/ird/observe/ui/admin/AdminTabUIHandler.java | 28 +----- .../fr/ird/observe/ui/admin/AdminUILauncher.java | 1 - .../java/fr/ird/observe/ui/admin/AdminUIModel.java | 103 +++++++------------ .../observe/ui/admin/export/ExportUIHandler.java | 2 +- .../observe/ui/admin/report/ReportUIHandler.java | 15 +-- .../ird/observe/ui/admin/resume/ShowResumeUI.jaxx | 3 +- .../ui/admin/resume/ShowResumeUIHandler.java | 3 + .../referential/ng/ReferentialSynchroModel.java | 7 ++ .../ng/ReferentialSynchronizeResources.java | 14 +++ ...ReferentialSynchronizeTaskListCellRenderer.java | 2 +- .../ng/ReferentialSynchronizeTaskListModel.java | 9 +- .../referential/ng/action/ApplyAction.java | 109 +++++++-------------- .../ng/action/RegisterAddTaskAction.java | 12 ++- .../ng/action/RegisterCopyTaskAction.java | 7 +- .../ng/action/RegisterDeleteTaskAction.java | 1 + .../ng/action/RegisterDesactivateTaskAction.java | 1 + .../ng/action/RegisterRevertTaskAction.java | 1 + .../ng/action/RegisterSkipTaskAction.java | 1 + .../ng/action/RegisterTasksActionSupport.java | 11 +-- .../ng/action/RegisterUpdateTaskAction.java | 12 ++- ...ask.java => AddReferentialSynchronizeTask.java} | 4 +- .../ng/task/ReferentialSynchronizeTaskSupport.java | 24 ++++- ...ferentialSynchronizeTaskWithReplaceSupport.java | 9 +- .../ng/task/SkipReferentialSynchronizeTask.java | 5 + ....java => UpdateReferentialSynchronizeTask.java} | 4 +- .../ng/tree/ReferentialSynchronizeTreeModel.java | 13 ++- .../ui/admin/validate/ValidateUIHandler.java | 2 +- .../observe/ui/content/ref/ContentReferenceUI.jaxx | 1 + .../observe/ui/content/ref/ContentReferenceUI.jcss | 1 + .../ui/content/ref/ContentReferenceUIHandler.java | 24 ++++- .../fr/ird/observe/ui/storage/StorageUIModel.java | 23 +---- .../observe-application-swing_fr_FR.properties | 28 +++--- 33 files changed, 228 insertions(+), 258 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx index 9fe5019..3019162 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUI.jaxx @@ -82,13 +82,11 @@ protected void finalize() throws Throwable { @Override public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName().equals("message") && step == model.getStep()) { - getHandler().writeMessage(this, (String) evt.getNewValue()); - } + //propertyChange.super(evt); } public void addMessage(AdminStep step, String text) { - progression.append(text+"\n"); + getHandler().addMessage(step, text); } public void updateState(WizardState newState) { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java index 154dba5..1be451a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminTabUIHandler.java @@ -86,15 +86,6 @@ public class AdminTabUIHandler { return decoratorService; } - protected ObserveSwingDataSource getSource() { - - ObserveSwingDataSource source = model.getTmpSource(); - if (source == null) { - source = model.getSafeLocalSource(false); - } - return source; - } - public final WizardState onCancel(Exception e) { if (log.isDebugEnabled()) { log.debug(this, e); @@ -167,11 +158,8 @@ public class AdminTabUIHandler { } } - public void sendMessage(String msg) { - ui.firePropertyChange("message", null, msg); - } + public void sendMessage(String message) { - public void writeMessage(AdminTabUI ui, String message) { AdminStep step = ui.getStep(); ui.addMessage(step, message); ShowResumeUI resumeUI = (ShowResumeUI) parentUI.getStepUI(AdminStep.SHOW_RESUME); @@ -208,22 +196,13 @@ public class AdminTabUIHandler { } } - protected ObserveSwingDataSource getSource(AdminUIModel model) { - - ObserveSwingDataSource source = model.getTmpSource(); - if (source == null) { - source = model.getSafeLocalSource(false); - } - return source; - } - protected void openSource(ObserveSwingDataSource service) throws DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException, BabModelVersionException { if (!service.isOpen()) { service.open(); } } - protected void addAdminWorker(String label, Callable<WizardState> callable) { + public void addAdminWorker(String label, Callable<WizardState> callable) { AdminActionWorker worker = AdminActionWorker.newWorker(this, label, callable); ObserveRunner.getActionExecutor().addAction(worker); } @@ -257,4 +236,7 @@ public class AdminTabUIHandler { selectionModel.initUI(selectTree); } + public void addMessage(AdminStep step, String text) { + ui.getProgression().append(text + "\n"); + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java index fd52ee0..437053f 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/AdminUILauncher.java @@ -223,7 +223,6 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad try { - model.doCloseSource(model.getTmpSource(), false); model.doCloseSource(model.getCentralSource(), false); model.doCloseSource(model.getLocalSource(), false); 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 2a6065d..cbf214d 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 @@ -65,6 +65,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.border.TitledBorder; +import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; @@ -85,16 +86,15 @@ import static org.nuiton.i18n.I18n.t; */ public class AdminUIModel extends WizardExtModel<AdminStep> { - public static final String SHOW_RESUME_PROPERTY_NAME = "showResume"; - - public static final String NEED_LOCAL_SOURCE_PROPERTY_NAME = "needLocalSource"; - public static final String SELECTION_MODEL_CHANGED_PROPERTY_NAME = "selectionModelChanged"; public static final String SELECTED_TRIP_PROPERTY_NAME = "selectedTrip"; /** Logger */ private static final Log log = LogFactory.getLog(AdminUIModel.class); + + public static final PropertyChangeListener LOG_PROPERTY_CHANGE_LISTENER = new LogPropertyChanged(); + public static final String PROPERTY_LOCAL_SOURCE_LABEL = "localSourceLabel"; public static final String PROPERTY_CENTRAL_SOURCE_LABEL = "centralSourceLabel"; @@ -110,9 +110,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { /** la source de données dite central (contenant le référentiel valide) */ protected ObserveSwingDataSource centralSource; - /** la source de données temporaire */ - protected ObserveSwingDataSource tmpSource; - /** la configuration de la base source */ protected final StorageUIModel localSourceModel; @@ -255,7 +252,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { validate(); - return; } }; @@ -309,17 +305,14 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return; } - if (AdminStep.CONFIG == oldStep) { + if (AdminStep.CONFIG == oldStep && WizardState.PENDING == getStepState()) { if (AdminStep.DATA_SYNCHRONIZE == newStep) { setBusy(true); - try { - //FIXME-release Supprimer ce code et remettre le code dans AdminUIHandler qui fait ça en lazy initSynchroDataUI(); - } finally { setBusy(false); } @@ -331,19 +324,13 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (AdminStep.REFERENTIAL_SYNCHRONIZE == newStep) { setBusy(true); - try { - //FIXME-release Supprimer ce code et remettre le code dans AdminUIHandler qui fait ça en lazy initSynchroReferentialUI(); - } finally { - setBusy(false); - } - return; } @@ -374,9 +361,9 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } // on remplit le modèle de sélection -// if (log.isDebugEnabled()) { -// log.debug("Will refill selectionModel [" + newStep + "] : " + selectModel); -// } + if (log.isDebugEnabled()) { + log.debug("Will refill selectionModel [" + newStep + "] : " + selectModel); + } ObserveSwingDataSource dataSource = getSafeLocalSource(true); populateSelectionModel(dataSource); }; @@ -758,15 +745,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { centralSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { - centralSourceModel.addPropertyChangeListener(evt -> { - String name = evt.getPropertyName(); - Object oldValue = evt.getOldValue(); - Object newValue = evt.getNewValue(); - if (log.isDebugEnabled()) { - log.debug(evt.getSource() + " - Property [" + name + "] has changed from " + oldValue + " to " + newValue); - } - - }); + centralSourceModel.removePropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); + centralSourceModel.addPropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); } // on teste si la connexion distante existe @@ -971,10 +951,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return centralSource; } - public ObserveSwingDataSource getTmpSource() { - return tmpSource; - } - public ObserveSwingDataSource getSafeLocalSource(boolean open) { if (localSource == null || open && !localSource.isOpen()) { @@ -998,16 +974,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return centralSource; } - public ObserveSwingDataSource getSafeTmpSource(boolean open) { - if (tmpSource == null) { - tmpSource = ObserveSwingApplicationContext.get().createTemporaryH2Storage(n("observe.storage.label.synchro")); - if (open) { - doOpenSource(tmpSource); - } - } - return tmpSource; - } - public StorageUIModel getLocalSourceModel() { return localSourceModel; } @@ -1219,12 +1185,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { DbMode dbMode = localSourceModel.getDbMode(); if (dbMode == centralSourceModel.getDbMode()) { if (dbMode == DbMode.USE_REMOTE) { - validate &= !localSourceModel.getPgConfig().getJdbcUrl().equals(centralSourceModel.getPgConfig().getJdbcUrl()); - } else { - - // pour le moment ce cas n'est pas possible - // la base de référence est obligatoirement une base distante //FIXME + validate = !localSourceModel.getPgConfig().getJdbcUrl().equals(centralSourceModel.getPgConfig().getJdbcUrl()); } } @@ -1256,12 +1218,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { DbMode dbMode = localSourceModel.getDbMode(); if (dbMode == centralSourceModel.getDbMode()) { if (dbMode == DbMode.USE_REMOTE) { - validate &= !localSourceModel.getPgConfig().getJdbcUrl().equals(centralSourceModel.getPgConfig().getJdbcUrl()); - } else { - - // pour le moment ce cas n'est pas possible - // la base de référence est obligatoirement une base distante //FIXME + validate = !localSourceModel.getPgConfig().getJdbcUrl().equals(centralSourceModel.getPgConfig().getJdbcUrl()); } } @@ -1298,10 +1256,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (dbMode == centralSourceModel.getDbMode()) { if (dbMode == DbMode.USE_REMOTE) { validate &= !localSourceModel.getPgConfig().getJdbcUrl().equals(centralSourceModel.getPgConfig().getJdbcUrl()); - } else { - - // pour le moment ce cas n'est pas possible - // la base de référence est obligatoirement une base distante } } // validate &= centralSourceModel.isValid(); @@ -1328,12 +1282,12 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (containsOperation(AdminStep.VALIDATE)) { // la config doit etre ok - validate &= validate(AdminStep.CONFIG); + validate = validate(AdminStep.CONFIG); if (validate) { // il faut au moins une donnee de selectionnee boolean empty = selectionModel.isEmpty(); - validate &= !empty; + validate = !empty; } } if (containsOperation(AdminStep.EXPORT_DATA)) { @@ -1344,7 +1298,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // il faut au moins une donnee de selectionnee boolean empty = selectionModel.isDataEmpty(); - validate &= !empty; + validate = !empty; } } if (containsOperation(AdminStep.CONSOLIDATE)) { @@ -1355,7 +1309,7 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // il faut au moins une donnee de selectionnee boolean empty = selectionModel.isDataEmpty(); - validate &= !empty; + validate = !empty; } } if (containsOperation(AdminStep.REPORT)) { @@ -1366,35 +1320,35 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // il faut exactement une Trip de selectionnee boolean empty = selectionModel.isDataEmpty(); - validate &= !empty && + validate = !empty && selectionModel.getSelectedData().size() == 1; } } break; case VALIDATE: - validate &= validate(AdminStep.SELECT_DATA) && + validate = validate(AdminStep.SELECT_DATA) && getStepState(step) == WizardState.SUCCESSED; break; case EXPORT_DATA: - validate &= validate(AdminStep.SELECT_DATA) && + validate = validate(AdminStep.SELECT_DATA) && getStepState(step) == WizardState.SUCCESSED; break; case CONSOLIDATE: - validate &= validate(AdminStep.SELECT_DATA) && + validate = validate(AdminStep.SELECT_DATA) && getStepState(step) == WizardState.SUCCESSED; break; case REPORT: // pour acceder a l'onglet des report, il faut que // l'onglet de sélection des données soit ok - validate &= validate(AdminStep.SELECT_DATA); + validate = validate(AdminStep.SELECT_DATA); break; case SYNCHRONIZE: validate = getStepState(step) == WizardState.SUCCESSED; break; case SAVE_LOCAL: // valide si l'action a ete executee avec success - validate &= !getSaveLocalModel().isDoBackup() || + validate = !getSaveLocalModel().isDoBackup() || getStepState(step) == WizardState.SUCCESSED; break; case SHOW_RESUME: @@ -1579,4 +1533,17 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } + + private static class LogPropertyChanged implements PropertyChangeListener { + @Override + public void propertyChange(PropertyChangeEvent evt) { + String name = evt.getPropertyName(); + Object oldValue = evt.getOldValue(); + Object newValue = evt.getNewValue(); + if (log.isDebugEnabled()) { + log.debug(evt.getSource() + " - Property [" + name + "] has changed from " + oldValue + " to " + newValue); + } + + } + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java index 843d7d9..e6df440 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/export/ExportUIHandler.java @@ -209,7 +209,7 @@ public class ExportUIHandler extends AdminTabUIHandler { return WizardState.FAILED; } - ObserveSwingDataSource source = getSource(); + ObserveSwingDataSource source = model.getSafeLocalSource(false); stepModel.setSource(source); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java index e725ab4..0f73579 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/report/ReportUIHandler.java @@ -120,8 +120,7 @@ public class ReportUIHandler extends AdminTabUIHandler { Report report = (Report) newValue; onSelectedReportChanged(tabUI, source, report); } else if (ReportModel.VARIABLES_PROPERTY_NAME.equals(propertyName)) { - Map<String, Object> variables = - (Map<String, Object>) newValue; + Map<String, Object> variables = (Map<String, Object>) newValue; onVariablesChanges(source, variables); } else if (ReportModel.VALID_PROPERTY_NAME.equals(propertyName)) { final Boolean valid = (Boolean) newValue; @@ -303,15 +302,9 @@ public class ReportUIHandler extends AdminTabUIHandler { log.info("New selected report [" + report + "]"); } - ObserveSwingDataSource dataSource = getSource(); - try { - if (!dataSource.isOpen()) { - - dataSource.open(); - - } + ObserveSwingDataSource dataSource = getModel().getSafeLocalSource(true); ReportService reportService = dataSource.newReportService(); @@ -423,7 +416,7 @@ public class ReportUIHandler extends AdminTabUIHandler { long startTime = TimeLog.getTime(); - ObserveSwingDataSource dataSource = getSource(); + ObserveSwingDataSource dataSource = getModel().getSafeLocalSource(true); if (!dataSource.isOpen()) { dataSource.open(); } @@ -473,7 +466,7 @@ public class ReportUIHandler extends AdminTabUIHandler { } public void destroy() { - ObserveSwingDataSource dataSource = getSource(); + ObserveSwingDataSource dataSource = model.getSafeLocalSource(false); if (dataSource.isOpen()) { dataSource.close(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/resume/ShowResumeUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/resume/ShowResumeUI.jaxx index 1d34e94..67668c5 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/resume/ShowResumeUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/resume/ShowResumeUI.jaxx @@ -58,8 +58,7 @@ public void destroy() { @Override public void addMessage(AdminStep step, String text) { - String l = t(step.getLabel())+ " - " + text + "\n"; - globalProgression.append(l); + getHandler().addMessage(step, text); } ]]> </script> diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/resume/ShowResumeUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/resume/ShowResumeUIHandler.java index e3c96a4..b3da9b8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/resume/ShowResumeUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/resume/ShowResumeUIHandler.java @@ -102,4 +102,7 @@ public class ShowResumeUIHandler extends AdminTabUIHandler { getUi().getResume().setText(buffer.toString()); } + public void addMessage(AdminStep step, String text) { + getUi().getGlobalProgression().append(t(step.getLabel()) + " - " + text + "\n"); + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java index da64f4b..d3030d5 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java @@ -4,6 +4,8 @@ import fr.ird.observe.db.ObserveSwingDataSource; import fr.ird.observe.services.service.actions.synchro.referential.ReferentialSynchronizeMode; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffsEngine; +import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeService; +import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeServiceEngine; import fr.ird.observe.ui.admin.AdminActionModel; import fr.ird.observe.ui.admin.AdminStep; import fr.ird.observe.ui.admin.synchronize.referential.ng.tree.ReferentialSynchronizeTreeModel; @@ -252,4 +254,9 @@ public class ReferentialSynchroModel extends AdminActionModel { } + public ReferentialSynchronizeServiceEngine newReferentialSynchronizeServiceEngine() { + ReferentialSynchronizeService leftService = leftSource.newReferentialSynchronizeService(); + ReferentialSynchronizeService rightService = rightSource.newReferentialSynchronizeService(); + return new ReferentialSynchronizeServiceEngine(leftService, rightService); + } } \ No newline at end of file diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeResources.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeResources.java index a1c908f..e297835 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeResources.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeResources.java @@ -1,5 +1,6 @@ package fr.ird.observe.ui.admin.synchronize.referential.ng; +import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeTaskType; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.admin.synchronize.referential.ng.tree.node.ReferenceReferentialSynchroNodeSupport; @@ -24,6 +25,7 @@ public enum ReferentialSynchronizeResources { null, null, null, + ReferentialSynchronizeTaskType.ADD, ReferenceReferentialSynchroNodeSupport::isCanAdd), UPDATE( "copyToRight", @@ -34,6 +36,7 @@ public enum ReferentialSynchronizeResources { null, null, null, + ReferentialSynchronizeTaskType.UPDATE, ReferenceReferentialSynchroNodeSupport::isCanUpdate), COPY( "copyToRight", @@ -44,6 +47,7 @@ public enum ReferentialSynchronizeResources { n("observe.actions.synchro.referential.action.copyToLeft.tip"), ReferentialSynchroModel.COPY_LEFT_PROPERTY_NAME, ReferentialSynchroModel.COPY_RIGHT_PROPERTY_NAME, + null, node -> false), DELETE( "deleteFromLeft", @@ -54,6 +58,7 @@ public enum ReferentialSynchronizeResources { n("observe.actions.synchro.referential.action.deleteFromRight.tip"), ReferentialSynchroModel.DELETE_LEFT_PROPERTY_NAME, ReferentialSynchroModel.DELETE_RIGHT_PROPERTY_NAME, + ReferentialSynchronizeTaskType.DELETE, ReferenceReferentialSynchroNodeSupport::isCanDelete), REVERT( "revertFromLeft", @@ -64,6 +69,7 @@ public enum ReferentialSynchronizeResources { n("observe.actions.synchro.referential.action.revertFromRight.tip"), ReferentialSynchroModel.REVERT_LEFT_PROPERTY_NAME, ReferentialSynchroModel.REVERT_RIGHT_PROPERTY_NAME, + ReferentialSynchronizeTaskType.REVERT, ReferenceReferentialSynchroNodeSupport::isCanRevert), SKIP( "skipFromLeft", @@ -74,6 +80,7 @@ public enum ReferentialSynchronizeResources { n("observe.actions.synchro.referential.action.skipFromRight.tip"), ReferentialSynchroModel.SKIP_LEFT_PROPERTY_NAME, ReferentialSynchroModel.SKIP_RIGHT_PROPERTY_NAME, + null, node -> true), DESACTIVATE( "desactivateFromLeft", @@ -84,6 +91,7 @@ public enum ReferentialSynchronizeResources { n("observe.actions.synchro.referential.action.desactivateFromRight.tip"), ReferentialSynchroModel.DESACTIVATE_LEFT_PROPERTY_NAME, ReferentialSynchroModel.DESACTIVATE_RIGHT_PROPERTY_NAME, + ReferentialSynchronizeTaskType.DESACTIVATE, ReferenceReferentialSynchroNodeSupport::isCanDelete); private final String leftActionName; @@ -95,6 +103,7 @@ public enum ReferentialSynchronizeResources { private final String leftPropertyName; private final String rightPropertyName; private final Predicate<ReferenceReferentialSynchroNodeSupport> predicate; + private final ReferentialSynchronizeTaskType taskType; private transient Icon actionIcon; ReferentialSynchronizeResources(String leftActionName, @@ -105,6 +114,7 @@ public enum ReferentialSynchronizeResources { String rightActionTipI18nKey, String leftPropertyName, String rightPropertyName, + ReferentialSynchronizeTaskType taskType, Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { this.leftActionName = leftActionName; this.rightActionName = rightActionName; @@ -114,6 +124,7 @@ public enum ReferentialSynchronizeResources { this.rightActionTipI18nKey = rightActionTipI18nKey; this.leftPropertyName = leftPropertyName; this.rightPropertyName = rightPropertyName; + this.taskType = taskType; this.predicate = predicate; } @@ -144,4 +155,7 @@ public enum ReferentialSynchronizeResources { return left ? leftPropertyName : rightPropertyName; } + public ReferentialSynchronizeTaskType getTaskType() { + return taskType; + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeTaskListCellRenderer.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeTaskListCellRenderer.java index 37ec1b9..1b7bfa8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeTaskListCellRenderer.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeTaskListCellRenderer.java @@ -20,7 +20,7 @@ public class ReferentialSynchronizeTaskListCellRenderer extends DefaultListCellR public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { ReferentialSynchronizeTaskSupport task = (ReferentialSynchronizeTaskSupport) value; - super.getListCellRendererComponent(list, task.getLabel(), index, isSelected, cellHasFocus); + super.getListCellRendererComponent(list, "<html><body>" + task.getLabel(), index, isSelected, cellHasFocus); setIcon(task.getIcon()); return this; diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeTaskListModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeTaskListModel.java index fa846d2..df8ddc0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeTaskListModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialSynchronizeTaskListModel.java @@ -4,6 +4,8 @@ import fr.ird.observe.ui.admin.synchronize.referential.ng.task.ReferentialSynchr import javax.swing.DefaultListModel; import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; /** * Created on 13/08/16. @@ -11,13 +13,12 @@ import java.util.Collection; * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public class ReferentialSynchronizeTaskListModel extends DefaultListModel<ReferentialSynchronizeTaskSupport> { +public class ReferentialSynchronizeTaskListModel extends DefaultListModel<ReferentialSynchronizeTaskSupport> implements Iterable<ReferentialSynchronizeTaskSupport> { private static final long serialVersionUID = 1L; private boolean tasksIsAdjusting; - public void addTasks(Collection<ReferentialSynchronizeTaskSupport> addedTasks) { tasksIsAdjusting = true; @@ -44,4 +45,8 @@ public class ReferentialSynchronizeTaskListModel extends DefaultListModel<Refere super.fireIntervalAdded(source, index0, index1); } + @Override + public Iterator<ReferentialSynchronizeTaskSupport> iterator() { + return Collections.list(elements()).iterator(); + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/ApplyAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/ApplyAction.java index 76e83c2..e612058 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/ApplyAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/ApplyAction.java @@ -1,23 +1,18 @@ package fr.ird.observe.ui.admin.synchronize.referential.ng.action; -import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationTopiaH2; -import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeRequest; -import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeService; +import fr.ird.observe.services.service.actions.synchro.referential.ReferentialSynchronizeMode; +import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeServiceEngine; +import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeServiceProduceSqlsRequest; +import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeServiceProduceSqlsResult; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.actions.AbstractObserveAction; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchroModel; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchroUI; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchroUIHandler; -import fr.ird.observe.ui.admin.synchronize.referential.ng.task.AddToReferentialSynchronizeTask; -import fr.ird.observe.ui.admin.synchronize.referential.ng.task.DeleteReferentialSynchronizeTask; -import fr.ird.observe.ui.admin.synchronize.referential.ng.task.DesactivateReferentialSynchronizeTask; +import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronizeTaskListModel; import fr.ird.observe.ui.admin.synchronize.referential.ng.task.ReferentialSynchronizeTaskSupport; -import fr.ird.observe.ui.admin.synchronize.referential.ng.task.RevertReferentialSynchronizeTask; -import fr.ird.observe.ui.admin.synchronize.referential.ng.task.UpdateToReferentialSynchronizeTask; import jaxx.runtime.swing.wizard.ext.WizardState; -import javax.swing.DefaultListModel; import java.awt.event.ActionEvent; import static org.nuiton.i18n.I18n.t; @@ -26,6 +21,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class ApplyAction extends AbstractObserveAction { @@ -34,83 +30,50 @@ public class ApplyAction extends AbstractObserveAction { private final ReferentialSynchroUI ui; public ApplyAction(ReferentialSynchroUI ui) { - super(t("observe.action.apply"), UIHelper.getUIManagerActionIcon("apply")); + super(t("observe.action.apply"), UIHelper.getUIManagerActionIcon("accept")); this.ui = ui; } @Override public void actionPerformed(ActionEvent e) { - ReferentialSynchroUIHandler handler = ui.getHandler(); + + ui.getHandler().addAdminWorker("Application des modifications.", this::apply); + + } + + private WizardState apply() { ReferentialSynchroModel stepModel = ui.getStepModel(); - ObserveSwingDataSource leftSource = stepModel.getLeftSource(); - boolean leftSourceIsH2 = leftSource.getConfiguration() instanceof ObserveDataSourceConfigurationTopiaH2; - - ObserveSwingDataSource rightSource = stepModel.getRightSource(); - boolean rightSourceIsH2 = rightSource.getConfiguration() instanceof ObserveDataSourceConfigurationTopiaH2; - - DefaultListModel<ReferentialSynchronizeTaskSupport> tasks = stepModel.getTasks(); - int size = tasks.size(); - - ReferentialSynchronizeRequest.Builder leftReferentialSynchronizeRequestBuilder = ReferentialSynchronizeRequest.builder(leftSourceIsH2, rightSourceIsH2); - ReferentialSynchronizeRequest.Builder rightReferentialSynchronizeRequestBuilder = ReferentialSynchronizeRequest.builder(rightSourceIsH2, leftSourceIsH2); - for (int i = 0; i < size; i++) { - - ReferentialSynchronizeTaskSupport<?> task = tasks.getElementAt(i); - - String taskLabel = t("observe.actions.synchro.referential.task.prepare", task.getLabel()); - if (task instanceof AddToReferentialSynchronizeTask) { - handler.sendMessage(taskLabel); - leftReferentialSynchronizeRequestBuilder.addAddTask(task.getData()); - continue; - } - - if (task instanceof DeleteReferentialSynchronizeTask) { - DeleteReferentialSynchronizeTask task1 = (DeleteReferentialSynchronizeTask) task; - handler.sendMessage(taskLabel); - leftReferentialSynchronizeRequestBuilder.addDeleteTask(task1.getData(), task1.getReplaceData()); - continue; - } - - if (task instanceof DesactivateReferentialSynchronizeTask) { - DesactivateReferentialSynchronizeTask task1 = (DesactivateReferentialSynchronizeTask) task; - handler.sendMessage(taskLabel); - leftReferentialSynchronizeRequestBuilder.addDesactivateTask(task1.getData(), task1.getReplaceData()); - continue; - } - - if (task instanceof RevertReferentialSynchronizeTask) { - handler.sendMessage(taskLabel); - leftReferentialSynchronizeRequestBuilder.addRevertTask(task.getData()); - continue; - } - - if (task instanceof UpdateToReferentialSynchronizeTask) { - handler.sendMessage(taskLabel); - leftReferentialSynchronizeRequestBuilder.addUpdateTask(task.getData()); - } + ReferentialSynchroUIHandler handler = ui.getHandler(); - } + ReferentialSynchronizeMode synchronizeMode = stepModel.getSynchronizeMode(); + boolean leftIsWrite = synchronizeMode.isLeftWrite(); + boolean rightIsWrite = synchronizeMode.isRightWrite(); - ReferentialSynchronizeService leftReferentialSynchronizeService = leftSource.newReferentialSynchronizeService(); - ReferentialSynchronizeService rightReferentialSynchronizeService = rightSource.newReferentialSynchronizeService(); + ReferentialSynchronizeServiceProduceSqlsRequest.Builder builder = ReferentialSynchronizeServiceProduceSqlsRequest.builder(); - ReferentialSynchronizeRequest leftReferentialSynchronizeRequest = leftReferentialSynchronizeRequestBuilder.build(); - if (leftReferentialSynchronizeRequest.isNotEmpty()) { - rightReferentialSynchronizeService.prepareRequestOnOppositeDataSource(leftReferentialSynchronizeRequest); - leftReferentialSynchronizeService.prepareRequestOnDataSource(leftReferentialSynchronizeRequest); - leftReferentialSynchronizeService.executeRequest(leftReferentialSynchronizeRequest); - } + ReferentialSynchronizeTaskListModel tasks = stepModel.getTasks(); + + for (ReferentialSynchronizeTaskSupport task : tasks) { + + String taskLabel = t("observe.actions.synchro.referential.task.prepare", task.getStripLabel()); + + handler.sendMessage(taskLabel); + + task.registerTask(builder); - ReferentialSynchronizeRequest rightReferentialSynchronizeRequest = rightReferentialSynchronizeRequestBuilder.build(); - if (rightReferentialSynchronizeRequest.isNotEmpty()) { - leftReferentialSynchronizeService.prepareRequestOnOppositeDataSource(rightReferentialSynchronizeRequest); - rightReferentialSynchronizeService.prepareRequestOnDataSource(rightReferentialSynchronizeRequest); - rightReferentialSynchronizeService.executeRequest(rightReferentialSynchronizeRequest); } - ui.getModel().setStepState(WizardState.SUCCESSED); + ReferentialSynchronizeServiceProduceSqlsRequest produceSqlsRequests = builder.build(); + ReferentialSynchronizeServiceEngine engine = stepModel.newReferentialSynchronizeServiceEngine(); + + ReferentialSynchronizeServiceProduceSqlsResult sqlsRequests = engine.produceSqlsRequests(produceSqlsRequests); + + engine.executeSqlRequests(sqlsRequests); + + return WizardState.SUCCESSED; } + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterAddTaskAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterAddTaskAction.java index 3311aa1..fc3c116 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterAddTaskAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterAddTaskAction.java @@ -4,32 +4,34 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchroUI; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronizeResources; -import fr.ird.observe.ui.admin.synchronize.referential.ng.task.AddToReferentialSynchronizeTask; +import fr.ird.observe.ui.admin.synchronize.referential.ng.task.AddReferentialSynchronizeTask; import fr.ird.observe.ui.admin.synchronize.referential.ng.tree.node.ReferenceReferentialSynchroNodeSupport; +import java.util.Collection; import java.util.function.Predicate; /** * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class RegisterAddTaskAction extends RegisterTasksActionSupport { private static final long serialVersionUID = 1L; - private transient Iterable<ReferenceReferentialSynchroNodeSupport> nodes; + private transient Collection<ReferenceReferentialSynchroNodeSupport> nodes; public RegisterAddTaskAction(ReferentialSynchroUI ui, boolean left) { super(ui, ReferentialSynchronizeResources.ADD, left, false); } @Override - protected <R extends ReferentialDto> AddToReferentialSynchronizeTask<R> createTask(boolean left, ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { - return new AddToReferentialSynchronizeTask<>(left, reference); + protected <R extends ReferentialDto> AddReferentialSynchronizeTask<R> createTask(boolean left, ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { + return new AddReferentialSynchronizeTask<>(left, reference); } @Override - protected Iterable<ReferenceReferentialSynchroNodeSupport> getReferenceReferentialSynchroNodes(Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { + protected Collection<ReferenceReferentialSynchroNodeSupport> getReferenceReferentialSynchroNodes(Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { return nodes; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterCopyTaskAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterCopyTaskAction.java index e9f6588..1f06ce3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterCopyTaskAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterCopyTaskAction.java @@ -4,12 +4,13 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchroUI; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronizeResources; -import fr.ird.observe.ui.admin.synchronize.referential.ng.task.AddToReferentialSynchronizeTask; +import fr.ird.observe.ui.admin.synchronize.referential.ng.task.AddReferentialSynchronizeTask; /** * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class RegisterCopyTaskAction extends RegisterTasksActionSupport { @@ -34,7 +35,7 @@ public class RegisterCopyTaskAction extends RegisterTasksActionSupport { } @Override - protected <R extends ReferentialDto> AddToReferentialSynchronizeTask<R> createTask(boolean left, ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { - return new AddToReferentialSynchronizeTask<>(left, reference); + protected <R extends ReferentialDto> AddReferentialSynchronizeTask<R> createTask(boolean left, ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { + return new AddReferentialSynchronizeTask<>(left, reference); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterDeleteTaskAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterDeleteTaskAction.java index 5fb4bb5..fde63d1 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterDeleteTaskAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterDeleteTaskAction.java @@ -12,6 +12,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class RegisterDeleteTaskAction extends RegisterTasksActionSupport { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterDesactivateTaskAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterDesactivateTaskAction.java index 19b709f..4cd10f2 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterDesactivateTaskAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterDesactivateTaskAction.java @@ -12,6 +12,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class RegisterDesactivateTaskAction extends RegisterTasksActionSupport { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterRevertTaskAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterRevertTaskAction.java index 98d7dc2..cbf36dd 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterRevertTaskAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterRevertTaskAction.java @@ -10,6 +10,7 @@ import fr.ird.observe.ui.admin.synchronize.referential.ng.task.RevertReferential * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class RegisterRevertTaskAction extends RegisterTasksActionSupport { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterSkipTaskAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterSkipTaskAction.java index 3c33905..e52bd63 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterSkipTaskAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterSkipTaskAction.java @@ -10,6 +10,7 @@ import fr.ird.observe.ui.admin.synchronize.referential.ng.task.SkipReferentialSy * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class RegisterSkipTaskAction extends RegisterTasksActionSupport { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterTasksActionSupport.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterTasksActionSupport.java index 39e8e57..9ea8920 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterTasksActionSupport.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterTasksActionSupport.java @@ -32,6 +32,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public abstract class RegisterTasksActionSupport extends AbstractObserveAction { @@ -39,12 +40,10 @@ public abstract class RegisterTasksActionSupport extends AbstractObserveAction { private static final Log log = LogFactory.getLog(RegisterTasksActionSupport.class); private static final long serialVersionUID = 1L; - + protected final Predicate<ReferenceReferentialSynchroNodeSupport> predicate; private final ReferentialSynchroUI ui; private final boolean left; private final boolean needReplace; - - protected final Predicate<ReferenceReferentialSynchroNodeSupport> predicate; protected String typeStr; protected String referenceStr; @@ -164,10 +163,10 @@ public abstract class RegisterTasksActionSupport extends AbstractObserveAction { ReferentialSynchronizeTaskSupport task = createTask(left, reference, replaceReference); if (log.isInfoEnabled()) { - log.info("Add " + task.getLabel()); + log.info("Add " + task.getStripLabel()); } - ui.getHandler().sendMessage(task.getLabel()); + ui.getHandler().sendMessage(task.getStripLabel()); removedNodes.add(node); addedTasks.add(task); @@ -178,7 +177,7 @@ public abstract class RegisterTasksActionSupport extends AbstractObserveAction { ui.getStepModel().getTasks().addTasks(addedTasks); } - protected Iterable<ReferenceReferentialSynchroNodeSupport> getReferenceReferentialSynchroNodes(Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { + protected Collection<ReferenceReferentialSynchroNodeSupport> getReferenceReferentialSynchroNodes(Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { return getTreeModel().filterSelectedReferenceNodes(predicate); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterUpdateTaskAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterUpdateTaskAction.java index f7bd19e..a7740f0 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterUpdateTaskAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/action/RegisterUpdateTaskAction.java @@ -4,33 +4,35 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchroUI; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronizeResources; -import fr.ird.observe.ui.admin.synchronize.referential.ng.task.UpdateToReferentialSynchronizeTask; +import fr.ird.observe.ui.admin.synchronize.referential.ng.task.UpdateReferentialSynchronizeTask; import fr.ird.observe.ui.admin.synchronize.referential.ng.tree.node.ReferenceReferentialSynchroNodeSupport; +import java.util.Collection; import java.util.function.Predicate; /** * Created on 12/08/16. * * @author Tony Chemit - chemit@codelutin.com + * @since 5.0 */ public class RegisterUpdateTaskAction extends RegisterTasksActionSupport { private static final long serialVersionUID = 1L; - private Iterable<ReferenceReferentialSynchroNodeSupport> nodes; + private Collection<ReferenceReferentialSynchroNodeSupport> nodes; public RegisterUpdateTaskAction(ReferentialSynchroUI ui, boolean left) { super(ui, ReferentialSynchronizeResources.UPDATE, left, false); } @Override - protected <R extends ReferentialDto> UpdateToReferentialSynchronizeTask<R> createTask(boolean left, ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { - return new UpdateToReferentialSynchronizeTask<>(left, reference); + protected <R extends ReferentialDto> UpdateReferentialSynchronizeTask<R> createTask(boolean left, ReferentialReference<R> reference, ReferentialReference<R> replaceReference) { + return new UpdateReferentialSynchronizeTask<>(left, reference); } @Override - protected Iterable<ReferenceReferentialSynchroNodeSupport> getReferenceReferentialSynchroNodes(Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { + protected Collection<ReferenceReferentialSynchroNodeSupport> getReferenceReferentialSynchroNodes(Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { return nodes; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/AddToReferentialSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/AddReferentialSynchronizeTask.java similarity index 68% rename from observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/AddToReferentialSynchronizeTask.java rename to observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/AddReferentialSynchronizeTask.java index d86244e..44ae959 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/AddToReferentialSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/AddReferentialSynchronizeTask.java @@ -10,9 +10,9 @@ import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronize * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public class AddToReferentialSynchronizeTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { +public class AddReferentialSynchronizeTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { - public AddToReferentialSynchronizeTask(boolean left, ReferentialReference<R> data) { + public AddReferentialSynchronizeTask(boolean left, ReferentialReference<R> data) { super(ReferentialSynchronizeResources.ADD, left, data); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/ReferentialSynchronizeTaskSupport.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/ReferentialSynchronizeTaskSupport.java index b6d46b6..2bcd7b5 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/ReferentialSynchronizeTaskSupport.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/ReferentialSynchronizeTaskSupport.java @@ -4,6 +4,8 @@ import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.decoration.DecoratorService; 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.ng.ReferentialSynchronizeServiceProduceSqlsRequest; +import fr.ird.observe.services.service.actions.synchro.referential.ng.task.ReferentialSynchronizeTaskType; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronizeResources; import javax.swing.Icon; @@ -24,6 +26,7 @@ public abstract class ReferentialSynchronizeTaskSupport<R extends ReferentialDto private final ReferentialReference<R> data; private final Icon icon; private final boolean left; + private final ReferentialSynchronizeTaskType taskType; protected ReferentialSynchronizeTaskSupport(ReferentialSynchronizeResources resource, boolean left, @@ -32,6 +35,7 @@ public abstract class ReferentialSynchronizeTaskSupport<R extends ReferentialDto this.data = data; this.icon = resource.getIcon(left); this.i18nKey = resource.getTaskLabel(left); + this.taskType = resource.getTaskType(); this.dataStr = ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(data.getType()).toString(data); this.typeStr = t(DecoratorService.getEntityLabel(data.getType())); } @@ -40,16 +44,32 @@ public abstract class ReferentialSynchronizeTaskSupport<R extends ReferentialDto return left; } + public ReferentialSynchronizeTaskType getTaskType() { + return taskType; + } + public String getLabel() { return t(i18nKey, typeStr, dataStr); } - public ReferentialReference<R> getData() { - return data; + public String getStripLabel() { + return getLabel().replaceAll("<[^>]+>", ""); + } + + public Class<R> getType() { + return data.getType(); + } + + public String getId() { + return data.getId(); } public Icon getIcon() { return icon; } + public void registerTask(ReferentialSynchronizeServiceProduceSqlsRequest.Builder builder) { + builder.addTask(isLeft(), taskType, getType(), getId(), null); + } + } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/ReferentialSynchronizeTaskWithReplaceSupport.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/ReferentialSynchronizeTaskWithReplaceSupport.java index 08419f9..ace9be9 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/ReferentialSynchronizeTaskWithReplaceSupport.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/ReferentialSynchronizeTaskWithReplaceSupport.java @@ -3,6 +3,7 @@ package fr.ird.observe.ui.admin.synchronize.referential.ng.task; import fr.ird.observe.ObserveSwingApplicationContext; 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.ng.ReferentialSynchronizeServiceProduceSqlsRequest; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronizeResources; import static org.nuiton.i18n.I18n.t; @@ -23,12 +24,16 @@ public abstract class ReferentialSynchronizeTaskWithReplaceSupport<R extends Ref this.replaceDataStr = replaceData == null ? null : ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(replaceData.getType()).toString(replaceData); } - public ReferentialReference<R> getReplaceData() { - return replaceData; + public String getReplaceId() { + return replaceData == null ? null : replaceData.getId(); } @Override public String getLabel() { return t(i18nKey, typeStr, dataStr, replaceDataStr); } + + public void registerTask(ReferentialSynchronizeServiceProduceSqlsRequest.Builder builder) { + builder.addTask(isLeft(), getTaskType(), getType(), getId(), getReplaceId()); + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/SkipReferentialSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/SkipReferentialSynchronizeTask.java index 1c2e157..63b11f8 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/SkipReferentialSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/SkipReferentialSynchronizeTask.java @@ -2,6 +2,7 @@ package fr.ird.observe.ui.admin.synchronize.referential.ng.task; 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.ng.ReferentialSynchronizeServiceProduceSqlsRequest; import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronizeResources; /** @@ -16,4 +17,8 @@ public class SkipReferentialSynchronizeTask<R extends ReferentialDto> extends Re super(ReferentialSynchronizeResources.SKIP, left, data); } + @Override + public void registerTask(ReferentialSynchronizeServiceProduceSqlsRequest.Builder builder) { + // Skip! + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/UpdateToReferentialSynchronizeTask.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/UpdateReferentialSynchronizeTask.java similarity index 68% rename from observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/UpdateToReferentialSynchronizeTask.java rename to observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/UpdateReferentialSynchronizeTask.java index 13b4c5c..7a0091a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/UpdateToReferentialSynchronizeTask.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/task/UpdateReferentialSynchronizeTask.java @@ -10,9 +10,9 @@ import fr.ird.observe.ui.admin.synchronize.referential.ng.ReferentialSynchronize * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public class UpdateToReferentialSynchronizeTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { +public class UpdateReferentialSynchronizeTask<R extends ReferentialDto> extends ReferentialSynchronizeTaskSupport<R> { - public UpdateToReferentialSynchronizeTask(boolean left, ReferentialReference<R> data) { + public UpdateReferentialSynchronizeTask(boolean left, ReferentialReference<R> data) { super(ReferentialSynchronizeResources.UPDATE, left, data); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModel.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModel.java index 68107f9..c102002 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModel.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModel.java @@ -42,6 +42,7 @@ public class ReferentialSynchronizeTreeModel implements TreeSelectionModel, Tree private boolean canUpdate; private boolean canDelete; private boolean canRevert; + private boolean valueIsAdjusting; public ReferentialSynchronizeTreeModel(RootReferentialSynchroNode root) { this.treeModel = new DefaultTreeModel(root); @@ -70,7 +71,7 @@ public class ReferentialSynchronizeTreeModel implements TreeSelectionModel, Tree } - public Iterable<ReferenceReferentialSynchroNodeSupport> filterSelectedReferenceNodes(Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { + public Collection<ReferenceReferentialSynchroNodeSupport> filterSelectedReferenceNodes(Predicate<ReferenceReferentialSynchroNodeSupport> predicate) { ImmutableSet.Builder<ReferenceReferentialSynchroNodeSupport> builder = ImmutableSet.builder(); @@ -191,8 +192,8 @@ public class ReferentialSynchronizeTreeModel implements TreeSelectionModel, Tree collectPaths(collectedPaths, paths); - if (log.isInfoEnabled()) { - log.info("path(s) to add: " + collectedPaths.size()); + if (log.isDebugEnabled()) { + log.debug("path(s) to add: " + collectedPaths.size()); } treeSelectionModel.addSelectionPaths(collectedPaths.toArray(new TreePath[collectedPaths.size()])); } finally { @@ -202,8 +203,6 @@ public class ReferentialSynchronizeTreeModel implements TreeSelectionModel, Tree } } - private boolean valueIsAdjusting; - @Override public void removeSelectionPaths(TreePath... paths) { @@ -218,8 +217,8 @@ public class ReferentialSynchronizeTreeModel implements TreeSelectionModel, Tree collectPaths(collectedPaths, paths); - if (log.isInfoEnabled()) { - log.info("path(s) to remove: " + collectedPaths.size()); + if (log.isDebugEnabled()) { + log.debug("path(s) to remove: " + collectedPaths.size()); } treeSelectionModel.removeSelectionPaths(collectedPaths.toArray(new TreePath[collectedPaths.size()])); } finally { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java index 639832e..643b25c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/validate/ValidateUIHandler.java @@ -359,7 +359,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { // on recupere la source de données - source = getSource(); + source = model.getSafeCentralSource(false); DecoratorService decoratorService = getDecoratorService(); diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jaxx b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jaxx index 1252346..68190ad 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jaxx +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jaxx @@ -36,6 +36,7 @@ jaxx.runtime.swing.editor.bean.BeanListHeader jaxx.runtime.validator.swing.SwingValidator + javax.swing.DefaultListModel javax.swing.ListSelectionModel javax.swing.JTable javax.swing.UIManager diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jcss b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jcss index 40cddf2..179a340 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jcss +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUI.jcss @@ -43,6 +43,7 @@ #list { selectionMode:{ListSelectionModel.SINGLE_SELECTION}; + model:{new DefaultListModel()}; } #listView { diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java index 2b01a04..7db44aa 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java @@ -22,11 +22,13 @@ package fr.ird.observe.ui.content.ref; import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.decoration.DecoratorService; +import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.ReferenceMap; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.IdDto; +import fr.ird.observe.services.dto.ReferenceMap; import fr.ird.observe.services.dto.constants.ReferenceStatus; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.reference.request.ReferenceSetRequestDefinitions; @@ -38,14 +40,12 @@ import fr.ird.observe.services.dto.referential.VesselSizeCategoryDto; import fr.ird.observe.services.dto.result.SaveResultDto; import fr.ird.observe.services.service.DataNotFoundException; import fr.ird.observe.services.service.ReferentialService; -import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.ui.UIHelper; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; import fr.ird.observe.ui.tree.ObserveTreeHelper; import fr.ird.observe.ui.usage.UsagesUI; import fr.ird.observe.ui.util.SpringUtilities; -import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.validation.ValidationContext; import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.CardLayout2Ext; @@ -85,6 +85,7 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Locale; +import java.util.Optional; import java.util.Set; import static org.nuiton.i18n.I18n.t; @@ -765,13 +766,26 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content String beanId = bean.getId(); getReferentialService().delete(getBeanType(), beanId); + return true; + } + + @Override + protected void afterDelete() { + E bean = getBean(); if (bean instanceof ProgramDto) { // remove the program in tree ObserveTreeHelper treeHelper = getTreeHelper(getUi()); - treeHelper.removeProgram(beanId); + treeHelper.removeProgram(bean.getId()); } - return true; + + Optional<ReferentialReference<ReferentialDto>> referenceToDelete = getModel().tryGetReferentialReferenceById("referentialListHeader", bean.getId()); + List<ReferentialReference<E>> references = new ArrayList<>(getModel().getReferentialReferences("referentialListHeader")); + references.remove(referenceToDelete.get()); + getUi().getReferentialListHeader().setData(references); + + //getModel().setSelectedBean(null); + super.afterDelete(); } protected void afterSave(boolean refresh) { 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 a28ee48..1ac2533 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 @@ -73,6 +73,7 @@ import java.util.List; import java.util.Objects; import java.util.Set; +import static fr.ird.observe.ui.admin.AdminUIModel.LOG_PROPERTY_CHANGE_LISTENER; import static org.nuiton.i18n.I18n.t; /** @@ -606,15 +607,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { centralSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { - centralSourceModel.addPropertyChangeListener(evt -> { - String name = evt.getPropertyName(); - Object oldValue = evt.getOldValue(); - Object newValue = evt.getNewValue(); - if (log.isDebugEnabled()) { - log.debug(evt.getSource() + " - Property [" + name + "] has changed from " + oldValue + " to " + newValue); - } - - }); + centralSourceModel.removePropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); + centralSourceModel.addPropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); } // on teste si la connexion distante existe @@ -640,15 +634,8 @@ public class StorageUIModel extends WizardModel<StorageStep> { dataSourceModel.start(DbMode.USE_REMOTE); if (log.isDebugEnabled()) { - dataSourceModel.addPropertyChangeListener(evt -> { - String name = evt.getPropertyName(); - Object oldValue = evt.getOldValue(); - Object newValue = evt.getNewValue(); - if (log.isDebugEnabled()) { - log.debug(evt.getSource() + " - Property [" + name + "] has changed from " + oldValue + " to " + newValue); - } - - }); + dataSourceModel.removePropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); + dataSourceModel.addPropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); } // on teste si la connexion distante existe diff --git a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties index 9b0aa31..d05d456 100644 --- a/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties +++ b/observe-application-swing/src/main/resources/i18n/observe-application-swing_fr_FR.properties @@ -272,21 +272,21 @@ observe.actions.synchro.referential.replaceBeforeDesactivate.title=Remplacement observe.actions.synchro.referential.safe.entity.to.choose.label=Objets disponibles observe.actions.synchro.referential.step=Synchronisation avancée du référentiel observe.actions.synchro.referential.step.description=Synchronisation bi-directionnelle de référentiel -observe.actions.synchro.referential.task.addToLeft=<html><body>Ajouter dans la base de gauche \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.addToRight=<html><body>Ajouter dans la base de droite \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.deleteFromLeft=<html><body>Supprimer dans la base de gauche \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.deleteFromRight=<html><body>Supprimer dans la base de droite \: <i>%s</i> - «<b>%s</b>» à remplacer par «<b>%s</b>» -observe.actions.synchro.referential.task.desactivateFromLeft=<html><body>Désactiver (sans remplacement) dans la base de gauche \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.desactivateFromRight=<html><body>Désactiver (sans remplacement) dans la base dans droite \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.desactivateWithReplaceFromLeft=<html><body>Désactiver dans la base de gauche \: <i>%s</i> - «<b>%s</b>» à remplacer par «<b>%s</b>» -observe.actions.synchro.referential.task.desactivateWithReplaceFromRight=<html><body>Désactiver dans la base de droite \: <i>%s</i> - «<b>%s</b>» à remplacer par «<b>%s</b>» +observe.actions.synchro.referential.task.addToLeft=Ajouter dans la base de gauche \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.addToRight=Ajouter dans la base de droite \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.deleteFromLeft=Supprimer dans la base de gauche \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.deleteFromRight=Supprimer dans la base de droite \: <i>%s</i> - «<b>%s</b>» à remplacer par «<b>%s</b>» +observe.actions.synchro.referential.task.desactivateFromLeft=Désactiver (sans remplacement) dans la base de gauche \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.desactivateFromRight=Désactiver (sans remplacement) dans la base dans droite \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.desactivateWithReplaceFromLeft=Désactiver dans la base de gauche \: <i>%s</i> - «<b>%s</b>» à remplacer par «<b>%s</b>» +observe.actions.synchro.referential.task.desactivateWithReplaceFromRight=Désactiver dans la base de droite \: <i>%s</i> - «<b>%s</b>» à remplacer par «<b>%s</b>» observe.actions.synchro.referential.task.prepare=Enregistement de l'action %s -observe.actions.synchro.referential.task.revertFromLeft=<html><body>Revenir en arrière dans la base de gauche \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.revertFromRight=<html><body>Revenir en arrière dans la base de droite \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.skipFromLeft=<html><body>Ne rien faire dans la base de gauche \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.skipFromRight=<html><body>Ne rien faire dans la base de droite \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.updateToLeft=<html><body>Mettre à jour dans la base de gauche \: <i>%s</i> - «<b>%s</b>» -observe.actions.synchro.referential.task.updateToRight=<html><body>Mettre à jour dans la base de droite \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.revertFromLeft=Revenir en arrière dans la base de gauche \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.revertFromRight=Revenir en arrière dans la base de droite \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.skipFromLeft=Ne rien faire dans la base de gauche \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.skipFromRight=Ne rien faire dans la base de droite \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.updateToLeft=Mettre à jour dans la base de gauche \: <i>%s</i> - «<b>%s</b>» +observe.actions.synchro.referential.task.updateToRight=Mettre à jour dans la base de droite \: <i>%s</i> - «<b>%s</b>» observe.actions.synchro.referential.title=Synchronisation avancée du référentiel observe.actions.synchro.referential.title.tip=Synchronisation avancée du référentiel observe.actions.synchro.referential.withMode=Synchronisation du référentiel (%s) -- 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/4309_synchro_referential in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit e16f10755a2bfaacde631c0a01b99cf590809125 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:31:56 2016 +0200 Ajout d'un FIXME à corriger plus tard... --- .../java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java index 7db44aa..046462d 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/content/ref/ContentReferenceUIHandler.java @@ -782,6 +782,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto> extends Content Optional<ReferentialReference<ReferentialDto>> referenceToDelete = getModel().tryGetReferentialReferenceById("referentialListHeader", bean.getId()); List<ReferentialReference<E>> references = new ArrayList<>(getModel().getReferentialReferences("referentialListHeader")); references.remove(referenceToDelete.get()); + //FIXME La liste ne se rafraichit pas bien getUi().getReferentialListHeader().setData(references); //getModel().setSelectedBean(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/4309_synchro_referential in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit d78eefa42aa2ca4a752e145b4d20d7405d610426 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Aug 16 12:52:54 2016 +0200 Bien enlever la référence à remplacer de la liste des choix possibles --- .../referential/ng/ReferentialReplaceUIHandler.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialReplaceUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialReplaceUIHandler.java index 661ba8f..8930cd3 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialReplaceUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/ng/ReferentialReplaceUIHandler.java @@ -2,6 +2,7 @@ package fr.ird.observe.ui.admin.synchronize.referential.ng; import com.google.common.collect.Lists; import fr.ird.observe.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; @@ -9,6 +10,7 @@ import jaxx.runtime.swing.editor.bean.BeanComboBox; import java.awt.Dimension; import java.beans.PropertyChangeListener; +import java.util.List; /** * Created on 11/08/16. @@ -27,15 +29,16 @@ public class ReferentialReplaceUIHandler<R extends ReferentialDto> { public void init() { BeanComboBox<ReferentialReference<R>> beanComboBox = ui.getList(); - //beanComboBox.removePropertyChangeListener(BeanComboBox.PROPERTY_DATA, listenData); - //beanComboBox.addPropertyChangeListener(BeanComboBox.PROPERTY_DATA, listenData); ReferentialReferenceSet<R> referenceSet = ui.getContextValue(ReferentialReferenceSet.class); beanComboBox.setI18nPrefix("observe.common."); beanComboBox.setMinimumSize(new Dimension(0, 24)); beanComboBox.setBeanType((Class) ReferentialReference.class); - beanComboBox.init(ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(referenceSet.getType()), - Lists.newArrayList(referenceSet.getReferences())); + List<ReferentialReference<R>> references = Lists.newArrayList(referenceSet.getReferences()); + ReferentialReference<R> reference = ui.getContextValue(ReferentialReference.class); + references.remove(reference); + ReferentialReferenceDecorator<R> decorator = ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(referenceSet.getType()); + beanComboBox.init(decorator, references); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm