Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 3a843b55 by Tony CHEMIT at 2017-07-27T00:49:40+02:00 optimiser la détection des objets flottants de référence (See #796) - - - - - 8 changed files: - application-swing/src/main/java/fr/ird/observe/application/swing/FloatingObjectReferencesManager.java - application-web/src/main/filtered-resources/mapping - application-web/src/main/java/fr/ird/observe/application/web/injector/ImmutableSetInjector.java - pom.xml - services-topia/src/main/java/fr/ird/observe/services/topia/service/data/seine/FloatingObjectServiceTopia.java - services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialServiceTopia.java - services/src/main/java/fr/ird/observe/services/service/data/seine/FloatingObjectService.java - services/src/main/java/fr/ird/observe/services/service/referential/ReferentialService.java Changes: ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/FloatingObjectReferencesManager.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/FloatingObjectReferencesManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/FloatingObjectReferencesManager.java @@ -22,6 +22,7 @@ package fr.ird.observe.application.swing; * #L% */ +import com.google.common.collect.ImmutableSet; import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.services.dto.FloatingObjectReference; @@ -71,10 +72,14 @@ public class FloatingObjectReferencesManager { return references.stream().filter(r -> floatingObjectId.equals(r.getFloatingObjectId())).findFirst(); } + ImmutableSet<String> getIds() { + return ImmutableSet.copyOf(references.stream().map(FloatingObjectReference::getFloatingObjectId).collect(Collectors.toSet())); + } + void sanitize(ObserveSwingDataSource dataSource) { - Set<String> existingIds = references.stream().map(FloatingObjectReference::getFloatingObjectId).collect(Collectors.toSet()); - Set<String> ids = dataSource.newFloatingObjectService().retainExistingIds(existingIds); + ImmutableSet<String> existingIds = getIds(); + ImmutableSet<String> ids = dataSource.newFloatingObjectService().retainExistingIds(existingIds); int beforeSize = references.size(); references.removeIf(reference -> !ids.contains(reference.getFloatingObjectId())); ===================================== application-web/src/main/filtered-resources/mapping ===================================== --- a/application-web/src/main/filtered-resources/mapping +++ b/application-web/src/main/filtered-resources/mapping @@ -221,7 +221,6 @@ GET /api/v1/data/seine/TripSeineService/preCreate POST /api/v1/data/seine/TripSeineService/save v1.data.seine.TripSeineServiceRestApi.save POST /api/v1/referential/ReferentialService/computeMissingReferentials v1.referential.ReferentialServiceRestApi.computeMissingReferentials DELETE /api/v1/referential/ReferentialService/delete v1.referential.ReferentialServiceRestApi.delete -DELETE /api/v1/referential/ReferentialService/delete v1.referential.ReferentialServiceRestApi.delete GET /api/v1/referential/ReferentialService/exists v1.referential.ReferentialServiceRestApi.exists GET /api/v1/referential/ReferentialService/findAllUsages v1.referential.ReferentialServiceRestApi.findAllUsages GET /api/v1/referential/ReferentialService/getReferenceSet v1.referential.ReferentialServiceRestApi.getReferenceSet ===================================== application-web/src/main/java/fr/ird/observe/application/web/injector/ImmutableSetInjector.java ===================================== --- a/application-web/src/main/java/fr/ird/observe/application/web/injector/ImmutableSetInjector.java +++ b/application-web/src/main/java/fr/ird/observe/application/web/injector/ImmutableSetInjector.java @@ -60,15 +60,16 @@ public class ImmutableSetInjector implements ExecutorParametersInjectorHandler.I ImmutableSet.Builder builder = ImmutableSet.builder(); - Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); + if (call.getParameterTree().getObject() != null) { + Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); - Objects.requireNonNull(parameterTree, "Le paramètre " + name + " n'as pas été trouvé, recompiler (parameter)!"); + Objects.requireNonNull(parameterTree, "Le paramètre " + name + " n'as pas été trouvé, recompiler (parameter)!"); - String[] values = (String[]) parameterTree.getValue(); - for (String value : values) { - builder.add(value); + String[] values = (String[]) parameterTree.getValue(); + for (String value : values) { + builder.add(value); + } } - result = builder.build(); if (log.isInfoEnabled()) { ===================================== pom.xml ===================================== --- a/pom.xml +++ b/pom.xml @@ -180,7 +180,7 @@ <nuitonUtilsVersion>3.0-rc-18</nuitonUtilsVersion> <nuitonConverterVersion>1.0</nuitonConverterVersion> <nuitonVersionVersion>1.0-rc-2</nuitonVersionVersion> - <httpVersion>1.0.1</httpVersion> + <httpVersion>1.0.2-SNAPSHOT</httpVersion> <xworkVersion>2.3.33</xworkVersion> <flexmarkVersion>0.22.14</flexmarkVersion> <hibernateVersion>5.1.8.Final</hibernateVersion> ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/data/seine/FloatingObjectServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/seine/FloatingObjectServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/seine/FloatingObjectServiceTopia.java @@ -24,6 +24,7 @@ package fr.ird.observe.services.topia.service.data.seine; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import fr.ird.observe.entities.referentiel.ObserveReferentialEntity; @@ -102,10 +103,10 @@ public class FloatingObjectServiceTopia extends ObserveServiceTopia implements F } @Override - public Set<String> retainExistingIds(Set<String> existingIds) { - LinkedHashSet<String> result = new LinkedHashSet<>(existingIds); - result.retainAll(getTopiaPersistenceContext().getFloatingObjectDao().findAllIds()); - return result; + public ImmutableSet<String> retainExistingIds(ImmutableSet<String> existingIds) { + LinkedHashSet<String> result = new LinkedHashSet<>(getTopiaPersistenceContext().getFloatingObjectDao().findAllIds()); + result.retainAll(existingIds); + return ImmutableSet.copyOf(result); } @Override ===================================== services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialServiceTopia.java ===================================== --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialServiceTopia.java @@ -62,7 +62,6 @@ import fr.ird.observe.services.service.sql.SqlScriptProducerService; import fr.ird.observe.services.topia.service.ObserveServiceTopia; import fr.ird.observe.services.topia.service.actions.synchro.referential.sql.ReplaceSqlStatementGenerator; import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; @@ -246,16 +245,6 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe } @Override - public <D extends ReferentialDto> void delete(Class<D> type, Collection<String> ids) { - if (log.isTraceEnabled()) { - log.trace("delete(" + type.getName() + ", [" + Joiner.on(", ").join(ids) + "])"); - } - - Class<? extends ObserveReferentialEntity> entityType = getReferentialEntityType(type); - deleteEntity(type, entityType, ids); - } - - @Override public <E extends ReferentialDto> void replaceReference(Class<E> beanType, String idToReplace, String replaceId) { if (log.isTraceEnabled()) { log.trace("replaceReference(" + beanType.getName() + ", " + idToReplace + "," + replaceId + ")"); ===================================== services/src/main/java/fr/ird/observe/services/service/data/seine/FloatingObjectService.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/data/seine/FloatingObjectService.java +++ b/services/src/main/java/fr/ird/observe/services/service/data/seine/FloatingObjectService.java @@ -22,6 +22,7 @@ package fr.ird.observe.services.service.data.seine; * #L% */ +import com.google.common.collect.ImmutableSet; import fr.ird.observe.services.dto.form.Form; import fr.ird.observe.services.dto.reference.DataReference; import fr.ird.observe.services.dto.reference.DataReferenceSet; @@ -38,7 +39,6 @@ import io.ultreia.java4all.http.spi.Delete; import io.ultreia.java4all.http.spi.Get; import io.ultreia.java4all.http.spi.Post; import java.util.List; -import java.util.Set; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com @@ -63,7 +63,7 @@ public interface FloatingObjectService extends ObserveService { @Get @ReadDataPermission - Set<String> retainExistingIds(Set<String> existingIds); + ImmutableSet<String> retainExistingIds(ImmutableSet<String> existingIds); @Get @ReadDataPermission ===================================== services/src/main/java/fr/ird/observe/services/service/referential/ReferentialService.java ===================================== --- a/services/src/main/java/fr/ird/observe/services/service/referential/ReferentialService.java +++ b/services/src/main/java/fr/ird/observe/services/service/referential/ReferentialService.java @@ -97,11 +97,6 @@ public interface ReferentialService extends ObserveService { @Delete <R extends ReferentialDto> void delete(Class<R> type, String id) throws DataNotFoundException; - @WriteReferentialPermission - @Write - @Delete - <R extends ReferentialDto> void delete(Class<R> type, Collection<String> ids) throws DataNotFoundException; - @Post @WriteReferentialPermission @WriteDataPermission View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/3a843b558edd843d28c339d77172... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/3a843b558edd843d28c339d77172... You're receiving this email because of your account on gitlab.com.