This is an automated email from the git hooks/post-receive script. New change to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from 7493101 Appy git pur --prune new df9fb92 Utilisation du nouveau moteur de calcul de différentiel pour la synchro référentiel simple new ee75432 ajout méthode utile et utilisation new 9707205 Quelques adaptations niveau ui pour utiliser les nouvelles api new a15ba5a Merge branch 'feature/7739_synchro_referential' into develop The 4 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit a15ba5a63d84d14e97784638de0003882c1a408e Merge: 7493101 9707205 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 13:44:57 2016 +0200 Merge branch 'feature/7739_synchro_referential' into develop commit 970720538b0baced809fcc6d7ab575276230c0f8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 13:39:36 2016 +0200 Quelques adaptations niveau ui pour utiliser les nouvelles api commit ee7543240510bc2ed51d064527f565b6fee4d7cb Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 13:39:16 2016 +0200 ajout méthode utile et utilisation commit df9fb923a3729326854188ae64618c4c6db60d1a Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 13:38:56 2016 +0200 Utilisation du nouveau moteur de calcul de différentiel pour la synchro référentiel simple Summary of changes: .../fr/ird/observe/db/ObserveSwingDataSource.java | 6 - .../legacy/ObsoleteReferentialReference.java | 17 ++- .../referential/legacy/SynchronizeUIHandler.java | 28 ++-- ...eferentialSynchronizeDiffServiceController.java | 5 + ...ferentialSynchronizeLocalServiceController.java | 10 +- ...erentialSynchronizeRemoteServiceController.java | 52 -------- .../observe/services/ObserveServicesProvider.java | 3 - .../diff/ReferentialSynchronizeDiffService.java | 3 + .../diff/ReferentialSynchronizeDiffsEngine.java | 10 ++ .../referential/legacy/LocalReferentialStates.java | 95 ------------- .../referential/legacy/RemoteReferentialDiff.java | 106 --------------- ...ionalReferentialSynchronizeCallbackRequest.java | 6 +- ...onalReferentialSynchronizeCallbackRequests.java | 12 +- ...tionalReferentialSynchronizeCallbackResult.java | 10 +- ...ionalReferentialSynchronizeCallbackResults.java | 14 +- ...UnidirectionalReferentialSynchronizeEngine.java | 98 +++++++++----- ...ectionalReferentialSynchronizeLocalService.java | 19 +-- ...ctionalReferentialSynchronizeRemoteService.java | 58 -------- ...nidirectionalReferentialSynchronizeRequest.java | 19 +-- ...UnidirectionalReferentialSynchronizeResult.java | 34 ++--- .../ird/observe/services/binder/BinderEngine.java | 5 + .../services/service/DataSourceServiceTopia.java | 3 +- .../ReferentialSynchronizeDiffServiceTopia.java | 20 +++ ...nalReferentialSynchronizeLocalServiceTopia.java | 60 ++------- ...alReferentialSynchronizeRemoteServiceTopia.java | 147 --------------------- .../sql/InsertSqlStatementGenerator.java | 4 +- .../UnidirectionalSynchronizeReferentialTest.java | 89 +++++++------ 27 files changed, 254 insertions(+), 679 deletions(-) delete mode 100644 observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteServiceController.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/LocalReferentialStates.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/RemoteReferentialDiff.java delete mode 100644 observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteService.java delete mode 100644 observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteServiceTopia.java -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit df9fb923a3729326854188ae64618c4c6db60d1a Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 13:38:56 2016 +0200 Utilisation du nouveau moteur de calcul de différentiel pour la synchro référentiel simple --- .../fr/ird/observe/db/ObserveSwingDataSource.java | 6 - ...eferentialSynchronizeDiffServiceController.java | 5 + ...ferentialSynchronizeLocalServiceController.java | 10 +- ...erentialSynchronizeRemoteServiceController.java | 52 -------- .../observe/services/ObserveServicesProvider.java | 3 - .../diff/ReferentialSynchronizeDiffService.java | 3 + .../diff/ReferentialSynchronizeDiffsEngine.java | 10 ++ .../referential/legacy/LocalReferentialStates.java | 95 ------------- .../referential/legacy/RemoteReferentialDiff.java | 106 --------------- ...ionalReferentialSynchronizeCallbackRequest.java | 6 +- ...onalReferentialSynchronizeCallbackRequests.java | 12 +- ...tionalReferentialSynchronizeCallbackResult.java | 10 +- ...ionalReferentialSynchronizeCallbackResults.java | 14 +- ...UnidirectionalReferentialSynchronizeEngine.java | 98 +++++++++----- ...ectionalReferentialSynchronizeLocalService.java | 19 +-- ...ctionalReferentialSynchronizeRemoteService.java | 58 -------- ...nidirectionalReferentialSynchronizeRequest.java | 19 +-- ...UnidirectionalReferentialSynchronizeResult.java | 34 ++--- .../ReferentialSynchronizeDiffServiceTopia.java | 20 +++ ...nalReferentialSynchronizeLocalServiceTopia.java | 60 ++------- ...alReferentialSynchronizeRemoteServiceTopia.java | 147 --------------------- .../sql/InsertSqlStatementGenerator.java | 4 +- 22 files changed, 173 insertions(+), 618 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java index 861d6dc..c6ab886 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/db/ObserveSwingDataSource.java @@ -65,7 +65,6 @@ import fr.ird.observe.services.service.actions.report.ReportService; import fr.ird.observe.services.service.actions.synchro.data.DataSynchronizeService; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeRemoteService; import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeService; import fr.ird.observe.services.service.actions.validate.ValidateService; import fr.ird.observe.services.service.longline.ActivityLongLineEncounterService; @@ -573,11 +572,6 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements } @Override - public UnidirectionalReferentialSynchronizeRemoteService newUnidirectionalReferentialSynchronizeRemoteService() { - return newService(UnidirectionalReferentialSynchronizeRemoteService.class); - } - - @Override public DataSynchronizeService newDataSynchronizeService() { return newService(DataSynchronizeService.class); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceController.java index 97041b6..e8ff987 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceController.java @@ -28,6 +28,11 @@ public class ReferentialSynchronizeDiffServiceController extends ObserveAuthenti } @Override + public <R extends ReferentialDto> ImmutableSet<R> getReferentials(Class<R> referentialName, ImmutableSet<String> ids) { + return service.getReferentials(referentialName, ids); + } + + @Override public ReferentialDataSourceStates getSourceReferentialStates() { return service.getSourceReferentialStates(); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceController.java index dc0107b..f8c07da 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceController.java @@ -25,7 +25,6 @@ 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.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.LocalReferentialStates; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeRequest; @@ -43,17 +42,12 @@ public class UnidirectionalReferentialSynchronizeLocalServiceController extends } @Override - public LocalReferentialStates getLocalSourceReferentialStates() { - return getAuthenticatedService().getLocalSourceReferentialStates(); - } - - @Override - public Set<String> filterIdsUsedInLocalSource(String referentialName, Set<String> ids) { + public <R extends ReferentialDto>Set<String> filterIdsUsedInLocalSource(Class<R> referentialName, Set<String> ids) { return getAuthenticatedService().filterIdsUsedInLocalSource(referentialName, ids); } @Override - public <R extends ReferentialDto> Set<ReferentialReference<R>> getLocalSourceReferentialToDelete(String referentialName, Set<String> ids) { + public <R extends ReferentialDto> Set<ReferentialReference<R>> getLocalSourceReferentialToDelete(Class<R> referentialName, Set<String> ids) { return getAuthenticatedService().getLocalSourceReferentialToDelete(referentialName, ids); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteServiceController.java deleted file mode 100644 index 0d451fd..0000000 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteServiceController.java +++ /dev/null @@ -1,52 +0,0 @@ -package fr.ird.observe.application.web.controller.v1.actions.synchro.referential.legacy; - -/*- - * #%L - * ObServe :: Application Web - * %% - * 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 fr.ird.observe.application.web.controller.v1.ObserveAuthenticatedServiceControllerSupport; -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.LocalReferentialStates; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.RemoteReferentialDiff; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeRemoteService; - -/** - * Created on 20/07/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class UnidirectionalReferentialSynchronizeRemoteServiceController extends ObserveAuthenticatedServiceControllerSupport<UnidirectionalReferentialSynchronizeRemoteService> implements UnidirectionalReferentialSynchronizeRemoteService { - - public UnidirectionalReferentialSynchronizeRemoteServiceController() { - super(UnidirectionalReferentialSynchronizeRemoteService.class); - } - - @Override - public RemoteReferentialDiff getReferentialDifferential(LocalReferentialStates localReferentialStates) { - return getAuthenticatedService().getReferentialDifferential(localReferentialStates); - } - - @Override - public <R extends ReferentialDto> ReferentialReferenceSet<R> getEnabledReferentialReferenceSet(String referentialName) { - return getAuthenticatedService().getEnabledReferentialReferenceSet(referentialName); - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java index f349807..28d28e2 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/ObserveServicesProvider.java @@ -10,7 +10,6 @@ import fr.ird.observe.services.service.actions.report.ReportService; import fr.ird.observe.services.service.actions.synchro.data.DataSynchronizeService; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeRemoteService; import fr.ird.observe.services.service.actions.synchro.referential.ng.ReferentialSynchronizeService; import fr.ird.observe.services.service.actions.validate.ValidateService; import fr.ird.observe.services.service.longline.ActivityLongLineEncounterService; @@ -64,8 +63,6 @@ public interface ObserveServicesProvider { UnidirectionalReferentialSynchronizeLocalService newUnidirectionalReferentialSynchronizeLocalService(); - UnidirectionalReferentialSynchronizeRemoteService newUnidirectionalReferentialSynchronizeRemoteService(); - DataSynchronizeService newDataSynchronizeService(); ReferentialSynchronizeService newReferentialSynchronizeService(); diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffService.java index 381dd84..406f5d3 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffService.java @@ -19,6 +19,9 @@ public interface ReferentialSynchronizeDiffService extends ObserveService { @ReadReferentialPermission <R extends ReferentialDto> ReferentialReferenceSet<R> getReferentialReferenceSet(Class<R> referentialName, ImmutableSet<String> ids); + @ReadReferentialPermission + <R extends ReferentialDto> ImmutableSet<R> getReferentials(Class<R> referentialName, ImmutableSet<String> ids); + /** * Récupération sur la source à synchroniser des versions de ses référentiels. * diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffsEngine.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffsEngine.java index bbfc4d3..afcee38 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffsEngine.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffsEngine.java @@ -54,6 +54,16 @@ public class ReferentialSynchronizeDiffsEngine { return rightDiffService.getReferentialReferenceSet(referentialName, ImmutableSet.copyOf(ids)); } + public <R extends ReferentialDto> ImmutableSet<R> getLeftReferentials(Class<R> referentialName, ImmutableSet<ReferentialSynchronizeDiffState> diffStates) { + Set<String> ids = diffStates.stream().map(ReferentialSynchronizeDiffState::getId).collect(Collectors.toSet()); + return leftDiffService.getReferentials(referentialName, ImmutableSet.copyOf(ids)); + } + + public <R extends ReferentialDto> ImmutableSet<R> getRightReferentials(Class<R> referentialName, ImmutableSet<ReferentialSynchronizeDiffState> diffStates) { + Set<String> ids = diffStates.stream().map(ReferentialSynchronizeDiffState::getId).collect(Collectors.toSet()); + return rightDiffService.getReferentials(referentialName, ImmutableSet.copyOf(ids)); + } + public <R extends ReferentialDto> ReferentialReferenceSet<R> getLeftEnabledReferentialReferenceSet(Class<R> referentialName) { return leftDiffService.getEnabledReferentialReferenceSet(referentialName); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/LocalReferentialStates.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/LocalReferentialStates.java deleted file mode 100644 index 6cdf58a..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/LocalReferentialStates.java +++ /dev/null @@ -1,95 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; - -/*- - * #%L - * ObServe :: Services API - * %% - * 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 com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Multimap; - -import java.io.Serializable; -import java.util.Collection; -import java.util.Map; -import java.util.TreeMap; - -/** - * Contient les états des référentiels de la source locale à synchroniser. - * - * Created on 27/06/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class LocalReferentialStates implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * Contient pour chaque type de référentiel la version de chaque référentiel indexé par son nom. - */ - private final Map<String, Map<String, Long>> referentialVersionsByType; - - /** - * Contient la liste des identifiants des référentiels désactivés indexé par son nom. - */ - private final Multimap<String, String> referentialDisabledIdsByType; - - public LocalReferentialStates() { - this.referentialVersionsByType = new TreeMap<>(); - this.referentialDisabledIdsByType = ArrayListMultimap.create(); - } - - /** - * @param referentialName le nom de référentiel - * @return la collection des versions de référentiel du nom demandé. - */ - public Map<String, Long> getReferentialVersions(String referentialName) { - return referentialVersionsByType.get(referentialName); - } - - /** - * @param referentialName le nom de référentiel - * @return la collection des identifiants de référentiel désactivés du nom demandé. - */ - public Collection<String> getReferentialDisabled(String referentialName) { - return referentialDisabledIdsByType.get(referentialName); - } - - /** - * Pour ajouter un référentiel. - * - * @param referentialName le nom du référentiel - * @param id l'identifiant du référentiel à ajouter - * @param version la version du référentiel à ajouter - * @param disabled {@code true} si le référentiel est désactivé - */ - void addReferentialVersion(String referentialName, String id, long version, boolean disabled) { - Map<String, Long> map = referentialVersionsByType.get(referentialName); - if (map == null) { - map = new TreeMap<>(); - referentialVersionsByType.put(referentialName, map); - } - map.put(id, version); - if (disabled) { - referentialDisabledIdsByType.put(referentialName, id); - } - } -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/RemoteReferentialDiff.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/RemoteReferentialDiff.java deleted file mode 100644 index 88fa8aa..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/RemoteReferentialDiff.java +++ /dev/null @@ -1,106 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; - -/*- - * #%L - * ObServe :: Services API - * %% - * 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 com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Multimap; -import fr.ird.observe.services.dto.referential.ReferentialDto; - -import java.io.Serializable; -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.Set; - -/** - * Contient le différentiel de référentiels calculé sur la source centrale à partir des états de la source à synchroniser. - * - * Created on 27/06/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class RemoteReferentialDiff implements Serializable { - - private static final long serialVersionUID = 1L; - - private final Set<String> referentialNames; - /** - * Les référentiels à ajouter (indexé par nom de référentiel). - */ - private final Multimap<String, ReferentialDto> referentialsToAdd; - /** - * Les référentiels à mettre à jour (indexé par nom de référentiel). - */ - private final Multimap<String, ReferentialDto> referentialsToUpdate; - /** - * Les identifiants de référentiels à supprimer (indexé par nom de référentiel). - */ - private final Multimap<String, String> referentialsToRemove; - - public RemoteReferentialDiff() { - referentialNames = new LinkedHashSet<>(); - referentialsToAdd = ArrayListMultimap.create(); - referentialsToUpdate = ArrayListMultimap.create(); - referentialsToRemove = ArrayListMultimap.create(); - } - - public boolean isReferentialUsed(String referentialName) { - return referentialsToAdd.containsKey(referentialName) - || referentialsToUpdate.containsKey(referentialName) - || referentialsToRemove.containsKey(referentialName); - - } - - public <R extends ReferentialDto> Collection<R> getReferentialsToAdd(String referentialName) { - return (Collection) referentialsToAdd.get(referentialName); - } - - public <R extends ReferentialDto> Collection<R> getReferentialsToUpdate(String referentialName) { - return (Collection) referentialsToUpdate.get(referentialName); - } - - public Set<String> getReferentialsToRemove(String referentialName) { - return new HashSet<>(referentialsToRemove.get(referentialName)); - } - - public Set<String> getReferentialNames() { - return referentialNames; - } - - void addReferentialToAdd(String referentialName, ReferentialDto referentialDto) { - referentialNames.add(referentialName); - referentialsToAdd.put(referentialName, referentialDto); - } - - void addReferentialToUpdate(String referentialName, ReferentialDto referentialDto) { - referentialNames.add(referentialName); - referentialsToUpdate.put(referentialName, referentialDto); - } - - void addReferentialToDelete(String referentialName, String id) { - referentialNames.add(referentialName); - referentialsToRemove.put(referentialName, id); - } - -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackRequest.java index 359da72..0b0376b 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackRequest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackRequest.java @@ -38,11 +38,11 @@ import java.util.Collection; */ public class UnidirectionalReferentialSynchronizeCallbackRequest<R extends ReferentialDto> { - private final String referentialName; + private final Class<R> referentialName; private final ImmutableSet<ReferentialReference<R>> referentialsToReplace; private final ImmutableSet<ReferentialReference<R>> availableReferentials; - public String getReferentialName() { + public Class<R> getReferentialName() { return referentialName; } @@ -54,7 +54,7 @@ public class UnidirectionalReferentialSynchronizeCallbackRequest<R extends Refer return availableReferentials; } - UnidirectionalReferentialSynchronizeCallbackRequest(String referentialName, + UnidirectionalReferentialSynchronizeCallbackRequest(Class<R> referentialName, Collection<ReferentialReference<R>> referentialsToReplace, Collection<ReferentialReference<R>> availableReferentials) { this.referentialName = referentialName; diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackRequests.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackRequests.java index fa507aa..c4dda9d 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackRequests.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackRequests.java @@ -26,9 +26,9 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.TreeMap; /** * Représente l'ensemble des demandes au call back utilisateur. @@ -40,13 +40,13 @@ import java.util.TreeMap; */ public class UnidirectionalReferentialSynchronizeCallbackRequests implements Iterable<UnidirectionalReferentialSynchronizeCallbackRequest<?>> { - private final Map<String, UnidirectionalReferentialSynchronizeCallbackRequest<?>> callbackRequests; + private final Map<Class<? extends ReferentialDto>, UnidirectionalReferentialSynchronizeCallbackRequest<?>> callbackRequests; public UnidirectionalReferentialSynchronizeCallbackRequests() { - this.callbackRequests = new TreeMap<>(); + this.callbackRequests = new HashMap<>(); } - public <R extends ReferentialDto> void addCallbackRequest(String referentialName, + public <R extends ReferentialDto> void addCallbackRequest(Class<R> referentialName, Collection<ReferentialReference<R>> referentialsToReplace, Collection<ReferentialReference<R>> availableReferentials) { @@ -54,8 +54,8 @@ public class UnidirectionalReferentialSynchronizeCallbackRequests implements Ite callbackRequests.put(referentialName, callbackRequest); } - public UnidirectionalReferentialSynchronizeCallbackRequest<?> getCallbackRequest(String referentialName) { - return callbackRequests.get(referentialName); + public <R extends ReferentialDto> UnidirectionalReferentialSynchronizeCallbackRequest<R> getCallbackRequest(Class<R> referentialName) { + return (UnidirectionalReferentialSynchronizeCallbackRequest) callbackRequests.get(referentialName); } public boolean isNotEmpty() { diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackResult.java index 3961ba8..9c17fcc 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackResult.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackResult.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; * #L% */ +import fr.ird.observe.services.dto.referential.ReferentialDto; + import java.util.Map; import java.util.TreeMap; @@ -33,12 +35,12 @@ import java.util.TreeMap; * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public class UnidirectionalReferentialSynchronizeCallbackResult { +public class UnidirectionalReferentialSynchronizeCallbackResult<R extends ReferentialDto> { - private final String referentialName; + private final Class<R> referentialName; private final Map<String, String> ids = new TreeMap<>(); - public String getReferentialName() { + public Class<R> getReferentialName() { return referentialName; } @@ -50,7 +52,7 @@ public class UnidirectionalReferentialSynchronizeCallbackResult { ids.put(idToReplace, replaceId); } - UnidirectionalReferentialSynchronizeCallbackResult(String referentialName) { + UnidirectionalReferentialSynchronizeCallbackResult(Class<R> referentialName) { this.referentialName = referentialName; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackResults.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackResults.java index d3f00c4..1a7ad3d 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackResults.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeCallbackResults.java @@ -22,6 +22,8 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; * #L% */ +import fr.ird.observe.services.dto.referential.ReferentialDto; + import java.util.LinkedHashMap; import java.util.Map; @@ -35,26 +37,26 @@ import java.util.Map; */ public class UnidirectionalReferentialSynchronizeCallbackResults { - private final Map<String, UnidirectionalReferentialSynchronizeCallbackResult> callbackResults; + private final Map<Class<? extends ReferentialDto>, UnidirectionalReferentialSynchronizeCallbackResult> callbackResults; public UnidirectionalReferentialSynchronizeCallbackResults() { callbackResults = new LinkedHashMap<>(); } - public void addCallbackResult(String referentialName, String idtoReplace, String replaceId) { - UnidirectionalReferentialSynchronizeCallbackResult callbackResult = getCallbackResult(referentialName); + public <R extends ReferentialDto> void addCallbackResult(Class<R> referentialName, String idtoReplace, String replaceId) { + UnidirectionalReferentialSynchronizeCallbackResult<R> callbackResult = getCallbackResult(referentialName); if (callbackResult == null) { - callbackResult = new UnidirectionalReferentialSynchronizeCallbackResult(referentialName); + callbackResult = new UnidirectionalReferentialSynchronizeCallbackResult<>(referentialName); callbackResults.put(referentialName, callbackResult); } callbackResult.addId(idtoReplace, replaceId); } - public UnidirectionalReferentialSynchronizeCallbackResult getCallbackResult(String referentialName) { + public <R extends ReferentialDto> UnidirectionalReferentialSynchronizeCallbackResult<R> getCallbackResult(Class<R> referentialName) { return callbackResults.get(referentialName); } - public boolean containsReferentialName(String referentialName) { + public <R extends ReferentialDto> boolean containsReferentialName(Class<R> referentialName) { return callbackResults.containsKey(referentialName); } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java index 8689492..aca3954 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java @@ -26,11 +26,15 @@ 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.dto.referential.ReferentialReferenceSet; +import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiff; +import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffState; +import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffs; +import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffsEngine; import org.apache.commons.collections4.CollectionUtils; -import java.util.Collection; import java.util.LinkedHashSet; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -43,18 +47,18 @@ import java.util.stream.Collectors; public class UnidirectionalReferentialSynchronizeEngine { private final UnidirectionalReferentialSynchronizeLocalService localService; - private final UnidirectionalReferentialSynchronizeRemoteService remoteService; - public UnidirectionalReferentialSynchronizeEngine(UnidirectionalReferentialSynchronizeLocalService localService, - UnidirectionalReferentialSynchronizeRemoteService remoteService) { + private final ReferentialSynchronizeDiffsEngine diffsEngine; + + public UnidirectionalReferentialSynchronizeEngine(ReferentialSynchronizeDiffsEngine diffsEngine, + UnidirectionalReferentialSynchronizeLocalService localService) { + this.diffsEngine = diffsEngine; this.localService = localService; - this.remoteService = remoteService; } public UnidirectionalReferentialSynchronizeContext prepareContext() { - LocalReferentialStates localReferentialStates = localService.getLocalSourceReferentialStates(); - RemoteReferentialDiff remoteReferentialDiff = remoteService.getReferentialDifferential(localReferentialStates); + ReferentialSynchronizeDiffs synchronizeDiffs = diffsEngine.build(); ImmutableSet.Builder<UnidirectionalReferentialSynchronizeRequest.Builder<?>> referentialSynchronizeRequestBuilders = ImmutableSet.builder(); @@ -63,12 +67,15 @@ public class UnidirectionalReferentialSynchronizeEngine { // Première étape pour construire les builder de requète et calculer au passage les ids à faire remplacer // par l'utilisateur - for (String referentialName : remoteReferentialDiff.getReferentialNames()) { + ReferentialSynchronizeDiff localDiff = synchronizeDiffs.getLeftDiff(); + ReferentialSynchronizeDiff centralDiff = synchronizeDiffs.getRightDiff(); + + for (Class<? extends ReferentialDto> referentialName : synchronizeDiffs.getReferentialNames()) { - UnidirectionalReferentialSynchronizeRequest.Builder<?> referentialSynchronizeRequestBuilder = - computeReferentialSynchronizeRequestBuilder(referentialName, remoteReferentialDiff, callbackRequests); + UnidirectionalReferentialSynchronizeRequest.Builder<?> builder = computeReferentialSynchronizeRequestBuilder( + referentialName, synchronizeDiffs, callbackRequests); - referentialSynchronizeRequestBuilders.add(referentialSynchronizeRequestBuilder); + referentialSynchronizeRequestBuilders.add(builder); } @@ -93,7 +100,7 @@ public class UnidirectionalReferentialSynchronizeEngine { for (UnidirectionalReferentialSynchronizeRequest.Builder<?> referentialSynchronizeRequestBuilder : context.getReferentialSynchronizeRequestBuilders()) { - String referentialName = referentialSynchronizeRequestBuilder.getReferentialName(); + Class<? extends ReferentialDto> referentialName = referentialSynchronizeRequestBuilder.getReferentialName(); if (needCallback && callbackResults.containsReferentialName(referentialName)) { @@ -133,48 +140,67 @@ public class UnidirectionalReferentialSynchronizeEngine { } - private <R extends ReferentialDto> UnidirectionalReferentialSynchronizeRequest.Builder<R> computeReferentialSynchronizeRequestBuilder(String referentialName, RemoteReferentialDiff remoteReferentialDiff, UnidirectionalReferentialSynchronizeCallbackRequests callbackRequests) { + private <R extends ReferentialDto> UnidirectionalReferentialSynchronizeRequest.Builder<R> computeReferentialSynchronizeRequestBuilder(Class<R> referentialName, + ReferentialSynchronizeDiffs diffs, + UnidirectionalReferentialSynchronizeCallbackRequests callbackRequests) { UnidirectionalReferentialSynchronizeRequest.Builder<R> builder = UnidirectionalReferentialSynchronizeRequest.builder(referentialName); - Collection<R> referentialsToAdd = remoteReferentialDiff.getReferentialsToAdd(referentialName); - if (CollectionUtils.isNotEmpty(referentialsToAdd)) { - referentialsToAdd.forEach(builder::entityToAdd); + // Tous les référentiels ajoutés sur la base centrale doivent être copié en local + Optional<ImmutableSet<ReferentialSynchronizeDiffState>> optionalAddDiffStates = diffs.getRightAddedReferentials(referentialName); + if (optionalAddDiffStates.isPresent()) { + + ImmutableSet<ReferentialSynchronizeDiffState> referentialSynchronizeDiffStates = optionalAddDiffStates.get(); + ImmutableSet<R> referentials = diffsEngine.getRightReferentials(referentialName, referentialSynchronizeDiffStates); + referentials.forEach(builder::entityToAdd); } - Collection<R> referentialsToUpdate = remoteReferentialDiff.getReferentialsToUpdate(referentialName); - if (CollectionUtils.isNotEmpty(referentialsToUpdate)) { - referentialsToUpdate.forEach(builder::entityToUpdate); + // Tous les référentiels mises à jour dans la base centrale doivent être copié en local + Optional<ImmutableSet<ReferentialSynchronizeDiffState>> optionalUpdateDiffStates = diffs.getRightUpdatedReferentials(referentialName); + if (optionalUpdateDiffStates.isPresent()) { + + ImmutableSet<ReferentialSynchronizeDiffState> referentialSynchronizeDiffStates = optionalUpdateDiffStates.get(); + ImmutableSet<R> referentials = diffsEngine.getRightReferentials(referentialName, referentialSynchronizeDiffStates); + referentials.forEach(builder::entityToUpdate); } - Set<String> idsToRemove = remoteReferentialDiff.getReferentialsToRemove(referentialName); - Set<String> blockingIdsToRemove = null; + // Tous les référentiels non présents dans la base centrale doivent être supprimés en local + Optional<ImmutableSet<ReferentialSynchronizeDiffState>> optionalRemoveDiffStates = diffs.getLeftAddedReferentials(referentialName); + if (optionalRemoveDiffStates.isPresent()) { - if (CollectionUtils.isNotEmpty(idsToRemove)) { + ImmutableSet<ReferentialSynchronizeDiffState> referentialSynchronizeDiffStates = optionalRemoveDiffStates.get(); - Set<String> blockingIdsToRemoveFromLocal = localService.filterIdsUsedInLocalSource(referentialName, idsToRemove); + Set<String> idsToRemove = referentialSynchronizeDiffStates.stream().map(ReferentialSynchronizeDiffState::getId).collect(Collectors.toSet()); + Set<String> blockingIdsToRemove = null; - blockingIdsToRemove = idsToRemove - .stream() - .filter(blockingIdsToRemoveFromLocal::contains) - .collect(Collectors.toSet()); + if (CollectionUtils.isNotEmpty(idsToRemove)) { - idsToRemove.removeAll(blockingIdsToRemove); - idsToRemove.forEach(builder::entityToRemove); + Set<String> blockingIdsToRemoveFromLocal = localService.filterIdsUsedInLocalSource(referentialName, idsToRemove); - } + blockingIdsToRemove = idsToRemove + .stream() + .filter(blockingIdsToRemoveFromLocal::contains) + .collect(Collectors.toSet()); - boolean needCallback = CollectionUtils.isNotEmpty(blockingIdsToRemove); + idsToRemove.removeAll(blockingIdsToRemove); + idsToRemove.forEach(builder::entityToRemove); - if (needCallback) { + } + + boolean needCallback = CollectionUtils.isNotEmpty(blockingIdsToRemove); + + if (needCallback) { - ReferentialReferenceSet<R> availableReferenceSet = remoteService.getEnabledReferentialReferenceSet(referentialName); - Set<ReferentialReference<R>> availableReferentials = availableReferenceSet.getReferences(); + ReferentialReferenceSet<R> availableReferenceSet = diffsEngine.getRightEnabledReferentialReferenceSet(referentialName); + Set<ReferentialReference<R>> availableReferentials = availableReferenceSet.getReferences(); - Set<ReferentialReference<R>> blockingReferentialsToRemove = localService.getLocalSourceReferentialToDelete(referentialName, blockingIdsToRemove); + Set<ReferentialReference<R>> blockingReferentialsToRemove = localService.getLocalSourceReferentialToDelete(referentialName, blockingIdsToRemove); - callbackRequests.addCallbackRequest(referentialName, blockingReferentialsToRemove, availableReferentials); + callbackRequests.addCallbackRequest(referentialName, blockingReferentialsToRemove, availableReferentials); + + } + referentialSynchronizeDiffStates.stream().map(ReferentialSynchronizeDiffState::getId).forEach(builder::entityToRemove); } return builder; diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java index 0e9f20f..b974b5f 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java @@ -25,7 +25,6 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; import fr.ird.observe.services.ObserveService; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; -import fr.ird.observe.services.spi.NoDataAccess; import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadReferentialPermission; import fr.ird.observe.services.spi.Write; @@ -43,14 +42,6 @@ import java.util.Set; public interface UnidirectionalReferentialSynchronizeLocalService extends ObserveService { /** - * Récupération sur la source à synchroniser des versions de ses référentiels. - * - * @return les versions de tous les référentiels de la base à synchroniser. - */ - @ReadReferentialPermission - LocalReferentialStates getLocalSourceReferentialStates(); - - /** * Pour un référentiel d'un type donné (son nom est donné), détecte les référentiels dont * les identifiants sont passés en paramètres qui sont réellement utilisés dans la source locale. * @@ -59,19 +50,19 @@ public interface UnidirectionalReferentialSynchronizeLocalService extends Observ * @return les identifiants des référentiels passés en paramètres qui sont réellement utilisés dans la source locale. */ @ReadReferentialPermission - Set<String> filterIdsUsedInLocalSource(String referentialName, Set<String> ids); + <R extends ReferentialDto> Set<String> filterIdsUsedInLocalSource(Class<R> referentialName, Set<String> ids); /** * Pour récupérer les références sur les référentiels d'un certain type à supprimer, * cet ensemble servira à les afficher dans l'interface graphique pour effectuer le remplacement. * - * @param ids les identifiants des référentiels à supprimer - * @param referentialName le nom du référentiel à récupérer * @param <R> type des référentiels à récupérer + * @param referentialName le nom du référentiel à récupérer + * @param ids les identifiants des référentiels à supprimer * @return l'ensemble des références de référentiel à supprimer. */ @ReadReferentialPermission - <R extends ReferentialDto> Set<ReferentialReference<R>> getLocalSourceReferentialToDelete(String referentialName, Set<String> ids); + <R extends ReferentialDto> Set<ReferentialReference<R>> getLocalSourceReferentialToDelete(Class<R> referentialName, Set<String> ids); /** * Pour produire le code sql à partir de la demande pour un référentiel donné. @@ -80,7 +71,7 @@ public interface UnidirectionalReferentialSynchronizeLocalService extends Observ * @param <R> type des référentiels à traiter * @return l'ensemble des requètes sql à appliquer. */ - @NoDataAccess + @ReadReferentialPermission <R extends ReferentialDto> Set<String> generateSqlRequests(UnidirectionalReferentialSynchronizeRequest<R> request); /** diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteService.java deleted file mode 100644 index 849973e..0000000 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteService.java +++ /dev/null @@ -1,58 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; - -/*- - * #%L - * ObServe :: Services API - * %% - * 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 fr.ird.observe.services.ObserveService; -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; -import fr.ird.observe.services.spi.ReadReferentialPermission; - -/** - * Service pour effectuer une synchronisation de référentiel unidirectionnelle. - * - * Created on 27/06/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public interface UnidirectionalReferentialSynchronizeRemoteService extends ObserveService { - - /** - * Récupération sur la source centrale du différentiel des référentiel. - * - * @param localReferentialStates les états de référentiel de la source à synchroniser. - * @return le résultat de calcul de différentiel de référentiel. - */ - @ReadReferentialPermission - RemoteReferentialDiff getReferentialDifferential(LocalReferentialStates localReferentialStates); - - /** - * Pour récupérer un ensemble de référentiels non désactivés pour un type donné (et ceci afin de remplacer - * un référentiel de même type supprimé ou désactivé). - * - * @param referentialName le nom du référentiel - * @return l'ensemble des référentiels non désactivés du type demandé - */ - @ReadReferentialPermission - <R extends ReferentialDto> ReferentialReferenceSet<R> getEnabledReferentialReferenceSet(String referentialName); -} diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRequest.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRequest.java index 9054a25..fbab2e4 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRequest.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRequest.java @@ -27,6 +27,8 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.referential.ReferentialDto; +import java.util.Objects; + /** * Pour un référentiel de type donné, l'ensemble des opérations à effectuer. * @@ -39,17 +41,18 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; */ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDto> { - public static <R extends ReferentialDto> Builder<R> builder(String referentialName) { + public static <R extends ReferentialDto> Builder<R> builder(Class<R> referentialName) { + Objects.nonNull(referentialName); return new Builder<>(referentialName); } - private final String referentialName; + private final Class<R> referentialName; private final ImmutableSet<R> referentialToAdd; private final ImmutableSet<R> referentialToUpdate; private final ImmutableSet<String> referentialToRemove; private final ImmutableMap<String, String> referentialToReplace; - public String getReferentialName() { + public Class<R> getReferentialName() { return referentialName; } @@ -88,7 +91,7 @@ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDt @Override public String toString() { return MoreObjects.toStringHelper(this) - .add("referentialName", referentialName) + .add("referentialName", referentialName.getName()) .add("referentialToAdd", referentialToAdd.size()) .add("referentialToUpdate", referentialToUpdate.size()) .add("referentialToRemove", referentialToRemove.size()) @@ -96,7 +99,7 @@ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDt .toString(); } - private UnidirectionalReferentialSynchronizeRequest(String referentialName, + private UnidirectionalReferentialSynchronizeRequest(Class<R> referentialName, ImmutableSet<R> referentialToAdd, ImmutableSet<R> referentialToUpdate, ImmutableSet<String> referentialToRemove, @@ -110,7 +113,7 @@ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDt public static class Builder<R extends ReferentialDto> { - private final String referentialName; + private final Class<R> referentialName; private final ImmutableSet.Builder<R> toAddBuilder = ImmutableSet.builder(); private final ImmutableSet.Builder<R> toUpdateBuilder = ImmutableSet.builder(); private final ImmutableSet.Builder<String> toRemoveBuilder = ImmutableSet.builder(); @@ -136,7 +139,7 @@ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDt return this; } - public String getReferentialName() { + public Class<R> getReferentialName() { return referentialName; } @@ -152,7 +155,7 @@ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDt } - private Builder(String referentialName) { + private Builder(Class<R> referentialName) { this.referentialName = referentialName; } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeResult.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeResult.java index 33f158c..52c46a0 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeResult.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeResult.java @@ -28,9 +28,9 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; import org.apache.commons.lang3.tuple.Pair; import java.util.Collection; +import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; -import java.util.TreeSet; /** * Contient toutes les opérations réalisées lors de la synchronisation des référentiels. @@ -42,14 +42,14 @@ import java.util.TreeSet; */ public class UnidirectionalReferentialSynchronizeResult { - private final Set<String> referentialNames; - private final Multimap<String, String> referentialAdded; - private final Multimap<String, String> referentialUpdated; - private final Multimap<String, Pair<String, String>> referentialReplaced; - private final Multimap<String, String> referentialRemoved; + private final Set<Class<? extends ReferentialDto>> referentialNames; + private final Multimap<Class<? extends ReferentialDto>, String> referentialAdded; + private final Multimap<Class<? extends ReferentialDto>, String> referentialUpdated; + private final Multimap<Class<? extends ReferentialDto>, Pair<String, String>> referentialReplaced; + private final Multimap<Class<? extends ReferentialDto>, String> referentialRemoved; public UnidirectionalReferentialSynchronizeResult() { - this.referentialNames = new TreeSet<>(); + this.referentialNames = new LinkedHashSet<>(); this.referentialAdded = ArrayListMultimap.create(); this.referentialUpdated = ArrayListMultimap.create(); this.referentialReplaced = ArrayListMultimap.create(); @@ -60,29 +60,29 @@ public class UnidirectionalReferentialSynchronizeResult { return referentialNames.isEmpty(); } - public Set<String> getReferentialNames() { + public Set<Class<? extends ReferentialDto>> getReferentialNames() { return referentialNames; } - public Collection<String> getReferentialAdded(String referentialName) { + public Collection<String> getReferentialAdded(Class<? extends ReferentialDto> referentialName) { return referentialAdded.get(referentialName); } - public Collection<String> getReferentialUpdated(String referentialName) { + public Collection<String> getReferentialUpdated(Class<? extends ReferentialDto> referentialName) { return referentialUpdated.get(referentialName); } - public Collection<Pair<String, String>> getReferentialReplaced(String referentialName) { + public Collection<Pair<String, String>> getReferentialReplaced(Class<? extends ReferentialDto> referentialName) { return referentialReplaced.get(referentialName); } - public Collection<String> getReferentialRemoved(String referentialName) { + public Collection<String> getReferentialRemoved(Class<? extends ReferentialDto> referentialName) { return referentialRemoved.get(referentialName); } void flushRequest(UnidirectionalReferentialSynchronizeRequest<?> referentialSynchronizeRequest) { - String referentialName = referentialSynchronizeRequest.getReferentialName(); + Class<? extends ReferentialDto> referentialName = referentialSynchronizeRequest.getReferentialName(); if (referentialSynchronizeRequest.withReferentialToAdd()) { @@ -118,22 +118,22 @@ public class UnidirectionalReferentialSynchronizeResult { } - private void addReferentialAdded(String referentialName, String id) { + private void addReferentialAdded(Class<? extends ReferentialDto> referentialName, String id) { referentialNames.add(referentialName); referentialAdded.put(referentialName, id); } - private void addReferentialUpdated(String referentialName, String id) { + private void addReferentialUpdated(Class<? extends ReferentialDto> referentialName, String id) { referentialNames.add(referentialName); referentialUpdated.put(referentialName, id); } - private void addReferentialRemoved(String referentialName, String id) { + private void addReferentialRemoved(Class<? extends ReferentialDto> referentialName, String id) { referentialNames.add(referentialName); referentialRemoved.put(referentialName, id); } - private void addReferentialReplaced(String referentialName, String idToReplace, String replaceId) { + private void addReferentialReplaced(Class<? extends ReferentialDto> referentialName, String idToReplace, String replaceId) { referentialNames.add(referentialName); referentialReplaced.put(referentialName, Pair.of(idToReplace, replaceId)); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceTopia.java index ea0d1bc..3e4b2bd 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceTopia.java @@ -8,6 +8,8 @@ import fr.ird.observe.entities.constants.ReferenceStatusPersist; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; import fr.ird.observe.services.ObserveServiceTopia; 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.dto.referential.ReferentialReferenceSet; import org.apache.commons.logging.Log; @@ -55,6 +57,24 @@ public class ReferentialSynchronizeDiffServiceTopia extends ObserveServiceTopia } @Override + public <R extends ReferentialDto> ImmutableSet<R> getReferentials(Class<R> referentialName, ImmutableSet<String> ids) { + Class<? extends ObserveReferentialEntity> entityType = BinderEngine.get().getReferentialEntityType(referentialName); + return getReferentials0(referentialName, entityType, ids); + } + + private <E extends ObserveReferentialEntity, R extends ReferentialDto> ImmutableSet<R> getReferentials0(Class<R> dtoType, Class<E> entityType, ImmutableSet<String> ids) { + ImmutableSet.Builder<R> result = ImmutableSet.builder(); + ReferentialLocale referentialLocale = getReferentialLocale(); + List<E> entities = loadEntities(entityType, ids); + for (E entity : entities) { + ReferentialBinderSupport<ObserveReferentialEntity, R> binder = BinderEngine.get().getReferentialBinder(dtoType); + result.add(binder.toDto(referentialLocale, entity)); + } + + return result.build(); + } + + @Override public ReferentialDataSourceStates getSourceReferentialStates() { if (log.isTraceEnabled()) { 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 48f62a4..2c88a67 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 @@ -23,7 +23,6 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; */ import fr.ird.observe.ObserveEntityEnum; -import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.binder.BinderEngine; @@ -60,33 +59,12 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser private static final Log log = LogFactory.getLog(UnidirectionalReferentialSynchronizeLocalServiceTopia.class); @Override - public LocalReferentialStates getLocalSourceReferentialStates() { - - if (log.isTraceEnabled()) { - log.trace("getLocalSourceReferentialStates()"); - } - - LocalReferentialStates localReferentialStates = new LocalReferentialStates(); - for (ObserveEntityEnum referenceEntity : Entities.REFERENCE_ENTITIES) { - if (ObserveEntityEnum.LastUpdateDate.equals(referenceEntity)) { - continue; - } - Class entityType = referenceEntity.getContract(); - getLocalSourceReferentialVersions0(referenceEntity.name(), entityType, localReferentialStates); - } - return localReferentialStates; - - } - - @Override - public Set<String> filterIdsUsedInLocalSource(String referentialName, Set<String> ids) { + public <R extends ReferentialDto> Set<String> filterIdsUsedInLocalSource(Class<R> referentialName, Set<String> ids) { if (log.isTraceEnabled()) { log.trace("filterIdsUsedInLocalSource(" + referentialName + ", " + ids + ")"); } - - ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(referentialName); - Class entityType = entityEnum.getContract(); + Class entityType = BinderEngine.get().getReferentialEntityType(referentialName); Set<String> result = new LinkedHashSet<>(); for (String id : ids) { int count = countUsage0(entityType, id); @@ -99,12 +77,10 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser } @Override - public <R extends ReferentialDto> Set<ReferentialReference<R>> getLocalSourceReferentialToDelete(String referentialName, Set<String> ids) { + public <R extends ReferentialDto> Set<ReferentialReference<R>> getLocalSourceReferentialToDelete(Class<R> referentialName, Set<String> ids) { - ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(referentialName); - Class entityType = entityEnum.getContract(); - Class dtoType = BinderEngine.get().getReferentialDtoType(entityType); - return getLocalSourceReferentialToDelete0(entityType, dtoType, ids); + Class<? extends ObserveReferentialEntity> entityType = BinderEngine.get().getReferentialEntityType(referentialName); + return getLocalSourceReferentialToDelete0(entityType, referentialName, ids); } @@ -117,14 +93,13 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser Set<String> result = new LinkedHashSet<>(); - String referentialName = request.getReferentialName(); - - ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(referentialName); - Class entityType = entityEnum.getContract(); - Class<R> dtoType = BinderEngine.get().getReferentialDtoType(entityType); + Class<R> dtoType = request.getReferentialName(); + Class<ObserveReferentialEntity> entityType = BinderEngine.get().getReferentialEntityType(dtoType); + ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(entityType); + String referentielName = entityEnum.name(); TopiaMetadataModel metadataModel = serviceContext.getTopiaApplicationContext().getMetadataModel(); - TopiaMetadataEntity metadataEntity = metadataModel.getEntity(referentialName); + TopiaMetadataEntity metadataEntity = metadataModel.getEntity(referentielName); if (request.withReferentialToAdd()) { InsertSqlStatementGenerator<R> sqlStatementGenerator = new InsertSqlStatementGenerator<>(metadataEntity, dtoType); @@ -136,7 +111,7 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser if (request.withReferentialToUpdate()) { - UpdateSqlStatementGenerator<R> sqlStatementGenerator = new UpdateSqlStatementGenerator<R>(metadataEntity, dtoType); + UpdateSqlStatementGenerator<R> sqlStatementGenerator = new UpdateSqlStatementGenerator<>(metadataEntity, dtoType); for (R referentialDto : request.getReferentialToUpdate()) { String sql = sqlStatementGenerator.generateSql(referentialDto); result.add(sql); @@ -146,7 +121,7 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser if (request.withReferentialToReplace()) { - ReplaceSqlStatementGenerator sqlStatementGenerator = new ReplaceSqlStatementGenerator(metadataModel, referentialName); + ReplaceSqlStatementGenerator sqlStatementGenerator = new ReplaceSqlStatementGenerator(metadataModel, referentielName); for (Map.Entry<String, String> entry : request.getReferentialToReplace().entrySet()) { String sql = sqlStatementGenerator.generateSql(entry.getKey(), entry.getValue()); result.add(sql); @@ -180,15 +155,6 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser } - private <E extends ObserveReferentialEntity> void getLocalSourceReferentialVersions0(String entityName, Class<E> entityType, LocalReferentialStates localReferentialStates) { - - TopiaDao<E> dao = getTopiaPersistenceContext().getDao(entityType); - for (E e : dao) { - localReferentialStates.addReferentialVersion(entityName, e.getTopiaId(), e.getTopiaVersion(), e.isDisabled()); - } - - } - private <E extends ObserveReferentialEntity> int countUsage0(Class<E> entityType, String id) { TopiaDao<E> dao = getTopiaPersistenceContext().getDao(entityType); @@ -202,7 +168,7 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser } - private <E extends ObserveReferentialEntity, R extends ReferentialDto> Set<ReferentialReference<R>> getLocalSourceReferentialToDelete0(Class<E> entityType,Class<R> dtoType, Set<String> ids) { + private <E extends ObserveReferentialEntity, R extends ReferentialDto> Set<ReferentialReference<R>> getLocalSourceReferentialToDelete0(Class<E> entityType, Class<R> dtoType, Set<String> ids) { TopiaDao<E> dao = getTopiaPersistenceContext().getDao(entityType); List<E> entities = dao.forTopiaIdIn(ids).findAll(); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteServiceTopia.java deleted file mode 100644 index 1b0f4b2..0000000 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRemoteServiceTopia.java +++ /dev/null @@ -1,147 +0,0 @@ -package fr.ird.observe.services.service.actions.synchro.referential.legacy; - -/*- - * #%L - * ObServe :: Services ToPIA Implementation - * %% - * 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 fr.ird.observe.ObserveEntityEnum; -import fr.ird.observe.ObserveTopiaPersistenceContext; -import fr.ird.observe.entities.Entities; -import fr.ird.observe.entities.constants.ReferenceStatusPersist; -import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; -import fr.ird.observe.services.ObserveServiceTopia; -import fr.ird.observe.services.binder.BinderEngine; -import fr.ird.observe.services.dto.constants.ReferentialLocale; -import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialReferenceSet; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.TopiaDao; - -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Created on 27/06/16. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 5.0 - */ -public class UnidirectionalReferentialSynchronizeRemoteServiceTopia extends ObserveServiceTopia implements UnidirectionalReferentialSynchronizeRemoteService { - - /** Logger. */ - private static final Log log = LogFactory.getLog(UnidirectionalReferentialSynchronizeRemoteServiceTopia.class); - - @Override - public RemoteReferentialDiff getReferentialDifferential(LocalReferentialStates localReferentialStates) { - - if (log.isTraceEnabled()) { - log.trace("getReferentialDifferential(" + localReferentialStates + ")"); - } - - RemoteReferentialDiff result = new RemoteReferentialDiff(); - for (ObserveEntityEnum referenceEntity : Entities.REFERENCE_ENTITIES) { - if (ObserveEntityEnum.LastUpdateDate.equals(referenceEntity)) { - continue; - } - Class entityType = referenceEntity.getContract(); - getReferentialDifferential0(referenceEntity.name(), entityType, localReferentialStates, result); - } - return result; - - } - - @Override - public <R extends ReferentialDto> ReferentialReferenceSet<R> getEnabledReferentialReferenceSet(String referentialName) { - - if (log.isTraceEnabled()) { - log.trace("getEnabledReferentialReferenceSet(" + referentialName + ")"); - } - - ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(referentialName); - Class entityType = entityEnum.getContract(); - Class dtoType = BinderEngine.get().getReferentialDtoType(entityType); - ReferentialReferenceSet<R> result = getLocalSourceEnabledReferenceSet0(entityType, dtoType); - return result; - - } - - - private <E extends ObserveReferentialEntity> void getReferentialDifferential0(String entityName, Class<E> entityType, LocalReferentialStates localReferentialStates, RemoteReferentialDiff result) { - - ReferentialLocale referentialLocale = getReferentialLocale(); - BinderEngine binderEngine = BinderEngine.get(); -// Class<ReferentialDto> referentialDtoType = binderEngine.getReferentialDtoType(entityType); - Map<String, Long> localReferentialVersions = localReferentialStates.getReferentialVersions(entityName); -// Collection<String> localReferentialDisabled = localReferentialStates.getReferentialDisabled(entityName); - TopiaDao<E> dao = getTopiaPersistenceContext().getDao(entityType); - for (E centralReferentialEntity : dao) { - - String id = centralReferentialEntity.getTopiaId(); - Long localVersion = localReferentialVersions == null ? null : localReferentialVersions.get(id); - - if (localVersion == null) { - - // nouvelle entité - ReferentialDto dto = binderEngine.transformEntityToReferentialDto(referentialLocale, centralReferentialEntity); - result.addReferentialToAdd(entityName, dto); - continue; - } - - long centralVersion = centralReferentialEntity.getTopiaVersion(); - - if (centralVersion > localVersion) { - - // entité à mettre à jour - ReferentialDto dto = binderEngine.transformEntityToReferentialDto(referentialLocale, centralReferentialEntity); - result.addReferentialToUpdate(entityName, dto); - } - - } - - // entités supprimées - Set<String> idsToDelete = localReferentialVersions == null ? new LinkedHashSet<>() : new LinkedHashSet<>(localReferentialVersions.keySet()); - - List<String> centralIds = dao.findAllIds(); - idsToDelete.removeAll(centralIds); - - for (String id : idsToDelete) { - - // entité supprimée, il faudra que l'utilisateur la change - result.addReferentialToDelete(entityName, id); - } - - } - - private <E extends ObserveReferentialEntity, R extends ReferentialDto> ReferentialReferenceSet<R> getLocalSourceEnabledReferenceSet0(Class<E> entityType, Class<R> dtoType) { - - ObserveTopiaPersistenceContext persistenceContext = getTopiaPersistenceContext(); - TopiaDao<E> dao = persistenceContext.getDao(entityType); - List<E> entities = dao.forEquals(ObserveReferentialEntity.PROPERTY_STATUS, ReferenceStatusPersist.enabled).findAll(); - ReferentialReferenceSet<R> result = toReferentialReferenceSet(dtoType, entities, null); - return result; - - } - - -} diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/InsertSqlStatementGenerator.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/InsertSqlStatementGenerator.java index fd25ccd..429a2f7 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/InsertSqlStatementGenerator.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/sql/InsertSqlStatementGenerator.java @@ -117,8 +117,8 @@ public class InsertSqlStatementGenerator<R extends ReferentialDto> { String dbColumnName = metadataEntity.getDbColumnName(propertyName); String tableName = metadataEntity.getBdManyToManyAssociationTableName(propertyName); String typeName = entry.getValue(); - Class entityType = ObserveEntityEnum.valueOf(typeName).getContract(); - Class<? extends ReferentialDto> referentialype = BinderEngine.get().getReferentialDtoType(entityType); + ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(typeName); + Class<? extends ReferentialDto> referentialype = BinderEngine.get().getReferentialDtoType(entityEnum); ManyToManyAssociationStruct manyToManyAssociation = new ManyToManyAssociationStruct(propertyName, dbColumnName, tableName, referentialype); manyToManyAssociations.add(manyToManyAssociation); } -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit ee7543240510bc2ed51d064527f565b6fee4d7cb Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 13:39:16 2016 +0200 ajout méthode utile et utilisation --- .../ird/observe/services/binder/BinderEngine.java | 5 ++ .../services/service/DataSourceServiceTopia.java | 3 +- .../UnidirectionalSynchronizeReferentialTest.java | 89 ++++++++++++---------- 3 files changed, 56 insertions(+), 41 deletions(-) diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/binder/BinderEngine.java b/observe-services-topia/src/main/java/fr/ird/observe/services/binder/BinderEngine.java index 3542685..4a4117c 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/binder/BinderEngine.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/binder/BinderEngine.java @@ -24,6 +24,7 @@ package fr.ird.observe.services.binder; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.entities.ObserveDataEntity; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; import fr.ird.observe.services.binder.data.DataBinderSupport; @@ -113,6 +114,10 @@ public class BinderEngine implements ReferenceBinderEngine { } + public <D extends ReferentialDto> Class<D> getReferentialDtoType(ObserveEntityEnum entityEnum) { + Class<D> dtoType = BinderEngine.get().getReferentialDtoType((Class) entityEnum.getContract()); + return dtoType ; + } public <D extends ReferentialDto, E extends ObserveReferentialEntity> Class<D> getReferentialDtoType(Class<E> entityType) { Class<D> result = (Class<D>) referentialEntityToDtoTypes.get(entityType); if (result == null) { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java index 1e2382a..fce5c37 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -683,8 +683,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS String type = propertyType.getType(); ObserveEntityEnum observeEntityEnum = ObserveEntityEnum.valueOf(type); - Class entityType = observeEntityEnum.getContract(); - Class<? extends ReferentialDto> dtoType = BinderEngine.get().getReferentialDtoType(entityType); + Class<? extends ReferentialDto> dtoType = BinderEngine.get().getReferentialDtoType(observeEntityEnum); typesInShellBuilder.add(dtoType); if (log.isInfoEnabled()) { log.info("For container type:" + parentObserveEntityEnum + ", add to shell: " + observeEntityEnum); diff --git a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalSynchronizeReferentialTest.java b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalSynchronizeReferentialTest.java index 5d1cbe2..d1408e4 100644 --- a/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalSynchronizeReferentialTest.java +++ b/observe-services-topia/src/test/java/fr/ird/observe/services/service/actions/synchro/UnidirectionalSynchronizeReferentialTest.java @@ -26,12 +26,19 @@ import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.entities.Entities; import fr.ird.observe.services.ApplicationContextResource; import fr.ird.observe.services.DataSourceResource; +import fr.ird.observe.services.binder.BinderEngine; +import fr.ird.observe.services.dto.referential.PersonDto; +import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.SpeciesDto; +import fr.ird.observe.services.dto.referential.VesselDto; +import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; import fr.ird.observe.services.service.AbstractServiceTopiaTest; +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.legacy.UnidirectionalReferentialSynchronizeCallbackResults; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeContext; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeEngine; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeRemoteService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeResult; import fr.ird.observe.test.DatabaseName; import fr.ird.observe.test.ObserveFixtures; @@ -63,12 +70,14 @@ public class UnidirectionalSynchronizeReferentialTest extends AbstractServiceTop public final DataSourceResource dataSourceResourceCentral = new DataSourceResource(applicationContextResourceCentral); private UnidirectionalReferentialSynchronizeLocalService localService; - private UnidirectionalReferentialSynchronizeRemoteService remoteService; + private ReferentialSynchronizeDiffsEngine diffsEngine; @Before public void setUp() throws Exception { localService = dataSourceResource.newService(UnidirectionalReferentialSynchronizeLocalService.class); - remoteService = dataSourceResourceCentral.newService(UnidirectionalReferentialSynchronizeRemoteService.class); + diffsEngine = new ReferentialSynchronizeDiffsEngine( + dataSourceResource.newService(ReferentialSynchronizeDiffService.class), + dataSourceResourceCentral.newService(ReferentialSynchronizeDiffService.class)); } @DatabaseNameConfiguration(DatabaseName.empty_h2) @@ -78,13 +87,13 @@ public class UnidirectionalSynchronizeReferentialTest extends AbstractServiceTop @Test public void testSynchronizeFromEmptyDatabase() { - UnidirectionalReferentialSynchronizeEngine referentialSynchronizeEngine = new UnidirectionalReferentialSynchronizeEngine(localService, remoteService); + UnidirectionalReferentialSynchronizeEngine referentialSynchronizeEngine = new UnidirectionalReferentialSynchronizeEngine(diffsEngine, localService); UnidirectionalReferentialSynchronizeContext unidirectionalReferentialSynchronizeContext = referentialSynchronizeEngine.prepareContext(); UnidirectionalReferentialSynchronizeResult result = referentialSynchronizeEngine.prepareResult(unidirectionalReferentialSynchronizeContext, null); referentialSynchronizeEngine.finish(unidirectionalReferentialSynchronizeContext); Assert.assertNotNull(result); - Set<String> referentialNames = result.getReferentialNames(); + Set<Class<? extends ReferentialDto>> referentialNames = result.getReferentialNames(); Assert.assertNotNull(referentialNames); Assert.assertFalse(referentialNames.isEmpty()); @@ -93,11 +102,12 @@ public class UnidirectionalSynchronizeReferentialTest extends AbstractServiceTop if (ObserveEntityEnum.LastUpdateDate.equals(referenceEntity)) { continue; } - Assert.assertTrue(referentialNames.contains(referenceEntity.name())); - Assert.assertTrue(result.getReferentialUpdated(referenceEntity.name()).isEmpty()); - Assert.assertTrue(result.getReferentialRemoved(referenceEntity.name()).isEmpty()); - Assert.assertTrue(result.getReferentialReplaced(referenceEntity.name()).isEmpty()); - Assert.assertFalse(result.getReferentialAdded(referenceEntity.name()).isEmpty()); + Class<? extends ReferentialDto> dtoType = BinderEngine.get().getReferentialDtoType(referenceEntity); + Assert.assertTrue(referentialNames.contains(dtoType)); + Assert.assertTrue(result.getReferentialUpdated(dtoType).isEmpty()); + Assert.assertTrue(result.getReferentialRemoved(dtoType).isEmpty()); + Assert.assertTrue(result.getReferentialReplaced(dtoType).isEmpty()); + Assert.assertFalse(result.getReferentialAdded(dtoType).isEmpty()); } } @@ -109,13 +119,13 @@ public class UnidirectionalSynchronizeReferentialTest extends AbstractServiceTop @Test public void testSynchronizeWithNochange() { - UnidirectionalReferentialSynchronizeEngine referentialSynchronizeEngine = new UnidirectionalReferentialSynchronizeEngine(localService, remoteService); + UnidirectionalReferentialSynchronizeEngine referentialSynchronizeEngine = new UnidirectionalReferentialSynchronizeEngine(diffsEngine, localService); UnidirectionalReferentialSynchronizeContext unidirectionalReferentialSynchronizeContext = referentialSynchronizeEngine.prepareContext(); UnidirectionalReferentialSynchronizeResult result = referentialSynchronizeEngine.prepareResult(unidirectionalReferentialSynchronizeContext, null); referentialSynchronizeEngine.finish(unidirectionalReferentialSynchronizeContext); Assert.assertNotNull(result); - Set<String> referentialNames = result.getReferentialNames(); + Set<Class<? extends ReferentialDto>> referentialNames = result.getReferentialNames(); Assert.assertNotNull(referentialNames); Assert.assertTrue(referentialNames.isEmpty()); @@ -123,10 +133,11 @@ public class UnidirectionalSynchronizeReferentialTest extends AbstractServiceTop if (ObserveEntityEnum.LastUpdateDate.equals(referenceEntity)) { continue; } - Assert.assertTrue(result.getReferentialUpdated(referenceEntity.name()).isEmpty()); - Assert.assertTrue(result.getReferentialRemoved(referenceEntity.name()).isEmpty()); - Assert.assertTrue(result.getReferentialReplaced(referenceEntity.name()).isEmpty()); - Assert.assertTrue(result.getReferentialAdded(referenceEntity.name()).isEmpty()); + Class<? extends ReferentialDto> dtoType = BinderEngine.get().getReferentialDtoType(referenceEntity); + Assert.assertTrue(result.getReferentialUpdated(dtoType).isEmpty()); + Assert.assertTrue(result.getReferentialRemoved(dtoType).isEmpty()); + Assert.assertTrue(result.getReferentialReplaced(dtoType).isEmpty()); + Assert.assertTrue(result.getReferentialAdded(dtoType).isEmpty()); } } @@ -139,65 +150,65 @@ public class UnidirectionalSynchronizeReferentialTest extends AbstractServiceTop public void testSynchronizeWithAllChanges() { - UnidirectionalReferentialSynchronizeEngine referentialSynchronizeEngine = new UnidirectionalReferentialSynchronizeEngine(localService, remoteService); + UnidirectionalReferentialSynchronizeEngine referentialSynchronizeEngine = new UnidirectionalReferentialSynchronizeEngine(diffsEngine, localService); UnidirectionalReferentialSynchronizeContext unidirectionalReferentialSynchronizeContext = referentialSynchronizeEngine.prepareContext(); UnidirectionalReferentialSynchronizeCallbackResults results = new UnidirectionalReferentialSynchronizeCallbackResults(); - results.addCallbackResult(ObserveEntityEnum.Person.name(), "fr.ird.observe.entities.referentiel.Person#1355399844272#0.32586441962131485", "fr.ird.observe.entities.referentiel.Person#1429515754659#0.322074382333085"); + results.addCallbackResult(PersonDto.class, "fr.ird.observe.entities.referentiel.Person#1355399844272#0.32586441962131485", "fr.ird.observe.entities.referentiel.Person#1429515754659#0.322074382333085"); UnidirectionalReferentialSynchronizeResult result = referentialSynchronizeEngine.prepareResult(unidirectionalReferentialSynchronizeContext, results); referentialSynchronizeEngine.finish(unidirectionalReferentialSynchronizeContext); Assert.assertNotNull(result); - Set<String> referentialNames = result.getReferentialNames(); + Set<Class<? extends ReferentialDto>> referentialNames = result.getReferentialNames(); Assert.assertNotNull(referentialNames); Assert.assertFalse(referentialNames.isEmpty()); { - Assert.assertTrue(referentialNames.contains(ObserveEntityEnum.VesselActivitySeine.name())); - Assert.assertTrue(result.getReferentialAdded(ObserveEntityEnum.VesselActivitySeine.name()).isEmpty()); - Collection<String> referentialUpdated = result.getReferentialUpdated(ObserveEntityEnum.VesselActivitySeine.name()); + Assert.assertTrue(referentialNames.contains(VesselActivitySeineDto.class)); + Assert.assertTrue(result.getReferentialAdded(VesselActivitySeineDto.class).isEmpty()); + Collection<String> referentialUpdated = result.getReferentialUpdated(VesselActivitySeineDto.class); Assert.assertFalse(referentialUpdated.isEmpty()); Assert.assertEquals(1, referentialUpdated.size()); Assert.assertTrue(referentialUpdated.contains("fr.ird.observe.entities.referentiel.seine.VesselActivitySeine#1239832675369#0.12552908048322586")); - Assert.assertTrue(result.getReferentialRemoved(ObserveEntityEnum.VesselActivitySeine.name()).isEmpty()); - Assert.assertTrue(result.getReferentialReplaced(ObserveEntityEnum.VesselActivitySeine.name()).isEmpty()); + Assert.assertTrue(result.getReferentialRemoved(VesselActivitySeineDto.class).isEmpty()); + Assert.assertTrue(result.getReferentialReplaced(VesselActivitySeineDto.class).isEmpty()); } { - Assert.assertTrue(referentialNames.contains(ObserveEntityEnum.Species.name())); + Assert.assertTrue(referentialNames.contains(SpeciesDto.class)); - Assert.assertTrue(result.getReferentialAdded(ObserveEntityEnum.Species.name()).isEmpty()); - Collection<String> referentialUpdated = result.getReferentialUpdated(ObserveEntityEnum.Species.name()); + Assert.assertTrue(result.getReferentialAdded(SpeciesDto.class).isEmpty()); + Collection<String> referentialUpdated = result.getReferentialUpdated(SpeciesDto.class); Assert.assertFalse(referentialUpdated.isEmpty()); Assert.assertEquals(1, referentialUpdated.size()); Assert.assertTrue(referentialUpdated.contains("fr.ird.observe.entities.referentiel.Species#1239832685474#0.8943253454598569")); - Assert.assertTrue(result.getReferentialRemoved(ObserveEntityEnum.Species.name()).isEmpty()); - Assert.assertTrue(result.getReferentialReplaced(ObserveEntityEnum.Species.name()).isEmpty()); + Assert.assertTrue(result.getReferentialRemoved(SpeciesDto.class).isEmpty()); + Assert.assertTrue(result.getReferentialReplaced(SpeciesDto.class).isEmpty()); } { - Assert.assertTrue(referentialNames.contains(ObserveEntityEnum.Person.name())); - Assert.assertTrue(result.getReferentialAdded(ObserveEntityEnum.Person.name()).isEmpty()); - Assert.assertTrue(result.getReferentialUpdated(ObserveEntityEnum.Person.name()).isEmpty()); - Collection<String> referentialRemoved = result.getReferentialRemoved(ObserveEntityEnum.Person.name()); + Assert.assertTrue(referentialNames.contains(PersonDto.class)); + Assert.assertTrue(result.getReferentialAdded(PersonDto.class).isEmpty()); + Assert.assertTrue(result.getReferentialUpdated(PersonDto.class).isEmpty()); + Collection<String> referentialRemoved = result.getReferentialRemoved(PersonDto.class); Assert.assertFalse(referentialRemoved.isEmpty()); Assert.assertEquals(1, referentialRemoved.size()); Assert.assertTrue(referentialRemoved.contains("fr.ird.observe.entities.referentiel.Person#1355399844272#0.32586441962131485")); - Collection<Pair<String, String>> referentialReplaced = result.getReferentialReplaced(ObserveEntityEnum.Person.name()); + Collection<Pair<String, String>> referentialReplaced = result.getReferentialReplaced(PersonDto.class); Assert.assertFalse(referentialReplaced.isEmpty()); Assert.assertEquals(1, referentialReplaced.size()); Assert.assertTrue(referentialReplaced.contains(Pair.of("fr.ird.observe.entities.referentiel.Person#1355399844272#0.32586441962131485", "fr.ird.observe.entities.referentiel.Person#1429515754659#0.322074382333085"))); } { - Assert.assertTrue(referentialNames.contains(ObserveEntityEnum.Vessel.name())); - Assert.assertTrue(result.getReferentialAdded(ObserveEntityEnum.Vessel.name()).isEmpty()); - Collection<String> referentialUpdated = result.getReferentialUpdated(ObserveEntityEnum.Vessel.name()); + Assert.assertTrue(referentialNames.contains(VesselDto.class)); + Assert.assertTrue(result.getReferentialAdded(VesselDto.class).isEmpty()); + Collection<String> referentialUpdated = result.getReferentialUpdated(VesselDto.class); Assert.assertFalse(referentialUpdated.isEmpty()); Assert.assertEquals(1, referentialUpdated.size()); Assert.assertTrue(referentialUpdated.contains("fr.ird.observe.entities.referentiel.Vessel#1306847717532#0.7435948873477364")); - Assert.assertTrue(result.getReferentialRemoved(ObserveEntityEnum.Vessel.name()).isEmpty()); - Assert.assertTrue(result.getReferentialReplaced(ObserveEntityEnum.Vessel.name()).isEmpty()); + Assert.assertTrue(result.getReferentialRemoved(VesselDto.class).isEmpty()); + Assert.assertTrue(result.getReferentialReplaced(VesselDto.class).isEmpty()); } } -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 970720538b0baced809fcc6d7ab575276230c0f8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 13:39:36 2016 +0200 Quelques adaptations niveau ui pour utiliser les nouvelles api --- .../legacy/ObsoleteReferentialReference.java | 17 +++++++------ .../referential/legacy/SynchronizeUIHandler.java | 28 +++++++++++++--------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/legacy/ObsoleteReferentialReference.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/legacy/ObsoleteReferentialReference.java index 8573212..1eb9498 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/legacy/ObsoleteReferentialReference.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/legacy/ObsoleteReferentialReference.java @@ -22,6 +22,7 @@ package fr.ird.observe.ui.admin.synchronize.referential.legacy; * #L% */ +import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import java.util.Objects; @@ -34,21 +35,19 @@ import java.util.Objects; * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public class ObsoleteReferentialReference { +public class ObsoleteReferentialReference<R extends ReferentialDto> { - private final String referentialName; - private final ReferentialReference referentialReference; + private final ReferentialReference<R> referentialReference; - public ObsoleteReferentialReference(String referentialName, ReferentialReference referentialReference) { - this.referentialName = referentialName; + public ObsoleteReferentialReference(Class<R>referentialName, ReferentialReference<R> referentialReference) { this.referentialReference = referentialReference; } - public String getReferentialName() { - return referentialName; + public Class<R> getReferentialName() { + return getType(); } - public ReferentialReference getReferentialReference() { + public ReferentialReference<R> getReferentialReference() { return referentialReference; } @@ -56,7 +55,7 @@ public class ObsoleteReferentialReference { return referentialReference.getId(); } - public Class getType() { + public Class<R> getType() { return referentialReference.getType(); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/legacy/SynchronizeUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/legacy/SynchronizeUIHandler.java index d09f583..41c7782 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/legacy/SynchronizeUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/referential/legacy/SynchronizeUIHandler.java @@ -24,7 +24,9 @@ package fr.ird.observe.ui.admin.synchronize.referential.legacy; import com.google.common.collect.ImmutableSet; import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.db.ObserveSwingDataSource; +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.diff.ReferentialSynchronizeDiffsEngine; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeCallbackRequest; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeCallbackRequests; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeCallbackResults; @@ -124,10 +126,14 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { // construction du différentiel sendMessage(t("observe.actions.synchro.referential.message.build.diff", centralSource.getLabel())); + ReferentialSynchronizeDiffsEngine diffsEngine = new ReferentialSynchronizeDiffsEngine( + source.newReferentialSynchronizeDiffService(), + centralSource.newReferentialSynchronizeDiffService() + ); UnidirectionalReferentialSynchronizeEngine engine = new UnidirectionalReferentialSynchronizeEngine( - source.newUnidirectionalReferentialSynchronizeLocalService(), - centralSource.newUnidirectionalReferentialSynchronizeRemoteService()); + diffsEngine, source.newUnidirectionalReferentialSynchronizeLocalService() + ); stepModel.setEngine(engine); @@ -153,7 +159,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { for (UnidirectionalReferentialSynchronizeCallbackRequest<?> callbackRequest : callbackRequests) { - String referentialName = callbackRequest.getReferentialName(); + Class referentialName = callbackRequest.getReferentialName(); obsoleteReferentialReferences.addAll( callbackRequest.getReferentialsToReplace().stream() @@ -177,15 +183,15 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { } - public void resolveObsoleteReference() { + public <R extends ReferentialDto> void resolveObsoleteReference() { - ObsoleteReferentialReference obsoleteRef = (ObsoleteReferentialReference) getUi().getObsoleteReferencesList().getSelectedValue(); + ObsoleteReferentialReference<R> obsoleteRef = (ObsoleteReferentialReference) getUi().getObsoleteReferencesList().getSelectedValue(); - BeanComboBox<?> safeComboBox = getSafeComboBox(); - ReferentialReference safeRef = (ReferentialReference) safeComboBox.getSelectedItem(); + BeanComboBox<ReferentialReference<R>> safeComboBox = (BeanComboBox<ReferentialReference<R>>) getSafeComboBox(); + ReferentialReference<R> safeRef = (ReferentialReference<R>) safeComboBox.getSelectedItem(); UnidirectionalReferentialSynchronizeCallbackResults referentialSynchronizeCallbackResults = getStepModel().getReferentialSynchronizeCallbackResults(); - referentialSynchronizeCallbackResults.addCallbackResult(obsoleteRef.getReferentialName(), obsoleteRef.getId(), safeRef.getId()); + referentialSynchronizeCallbackResults.addCallbackResult(obsoleteRef.getType(), obsoleteRef.getId(), safeRef.getId()); // On supprime le référentiel corrigé de la liste des référentiels à corriger @@ -224,7 +230,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { ObsoleteReferentialReference referentialReference = obsoleteReferences.getElementAt(row); - String key = referentialReference.getReferentialName(); + String key = referentialReference.getReferentialName().getName(); CardLayout2 safeRefsPanelLayout = ui.getSafeRefsPanelLayout(); JPanel safeRefsPanel = ui.getSafeRefsPanel(); if (safeRefsPanelLayout.contains(key)) { @@ -243,7 +249,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { ReferentialReferenceDecorator decorator = getDecoratorService().getReferentialReferenceDecorator(referentialReference.getType()); - UnidirectionalReferentialSynchronizeCallbackRequest<?> callbackRequest = getStepModel().getReferentialSynchronizeContext().getCallbackRequests().getCallbackRequest(key); + UnidirectionalReferentialSynchronizeCallbackRequest<?> callbackRequest = getStepModel().getReferentialSynchronizeContext().getCallbackRequests().getCallbackRequest(referentialReference.getReferentialName()); ImmutableSet<? extends ReferentialReference<?>> availableReferentials = callbackRequest.getAvailableReferentials(); List<ReferentialReference> data = new ArrayList<>(availableReferentials); @@ -295,7 +301,7 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { } else { - for (String referentialName : referentialSynchronizeResult.getReferentialNames()) { + for (Class<? extends ReferentialDto> referentialName : referentialSynchronizeResult.getReferentialNames()) { Collection<String> referentialAdded = referentialSynchronizeResult.getReferentialAdded(referentialName); if (CollectionUtils.isNotEmpty(referentialAdded)) { -- 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 develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit a15ba5a63d84d14e97784638de0003882c1a408e Merge: 7493101 9707205 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 17 13:44:57 2016 +0200 Merge branch 'feature/7739_synchro_referential' into develop .../fr/ird/observe/db/ObserveSwingDataSource.java | 6 - .../legacy/ObsoleteReferentialReference.java | 17 ++- .../referential/legacy/SynchronizeUIHandler.java | 28 ++-- ...eferentialSynchronizeDiffServiceController.java | 5 + ...ferentialSynchronizeLocalServiceController.java | 10 +- ...erentialSynchronizeRemoteServiceController.java | 52 -------- .../observe/services/ObserveServicesProvider.java | 3 - .../diff/ReferentialSynchronizeDiffService.java | 3 + .../diff/ReferentialSynchronizeDiffsEngine.java | 10 ++ .../referential/legacy/LocalReferentialStates.java | 95 ------------- .../referential/legacy/RemoteReferentialDiff.java | 106 --------------- ...ionalReferentialSynchronizeCallbackRequest.java | 6 +- ...onalReferentialSynchronizeCallbackRequests.java | 12 +- ...tionalReferentialSynchronizeCallbackResult.java | 10 +- ...ionalReferentialSynchronizeCallbackResults.java | 14 +- ...UnidirectionalReferentialSynchronizeEngine.java | 98 +++++++++----- ...ectionalReferentialSynchronizeLocalService.java | 19 +-- ...ctionalReferentialSynchronizeRemoteService.java | 58 -------- ...nidirectionalReferentialSynchronizeRequest.java | 19 +-- ...UnidirectionalReferentialSynchronizeResult.java | 34 ++--- .../ird/observe/services/binder/BinderEngine.java | 5 + .../services/service/DataSourceServiceTopia.java | 3 +- .../ReferentialSynchronizeDiffServiceTopia.java | 20 +++ ...nalReferentialSynchronizeLocalServiceTopia.java | 60 ++------- ...alReferentialSynchronizeRemoteServiceTopia.java | 147 --------------------- .../sql/InsertSqlStatementGenerator.java | 4 +- .../UnidirectionalSynchronizeReferentialTest.java | 89 +++++++------ 27 files changed, 254 insertions(+), 679 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm