[Git][ultreiaio/ird-observe][develop] La synchro avancée de référentiel ne fonctionne plus (See #841)
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 900f2741 by Tony CHEMIT at 2017-08-12T13:06:16+02:00 La synchro avancée de référentiel ne fonctionne plus (See #841) L'assistant sauver la base (central vers local) plante (See #840) Continue to clean services api (but there is still some work to do on it...) - - - - - 17 changed files: - pom.xml - server/src/main/filtered-resources/mapping - services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceTopia.java - services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java - − services/src/main/java/fr/ird/observe/services/dto/referential/ReferentialMultimap.java - services/src/main/java/fr/ird/observe/services/gson/ObserveDtoGsonSupplier.java - − services/src/main/java/fr/ird/observe/services/gson/ReferentialMultimapAdapter.java - services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialDataSourceStates.java - services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffService.java - services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffsEngine.java - services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeContext.java - services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java - services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java - services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRequest.java - services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java - services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerResult.java - services/src/main/java/fr/ird/observe/services/service/sql/DeleteSqlScriptProducerRequest.java Changes: ===================================== pom.xml ===================================== --- a/pom.xml +++ b/pom.xml @@ -176,7 +176,7 @@ <nuitonUtilsVersion>3.0-rc-18</nuitonUtilsVersion> <nuitonConverterVersion>1.0</nuitonConverterVersion> <nuitonVersionVersion>1.0-rc-2</nuitonVersionVersion> - <httpVersion>1.0.2</httpVersion> + <httpVersion>1.0.3-SNAPSHOT</httpVersion> <xworkVersion>2.3.33</xworkVersion> <flexmarkVersion>0.22.18</flexmarkVersion> <hibernateVersion>5.1.9.Final</hibernateVersion> ===================================== server/src/main/filtered-resources/mapping ===================================== --- a/server/src/main/filtered-resources/mapping +++ b/server/src/main/filtered-resources/mapping @@ -72,8 +72,8 @@ GET /api/v1/actions/consolidate/ConsolidateDataService/newSimplifiedObjectTyp POST /api/v1/actions/report/ReportService/executeReport v1.actions.report.ReportServiceRestApi.executeReport POST /api/v1/actions/report/ReportService/populateVariables v1.actions.report.ReportServiceRestApi.populateVariables GET /api/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffService/getEnabledReferentialReferenceSet v1.actions.synchro.referential.diff.ReferentialSynchronizeDiffServiceRestApi.getEnabledReferentialReferenceSet +POST /api/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffService/getReferential v1.actions.synchro.referential.diff.ReferentialSynchronizeDiffServiceRestApi.getReferential GET /api/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffService/getReferentialReferenceSet v1.actions.synchro.referential.diff.ReferentialSynchronizeDiffServiceRestApi.getReferentialReferenceSet -POST /api/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffService/getReferentials v1.actions.synchro.referential.diff.ReferentialSynchronizeDiffServiceRestApi.getReferentials GET /api/v1/actions/synchro/referential/diff/ReferentialSynchronizeDiffService/getSourceReferentialStates v1.actions.synchro.referential.diff.ReferentialSynchronizeDiffServiceRestApi.getSourceReferentialStates POST /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/applySqlRequests v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceRestApi.applySqlRequests GET /api/v1/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService/filterIdsUsedInLocalSource v1.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalServiceRestApi.filterIdsUsedInLocalSource ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffServiceTopia.java @@ -33,7 +33,6 @@ import fr.ird.observe.services.binder.referential.ReferentialBinderSupport; import fr.ird.observe.services.dto.constants.ReferentialLocale; import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialMultimap; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialDataSourceState; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialDataSourceStates; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; @@ -50,7 +49,8 @@ import org.nuiton.util.TimeLog; * @author Tony Chemit - dev@tchemit.fr * @since 5.0 */ -public class ReferentialSynchronizeDiffServiceTopia extends ObserveServiceTopia implements ReferentialSynchronizeDiffService { +public class +ReferentialSynchronizeDiffServiceTopia extends ObserveServiceTopia implements ReferentialSynchronizeDiffService { /** Logger. */ private static final Log log = LogFactory.getLog(ReferentialSynchronizeDiffServiceTopia.class); @@ -65,7 +65,6 @@ public class ReferentialSynchronizeDiffServiceTopia extends ObserveServiceTopia } Class<? extends ObserveReferentialEntity> entityType = BinderEngine.get().getReferentialEntityType(referentialName); - ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(entityType); return getEnabledReferenceSet0(entityType, referentialName); } @@ -76,23 +75,22 @@ public class ReferentialSynchronizeDiffServiceTopia extends ObserveServiceTopia log.trace("getReferentialReferenceSet(" + referentialName + ", " + ids.size() + " element(s)"); } Class<? extends ObserveReferentialEntity> entityType = BinderEngine.get().getReferentialEntityType(referentialName); - ObserveEntityEnum entityEnum = ObserveEntityEnum.valueOf(entityType); return getReferenceSet0(entityType, referentialName, ids); } @Override - public <R extends ReferentialDto> ReferentialMultimap<R> getReferentials(Class<R> referentialName, ImmutableSet<String> ids) { + public <R extends ReferentialDto> ImmutableSet<R> getReferential(Class<R> referentialName, ImmutableSet<String> ids) { Class<? extends ObserveReferentialEntity> entityType = BinderEngine.get().getReferentialEntityType(referentialName); - return getReferentials0(referentialName, entityType, ids); + return getReferential0(referentialName, entityType, ids); } - private <E extends ObserveReferentialEntity, R extends ReferentialDto> ReferentialMultimap<R> getReferentials0(Class<R> dtoType, Class<E> entityType, ImmutableSet<String> ids) { - ReferentialMultimap.Builder<R> result = ReferentialMultimap.builder(); + private <E extends ObserveReferentialEntity, R extends ReferentialDto> ImmutableSet<R> getReferential0(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.put(dtoType, binder.toDto(referentialLocale, entity)); + result.add(binder.toDto(referentialLocale, entity)); } return result.build(); @@ -110,8 +108,9 @@ public class ReferentialSynchronizeDiffServiceTopia extends ObserveServiceTopia if (ObserveEntityEnum.LastUpdateDate.equals(referenceEntity)) { continue; } - Class entityType = referenceEntity.getContract(); - Class dtoType = BinderEngine.get().getReferentialDtoType(entityType); + //noinspection unchecked + Class<? extends ObserveReferentialEntity> entityType = (Class) referenceEntity.getContract(); + Class<? extends ReferentialDto> dtoType = BinderEngine.get().getReferentialDtoType(entityType); getLocalSourceReferentialVersions0(dtoType, entityType, referentialStates); } return referentialStates; ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalServiceTopia.java @@ -29,6 +29,7 @@ import fr.ird.observe.persistence.ObserveEntityEnum; import fr.ird.observe.services.binder.BinderEngine; import fr.ird.observe.services.binder.referential.ReferentialBinderSupport; import fr.ird.observe.services.dto.reference.ReferentialReference; +import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; import fr.ird.observe.services.dto.referential.GearCaracteristicDto; import fr.ird.observe.services.dto.referential.GearDto; import fr.ird.observe.services.dto.referential.OceanDto; @@ -96,7 +97,7 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser } @Override - public <R extends ReferentialDto> ImmutableSet<ReferentialReference<R>> getLocalSourceReferentialToDelete(Class<R> referentialName, ImmutableSet<String> ids) { + public <R extends ReferentialDto> ReferentialReferenceSet<R> getLocalSourceReferentialToDelete(Class<R> referentialName, ImmutableSet<String> ids) { Class<? extends ObserveReferentialEntity> entityType = BinderEngine.get().getReferentialEntityType(referentialName); return getLocalSourceReferentialToDelete0(entityType, referentialName, ids); @@ -126,7 +127,8 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser if (ObjectMaterialDto.class.equals(dtoType)) { // must reorder to be sure to insert parent before sons - referentialToAdd = (ImmutableSet) ObjectMaterialHelper.reorder((ImmutableSet) referentialToAdd); + //noinspection unchecked + referentialToAdd = ObjectMaterialHelper.reorder((ImmutableSet) referentialToAdd); } for (R referentialDto : referentialToAdd) { @@ -223,17 +225,17 @@ public class UnidirectionalReferentialSynchronizeLocalServiceTopia extends Obser } - private <E extends ObserveReferentialEntity, R extends ReferentialDto> ImmutableSet<ReferentialReference<R>> getLocalSourceReferentialToDelete0(Class<E> entityType, Class<R> dtoType, ImmutableSet<String> ids) { + private <E extends ObserveReferentialEntity, R extends ReferentialDto> ReferentialReferenceSet<R> getLocalSourceReferentialToDelete0(Class<E> entityType, Class<R> dtoType, ImmutableSet<String> ids) { TopiaDao<E> dao = getTopiaPersistenceContext().getDao(entityType); List<E> entities = dao.forTopiaIdIn(ids).findAll(); ReferentialBinderSupport<E, R> referentialBinder = BinderEngine.get().getReferentialBinder(dtoType); - Set<ReferentialReference<R>> result = new LinkedHashSet<>(); + ImmutableSet.Builder<ReferentialReference<R>> result = ImmutableSet.builder(); for (E entity : entities) { ReferentialReference<R> rReferentialReference = referentialBinder.toReferentialReference(getReferentialLocale(), entity); result.add(rReferentialReference); } - return ImmutableSet.copyOf(result); + return ReferentialReferenceSet.of(dtoType, result.build(), null); } ===================================== services/src/main/java/fr/ird/observe/services/dto/referential/ReferentialMultimap.java deleted ===================================== --- a/services/src/main/java/fr/ird/observe/services/dto/referential/ReferentialMultimap.java +++ /dev/null @@ -1,178 +0,0 @@ -package fr.ird.observe.services.dto.referential; - -/* - * #%L - * ObServe :: Services - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ImmutableSetMultimap; -import com.google.common.collect.Multimap; -import com.google.common.collect.Multiset; -import java.util.Collection; -import java.util.Objects; - -/** - * @author smaisonneuve - * Created on 17/08/16. - */ -public class ReferentialMultimap<K extends ReferentialDto> { - - private ImmutableSetMultimap<Class<K>, K> immutableSetMultimap; - - public static <K extends ReferentialDto, V> ReferentialMultimap<K> of() { - return new ReferentialMultimap<>(); - } - - public static <K extends ReferentialDto> ReferentialMultimap<K> of(Class<K> k1, K v1) { - return new ReferentialMultimap<>(k1, v1); - } - - public static <K extends ReferentialDto> ReferentialMultimap<K> copyOf(Multimap<Class<K>, K> multimap) { - return new ReferentialMultimap<>(multimap); - } - - public static <K extends ReferentialDto> Builder<K> builder() { - return new Builder<>(); - } - - public static class Builder<K extends ReferentialDto> { - private final ImmutableSetMultimap.Builder<Class<K>, K> builder = ImmutableSetMultimap.builder(); - - public Builder<K> add(K referentialDto) { - Objects.requireNonNull(referentialDto, "Can't add a null object in ReferentialMultimap"); - builder.put((Class) referentialDto.getClass(), referentialDto); - return this; - } - - public Builder put(Class<K> dtoType, K referentialDto) { - builder.putAll(dtoType, referentialDto); - return this; - } - - public Builder putAll(Class<K> dtoType, Collection<K> values) { - builder.putAll(dtoType, values); - return this; - } - - public ReferentialMultimap<K> build() { - return copyOf(builder.build()); - } - } - - private ReferentialMultimap() { - immutableSetMultimap = ImmutableSetMultimap.<Class<K>, K>builder().build(); - } - - private ReferentialMultimap(Class<K> k1, K v1) { - immutableSetMultimap = ImmutableSetMultimap.of(k1, v1); - } - - private ReferentialMultimap(Multimap<Class<K>, K> multimap) { - immutableSetMultimap = ImmutableSetMultimap.copyOf(multimap); - } - - public ImmutableSet<K> get(Class<K> key) { - return immutableSetMultimap.get(key); - } - - // @Override -// public ImmutableSet<Class<K>> keySet() { -// return immutableSetMultimap.keySet(); -// } -// - public Multiset<Class<K>> keys() { - return immutableSetMultimap.keys(); - } - - // @Override -// public Collection<K> values() { -// return immutableSetMultimap.values(); -// } -// -// @Override -// public ImmutableSet<K> removeAll(Object key) { -// return immutableSetMultimap.removeAll(key); -// } -// -// @Override -// public void clear() { -// immutableSetMultimap.clear(); -// } -// - public int size() { - return immutableSetMultimap.size(); - } - - public boolean isEmpty() { - return immutableSetMultimap.isEmpty(); - } - - // -// @Override -// public boolean containsKey(Object key) { -// return immutableSetMultimap.containsKey(key); -// } -// -// @Override -// public boolean containsValue(Object value) { -// return immutableSetMultimap.containsValue(value); -// } -// -// @Override -// public boolean containsEntry(Object key, Object value) { -// return immutableSetMultimap.containsEntry(key, value); -// } -// -// @Override -// public boolean put(Class<K> key, K value) { -// return immutableSetMultimap.put(key, value); -// } -// -// @Override -// public boolean remove(Object key, Object value) { -// return immutableSetMultimap.remove(key, value); -// } -// -// @Override -// public boolean putAll(Class<K> key, Iterable<? extends K> values) { -// return immutableSetMultimap.putAll(key, values); -// } -// -// @Override -// public boolean putAll(Multimap<? extends Class<K>, ? extends K> multimap) { -// return immutableSetMultimap.putAll(multimap); -// } -// -// @Override -// public ImmutableSet<K> replaceValues(Class<K> key, Iterable<? extends K> values) { -// return immutableSetMultimap.replaceValues(key, values); -// } -// -// @Override -// public ImmutableSet<Map.Entry<Class<K>, K>> entries() { -// return immutableSetMultimap.entries(); -// } -// - public ImmutableMap<Class<K>, Collection<K>> asMap() { - return immutableSetMultimap.asMap(); - } -} ===================================== services/src/main/java/fr/ird/observe/services/gson/ObserveDtoGsonSupplier.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/gson/ObserveDtoGsonSupplier.java +++ b/services/src/main/java/fr/ird/observe/services/gson/ObserveDtoGsonSupplier.java @@ -40,7 +40,6 @@ import fr.ird.observe.services.dto.reference.DataReferenceList; import fr.ird.observe.services.dto.reference.DataReferenceSet; import fr.ird.observe.services.dto.reference.ReferentialReference; import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; -import fr.ird.observe.services.dto.referential.ReferentialMultimap; import fr.ird.observe.services.gson.reference.DataReferenceAdapter; import fr.ird.observe.services.gson.reference.DataReferenceListAdapter; import fr.ird.observe.services.gson.reference.DataReferenceSetAdapter; @@ -58,20 +57,17 @@ import java.util.function.Supplier; import org.nuiton.version.Version; /** - * @author Arnaud Thimel - thimel@codelutin.com * @author Tony Chemit - dev@tchemit.fr */ public class ObserveDtoGsonSupplier implements Supplier<Gson> { - public static final Supplier<Gson> DEFAULT_GSON_SUPPLIER = () -> new ObserveDtoGsonSupplier().get(); + private final boolean prettyPrint; - protected final boolean prettyPrint; + private GsonBuilder gsonBuilder; - protected GsonBuilder gsonBuilder; + private Gson gson; - protected Gson gson; - - public ObserveDtoGsonSupplier() { + protected ObserveDtoGsonSupplier() { this(false); } @@ -79,7 +75,7 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { this.prettyPrint = prettyPrint; } - public static <K, V> TypeToken<Map<K, V>> mapOf(TypeToken<K> keyType, TypeToken<V> valueType) { + static <K, V> TypeToken<Map<K, V>> mapOf(TypeToken<K> keyType, TypeToken<V> valueType) { return new TypeToken<Map<K, V>>() { } .where(new TypeParameter<K>() { @@ -88,7 +84,7 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { }, valueType); } - public static <K, V> TypeToken<Map<K, Collection<V>>> multimapOf(TypeToken<K> keyType, TypeToken<V> valueType) { + static <K, V> TypeToken<Map<K, Collection<V>>> multimapOf(TypeToken<K> keyType, TypeToken<V> valueType) { return new TypeToken<Map<K, Collection<V>>>() { } .where(new TypeParameter<K>() { @@ -131,7 +127,6 @@ public class ObserveDtoGsonSupplier implements Supplier<Gson> { gsonBuilder.registerTypeAdapter(ImmutableMultimap.class, new ImmutableMultimapAdapter()); gsonBuilder.registerTypeAdapter(SetMultimap.class, new SetMultimapAdapter()); gsonBuilder.registerTypeAdapter(ArrayListMultimap.class, new ArrayListMultimapAdapter()); - gsonBuilder.registerTypeAdapter(ReferentialMultimap.class, new ReferentialMultimapAdapter()); gsonBuilder.registerTypeAdapter(ObserveBlobsContainer.class, new ObserveBlobsContainerAdapter()); ===================================== services/src/main/java/fr/ird/observe/services/gson/ReferentialMultimapAdapter.java deleted ===================================== --- a/services/src/main/java/fr/ird/observe/services/gson/ReferentialMultimapAdapter.java +++ /dev/null @@ -1,83 +0,0 @@ -package fr.ird.observe.services.gson; - -/* - * #%L - * ObServe :: Services - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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.reflect.TypeParameter; -import com.google.common.reflect.TypeToken; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import com.google.gson.JsonSerializationContext; -import com.google.gson.JsonSerializer; -import fr.ird.observe.services.dto.referential.ReferentialMultimap; -import java.lang.reflect.Type; -import java.util.Collection; -import java.util.Map; -import java.util.Set; - -/** - * @author Samuel Maisonneuve - maisonneuve@codelutin.com - */ -public class ReferentialMultimapAdapter implements JsonSerializer<ReferentialMultimap>, JsonDeserializer<ReferentialMultimap> { - - - @Override - public JsonElement serialize(ReferentialMultimap src, Type typeOfSrc, JsonSerializationContext context) { - return context.serialize(src.asMap()); - } - - @Override - public ReferentialMultimap deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException { - - ReferentialMultimap.Builder builder = ReferentialMultimap.builder(); - - Set<Map.Entry<String, JsonElement>> entries = json.getAsJsonObject().entrySet(); - for (Map.Entry<String, JsonElement> entry : entries) { - String keyEntry = entry.getKey(); - JsonObject keyObject = new JsonObject(); - keyObject.addProperty("key", keyEntry); - - // Deserialize the key - Class key = context.deserialize(keyObject.getAsJsonPrimitive("key"), Class.class); - - // Deserialize the collection associated to the key - Type typeToken = collectionOf(key).getType(); - Collection values = context.deserialize(entry.getValue(), typeToken); - - // Add the key/values to the multimap - builder.putAll(key, values); - } - - return builder.build(); - - } - - static <E> TypeToken<Collection<E>> collectionOf(Class<E> subType) { - return new TypeToken<Collection<E>>() { - } - .where(new TypeParameter<E>() { - }, subType); - } -} ===================================== services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialDataSourceStates.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialDataSourceStates.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialDataSourceStates.java @@ -23,6 +23,7 @@ package fr.ird.observe.services.service.actions.synchro.referential.diff; */ import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.ObserveDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import java.util.LinkedHashMap; import java.util.Map; @@ -33,7 +34,7 @@ import java.util.Map; * @author Tony Chemit - dev@tchemit.fr * @since 5.0 */ -public class ReferentialDataSourceStates { +public class ReferentialDataSourceStates implements ObserveDto { /** * Contient pour chaque type de référentiel la version de chaque référentiel indexé par son nom. @@ -48,7 +49,8 @@ public class ReferentialDataSourceStates { * @param referentialName le nom de référentiel * @return la collection des versions de référentiel du nom demandé. */ - public <R extends ReferentialDto> ReferentialDataSourceState<R> getReferentialVersions(Class<R> referentialName) { + <R extends ReferentialDto> ReferentialDataSourceState<R> getReferentialVersions(Class<R> referentialName) { + //noinspection unchecked return diffStatesByType.get(referentialName); } ===================================== services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffService.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffService.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffService.java @@ -25,7 +25,6 @@ package fr.ird.observe.services.service.actions.synchro.referential.diff; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialMultimap; import fr.ird.observe.services.service.ObserveService; import fr.ird.observe.services.spi.ReadReferentialPermission; import io.ultreia.java4all.http.spi.Get; @@ -47,9 +46,10 @@ public interface ReferentialSynchronizeDiffService extends ObserveService { @ReadReferentialPermission <R extends ReferentialDto> ReferentialReferenceSet<R> getReferentialReferenceSet(Class<R> referentialName, ImmutableSet<String> ids); + //FIXME On doit juste retourner un ReferentialReferenceSet, le dictionnaire ne sert à rien (tous les résultats doivent être du même type...) @Post @ReadReferentialPermission - <R extends ReferentialDto> ReferentialMultimap<R> getReferentials(Class<R> referentialName, ImmutableSet<String> ids); + <R extends ReferentialDto> ImmutableSet<R> getReferential(Class<R> referentialName, ImmutableSet<String> ids); /** * Récupération sur la source à synchroniser des versions de ses référentiels. ===================================== services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffsEngine.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffsEngine.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffsEngine.java @@ -26,7 +26,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialMultimap; import java.util.Set; import java.util.stream.Collectors; @@ -60,6 +59,7 @@ public class ReferentialSynchronizeDiffsEngine { for (Class referentialType : allReferentialTypes) { + //noinspection unchecked build0(referentialType, result, leftSourceReferentialStates.getReferentialVersions(referentialType), rightSourceReferentialStates.getReferentialVersions(referentialType)); } @@ -76,16 +76,14 @@ public class ReferentialSynchronizeDiffsEngine { return rightDiffService.getReferentialReferenceSet(referentialName, ImmutableSet.copyOf(ids)); } - public <R extends ReferentialDto> ImmutableSet<R> getLeftReferentials(Class<R> referentialName, ImmutableSet<ReferentialSynchronizeDiffState> diffStates) { + public <R extends ReferentialDto> ImmutableSet<R> getLeftReferential(Class<R> referentialName, ImmutableSet<ReferentialSynchronizeDiffState> diffStates) { Set<String> ids = diffStates.stream().map(ReferentialSynchronizeDiffState::getId).collect(Collectors.toSet()); - ReferentialMultimap<R> referentials = leftDiffService.getReferentials(referentialName, ImmutableSet.copyOf(ids)); - return referentials.get(referentialName); + return leftDiffService.getReferential(referentialName, ImmutableSet.copyOf(ids)); } - public <R extends ReferentialDto> ImmutableSet<R> getRightReferentials(Class<R> referentialName, ImmutableSet<ReferentialSynchronizeDiffState> diffStates) { + public <R extends ReferentialDto> ImmutableSet<R> getRightReferential(Class<R> referentialName, ImmutableSet<ReferentialSynchronizeDiffState> diffStates) { Set<String> ids = diffStates.stream().map(ReferentialSynchronizeDiffState::getId).collect(Collectors.toSet()); - ReferentialMultimap<R> referentials = rightDiffService.getReferentials(referentialName, ImmutableSet.copyOf(ids)); - return referentials.get(referentialName); + return rightDiffService.getReferential(referentialName, ImmutableSet.copyOf(ids)); } public <R extends ReferentialDto> ReferentialReferenceSet<R> getLeftEnabledReferentialReferenceSet(Class<R> referentialName) { ===================================== services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeContext.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeContext.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeContext.java @@ -37,13 +37,13 @@ public class UnidirectionalReferentialSynchronizeContext { private final UnidirectionalReferentialSynchronizeCallbackRequests callbackRequests; private Set<String> sqlRequests; - public UnidirectionalReferentialSynchronizeContext(ImmutableSet<UnidirectionalReferentialSynchronizeRequest.Builder<?>> referentialSynchronizeRequestBuilders, UnidirectionalReferentialSynchronizeCallbackRequests callbackRequests) { + UnidirectionalReferentialSynchronizeContext(ImmutableSet<UnidirectionalReferentialSynchronizeRequest.Builder<?>> referentialSynchronizeRequestBuilders, UnidirectionalReferentialSynchronizeCallbackRequests callbackRequests) { this.referentialSynchronizeRequestBuilders = referentialSynchronizeRequestBuilders; this.callbackRequests = callbackRequests; } - public ImmutableSet<UnidirectionalReferentialSynchronizeRequest.Builder<?>> getReferentialSynchronizeRequestBuilders() { + ImmutableSet<UnidirectionalReferentialSynchronizeRequest.Builder<?>> getReferentialSynchronizeRequestBuilders() { return referentialSynchronizeRequestBuilders; } @@ -55,11 +55,11 @@ public class UnidirectionalReferentialSynchronizeContext { return callbackRequests.isNotEmpty(); } - public void setSqlRequests(Set<String> sqlRequests) { + void setSqlRequests(Set<String> sqlRequests) { this.sqlRequests = sqlRequests; } - public Set<String> getSqlRequests() { + Set<String> getSqlRequests() { return sqlRequests; } } ===================================== services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeEngine.java @@ -116,8 +116,8 @@ public class UnidirectionalReferentialSynchronizeEngine { result.flushRequest(referentialSynchronizeRequest); - Set<String> sqlRequestsforReferential = localService.generateSqlRequests(referentialSynchronizeRequest); - for (String sqlStatement : sqlRequestsforReferential) { + Set<String> generatedSqlRequests = localService.generateSqlRequests(referentialSynchronizeRequest); + for (String sqlStatement : generatedSqlRequests) { if (sqlStatement.startsWith("INSERT")) { insertSqlRequests.add(sqlStatement); @@ -160,7 +160,7 @@ public class UnidirectionalReferentialSynchronizeEngine { if (optionalAddDiffStates.isPresent()) { ImmutableSet<ReferentialSynchronizeDiffState> referentialSynchronizeDiffStates = optionalAddDiffStates.get(); - ImmutableSet<R> referentials = diffsEngine.getRightReferentials(referentialName, referentialSynchronizeDiffStates); + ImmutableSet<R> referentials = diffsEngine.getRightReferential(referentialName, referentialSynchronizeDiffStates); referentials.forEach(builder::entityToAdd); } @@ -169,7 +169,7 @@ public class UnidirectionalReferentialSynchronizeEngine { if (optionalUpdateDiffStates.isPresent()) { ImmutableSet<ReferentialSynchronizeDiffState> referentialSynchronizeDiffStates = optionalUpdateDiffStates.get(); - ImmutableSet<R> referentials = diffsEngine.getRightReferentials(referentialName, referentialSynchronizeDiffStates); + ImmutableSet<R> referentials = diffsEngine.getRightReferential(referentialName, referentialSynchronizeDiffStates); referentials.forEach(builder::entityToUpdate); } @@ -203,9 +203,9 @@ public class UnidirectionalReferentialSynchronizeEngine { ReferentialReferenceSet<R> availableReferenceSet = diffsEngine.getRightEnabledReferentialReferenceSet(referentialName); Set<ReferentialReference<R>> availableReferentials = availableReferenceSet.getReferences(); - Set<ReferentialReference<R>> blockingReferentialsToRemove = localService.getLocalSourceReferentialToDelete(referentialName, ImmutableSet.copyOf(blockingIdsToRemove)); + ReferentialReferenceSet<R> blockingReferentialsToRemove = localService.getLocalSourceReferentialToDelete(referentialName, ImmutableSet.copyOf(blockingIdsToRemove)); - callbackRequests.addCallbackRequest(referentialName, blockingReferentialsToRemove, availableReferentials); + callbackRequests.addCallbackRequest(referentialName, blockingReferentialsToRemove.getReferences(), availableReferentials); } ===================================== services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeLocalService.java @@ -23,7 +23,7 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; */ import com.google.common.collect.ImmutableSet; -import fr.ird.observe.services.dto.reference.ReferentialReference; +import fr.ird.observe.services.dto.reference.ReferentialReferenceSet; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.service.ObserveService; import fr.ird.observe.services.spi.ReadReferentialPermission; @@ -64,7 +64,7 @@ public interface UnidirectionalReferentialSynchronizeLocalService extends Observ */ @ReadReferentialPermission @Get - <R extends ReferentialDto> ImmutableSet<ReferentialReference<R>> getLocalSourceReferentialToDelete(Class<R> referentialName, ImmutableSet<String> ids); + <R extends ReferentialDto> ReferentialReferenceSet<R> getLocalSourceReferentialToDelete(Class<R> referentialName, ImmutableSet<String> ids); /** * Pour produire le code sql à partir de la demande pour un référentiel donné. ===================================== services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRequest.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRequest.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/legacy/UnidirectionalReferentialSynchronizeRequest.java @@ -25,10 +25,8 @@ package fr.ird.observe.services.service.actions.synchro.referential.legacy; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Multiset; import fr.ird.observe.services.dto.ObserveDto; import fr.ird.observe.services.dto.referential.ReferentialDto; -import fr.ird.observe.services.dto.referential.ReferentialMultimap; import java.util.Objects; /** @@ -44,13 +42,13 @@ import java.util.Objects; public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDto> implements ObserveDto { public static <R extends ReferentialDto> Builder<R> builder(Class<R> referentialName) { - Objects.nonNull(referentialName); + Objects.requireNonNull(referentialName); return new Builder<>(referentialName); } private final Class<R> referentialName; - private final ReferentialMultimap<R> referentialToAdd; - private final ReferentialMultimap<R> referentialToUpdate; + private final ImmutableSet<R> referentialToAdd; + private final ImmutableSet<R> referentialToUpdate; private final ImmutableSet<String> referentialToRemove; private final ImmutableMap<String, String> referentialToReplace; @@ -59,25 +57,11 @@ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDt } public ImmutableSet<R> getReferentialToAdd() { - ImmutableSet<R> result = ImmutableSet.of(); - - Multiset<Class<R>> entries = referentialToAdd.keys(); - if (!entries.isEmpty()) { - result = referentialToAdd.get(entries.iterator().next()); - } - - return result; + return referentialToAdd; } public ImmutableSet<R> getReferentialToUpdate() { - ImmutableSet<R> result = ImmutableSet.of(); - - Multiset<Class<R>> entries = referentialToUpdate.keys(); - if (!entries.isEmpty()) { - result = referentialToUpdate.get(entries.iterator().next()); - } - - return result; + return referentialToUpdate; } public ImmutableSet<String> getReferentialToRemove() { @@ -116,8 +100,8 @@ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDt } private UnidirectionalReferentialSynchronizeRequest(Class<R> referentialName, - ReferentialMultimap<R> referentialToAdd, - ReferentialMultimap<R> referentialToUpdate, + ImmutableSet<R> referentialToAdd, + ImmutableSet<R> referentialToUpdate, ImmutableSet<String> referentialToRemove, ImmutableMap<String, String> toReplace) { this.referentialName = referentialName; @@ -130,27 +114,27 @@ public class UnidirectionalReferentialSynchronizeRequest<R extends ReferentialDt public static class Builder<R extends ReferentialDto> { private final Class<R> referentialName; - private final ReferentialMultimap.Builder<R> toAddBuilder = ReferentialMultimap.builder(); - private final ReferentialMultimap.Builder<R> toUpdateBuilder = ReferentialMultimap.builder(); + private final ImmutableSet.Builder<R> toAddBuilder = ImmutableSet.builder(); + private final ImmutableSet.Builder<R> toUpdateBuilder = ImmutableSet.builder(); private final ImmutableSet.Builder<String> toRemoveBuilder = ImmutableSet.builder(); private final ImmutableMap.Builder<String, String> toReplaceBuilder = ImmutableMap.builder(); - public Builder entityToAdd(R referentialDto) { + Builder entityToAdd(R referentialDto) { toAddBuilder.add(referentialDto); return this; } - public Builder entityToUpdate(R referentialDto) { + Builder entityToUpdate(R referentialDto) { toUpdateBuilder.add(referentialDto); return this; } - public Builder entityToRemove(String id) { + Builder entityToRemove(String id) { toRemoveBuilder.add(id); return this; } - public Builder entityToReplace(String sourceId, String targetId) { + Builder entityToReplace(String sourceId, String targetId) { toReplaceBuilder.put(sourceId, targetId); return this; } ===================================== services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java +++ b/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java @@ -27,6 +27,7 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ListMultimap; import com.google.common.collect.Multimaps; +import fr.ird.observe.services.dto.ObserveDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import java.util.Set; import java.util.stream.Collectors; @@ -36,15 +37,15 @@ import java.util.stream.Collectors; * * @author Tony Chemit - dev@tchemit.fr */ -public class AddSqlScriptProducerRequest { - - protected final boolean postgres; - protected boolean addSchema; - protected boolean addReferential; - protected boolean addSomeReferential; - protected boolean addData; - protected ImmutableSet<String> dataIds; - protected final ArrayListMultimap<Class<? extends ReferentialDto>, String> referentialIds = ArrayListMultimap.create(); +public class AddSqlScriptProducerRequest implements ObserveDto { + + private final boolean postgres; + private boolean addSchema; + private boolean addReferential; + private boolean addSomeReferential; + private boolean addData; + private ImmutableSet<String> dataIds; + private final ArrayListMultimap<Class<? extends ReferentialDto>, String> referentialIds = ArrayListMultimap.create(); public static AddSqlScriptProducerRequest forH2() { return new AddSqlScriptProducerRequest(false); ===================================== services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerResult.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerResult.java @@ -24,13 +24,14 @@ package fr.ird.observe.services.service.sql; import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.ObserveBlobsContainer; +import fr.ird.observe.services.dto.ObserveDto; /** * Created on 24/08/16. * * @author Tony Chemit - dev@tchemit.fr */ -public class AddSqlScriptProducerResult { +public class AddSqlScriptProducerResult implements ObserveDto{ private final byte[] sqlCode; ===================================== services/src/main/java/fr/ird/observe/services/service/sql/DeleteSqlScriptProducerRequest.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/sql/DeleteSqlScriptProducerRequest.java +++ b/services/src/main/java/fr/ird/observe/services/service/sql/DeleteSqlScriptProducerRequest.java @@ -24,6 +24,8 @@ package fr.ird.observe.services.service.sql; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.ObserveDto; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -31,7 +33,7 @@ import java.util.stream.Collectors; * * @author Tony Chemit - dev@tchemit.fr */ -public class DeleteSqlScriptProducerRequest { +public class DeleteSqlScriptProducerRequest implements ObserveDto { protected boolean deleteData; protected ImmutableSet<String> dataIds; @@ -40,26 +42,14 @@ public class DeleteSqlScriptProducerRequest { return new DeleteSqlScriptProducerRequest(); } - public static DeleteSqlScriptProducerRequest forH2() { - return new DeleteSqlScriptProducerRequest(); - } - - public static DeleteSqlScriptProducerRequest forPostgres() { - return new DeleteSqlScriptProducerRequest(); - } - - public DeleteSqlScriptProducerRequest deleteAllData() { - deleteData = true; - return this; - } - public DeleteSqlScriptProducerRequest dataIdsToDelete(ImmutableSet<String> dataIds) { - deleteData = true; + Objects.requireNonNull(dataIds); + this.deleteData = true; this.dataIds = dataIds; return this; } - protected DeleteSqlScriptProducerRequest() { + private DeleteSqlScriptProducerRequest() { } public boolean isDeleteData() { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/900f27411375af7a268cc9b42987... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/900f27411375af7a268cc9b42987... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT