This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 578969e92ad0a316fe38a8da119a37330053f475 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Feb 15 16:12:18 2015 +0100 add a referential import result object for generic format import --- .../GenericFormatReferentialImportResult.java | 67 ++++++++++++++++++++++ .../referential/ReferentialImportRequest.java | 8 +++ .../referential/ReferentialImportResult.java | 9 ++- 3 files changed, 82 insertions(+), 2 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java new file mode 100644 index 0000000..ed6c220 --- /dev/null +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/genericformat/GenericFormatReferentialImportResult.java @@ -0,0 +1,67 @@ +package fr.ifremer.tutti.service.genericformat; + +import com.google.common.base.Function; +import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; +import fr.ifremer.tutti.service.referential.ReferentialImportRequest; +import fr.ifremer.tutti.service.referential.ReferentialImportResult; + +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 2/15/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.14 + */ +public class GenericFormatReferentialImportResult<E extends TuttiReferentialEntity, K extends Comparable<K>> { + + private final Map<K, E> entitiesAdded; + + private final Map<K, E> entitiesLinked; + + public GenericFormatReferentialImportResult(ReferentialImportRequest<E, K> importRequest, ReferentialImportResult<E> importResult) { + + Function<E, K> entityToIdFunction = importRequest.getEntityToIdFunction(); + + int nbRefAdded = importResult.getNbRefAdded(); + List<E> toAdds = importRequest.getEntitiesToAdd(); + List<E> addeds = importResult.getRefAdded(); + this.entitiesAdded = merge(entityToIdFunction, nbRefAdded, toAdds, addeds); + + int nbRefLinked = importResult.getNbRefLinked(); + List<E> toLinks = importRequest.getEntitiesToLink(); + List<E> linkeds = importResult.getRefLinked(); + this.entitiesLinked = merge(entityToIdFunction, nbRefLinked, toLinks, linkeds); + + } + + public Map<K, E> getEntitiesAdded() { + return entitiesAdded; + } + + public Map<K, E> getEntitiesLinked() { + return entitiesLinked; + } + + protected Map<K, E> merge(Function<E, K> entityToIdFunction, + int nbEntities, + List<E> request, + List<E> result) { + + Map<K, E> mergeMap = new TreeMap<>(); + + for (int index = 0; index < nbEntities; index++) { + + E toAdd = request.get(index); + K id = entityToIdFunction.apply(toAdd); + E added = result.get(index); + mergeMap.put(id, added); + + } + + return mergeMap; + + } +} diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java index 83225f9..80aac65 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportRequest.java @@ -55,8 +55,11 @@ public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { private final Set<String> existingNaturalIds; + private final Function<E, K> entityToIdFunction; + public ReferentialImportRequest(List<E> existingEntities, Function<E, K> entityToIdFunction, Function<E, String> naturalIdFunction) { + this.entityToIdFunction = entityToIdFunction; this.existingEntitiesById = Maps.uniqueIndex(existingEntities, entityToIdFunction); this.existingNaturalIds = Sets.newHashSet(Iterables.transform(existingEntities, naturalIdFunction)); @@ -121,4 +124,9 @@ public class ReferentialImportRequest<E extends TuttiReferentialEntity, K> { public void removeExistingNaturalId(String naturalId) { existingNaturalIds.remove(naturalId); } + + public Function<E, K> getEntityToIdFunction() { + return entityToIdFunction; + } + } diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java index f81d7af..3860544 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/referential/ReferentialImportResult.java @@ -27,6 +27,7 @@ package fr.ifremer.tutti.service.referential; import fr.ifremer.tutti.persistence.entities.referential.TuttiReferentialEntity; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -44,7 +45,7 @@ public class ReferentialImportResult<E extends TuttiReferentialEntity> { protected int nbRefDeleted = 0; public List<E> getRefAdded() { - return refAdded; + return Collections.unmodifiableList(refAdded); } public void addAllRefsAdded(List<E> refs) { @@ -56,7 +57,7 @@ public class ReferentialImportResult<E extends TuttiReferentialEntity> { } public List<E> getRefUpdated() { - return refUpdated; + return Collections.unmodifiableList(refUpdated); } public void addAllRefsUpdated(List<E> refs) { @@ -67,6 +68,10 @@ public class ReferentialImportResult<E extends TuttiReferentialEntity> { return refUpdated.size(); } + public List<E> getRefLinked() { + return Collections.unmodifiableList(refLinked); + } + public void addAllRefsLinked(List<E> refs) { refLinked.addAll(refs); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.