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 34c54e4371eed913ee2b94210c1f3517a6c1b1cb Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Sep 10 16:47:40 2016 +0200 Tri des listes de référence selon le code si possible (See #8538) --- .../ReferentialSynchronizeTreeModelsBuilder.java | 40 +++++++++++++++++----- .../dto/referential/ReferentialReference.java | 4 +++ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModelsBuilder.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModelsBuilder.java index aa6ad7b..a809c43 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModelsBuilder.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModelsBuilder.java @@ -37,8 +37,13 @@ import fr.ird.observe.services.service.actions.synchro.referential.diff.Referent 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.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import java.util.Objects; import java.util.Optional; @@ -121,21 +126,22 @@ public class ReferentialSynchronizeTreeModelsBuilder { private <R extends ReferentialDto> void addFromLeft(RootReferentialSynchroNode rootNode, ImmutableSet<ReferentialSynchronizeDiffState> diffStates, Class<R> referentialName, CreateNode createNode) { ReferentialReferenceSet<R> referenceSet = engine.getLeftReferentialReferenceSet(referentialName, diffStates); - ImmutableSet<ReferentialReference<R>> references = referenceSet.getReferences(); - if (!references.isEmpty()) { - TypeReferentialSynchroNode typeNode = rootNode.getOrAddTypeNode(referentialName); - for (ReferentialReference<R> reference : references) { - createNode.createNode(typeNode, reference); - } - - } + add0(rootNode, referenceSet, referentialName, createNode); } private <R extends ReferentialDto> void addFromRight(RootReferentialSynchroNode rootNode, ImmutableSet<ReferentialSynchronizeDiffState> diffStates, Class<R> referentialName, CreateNode createNode) { ReferentialReferenceSet<R> referenceSet = engine.getRightReferentialReferenceSet(referentialName, diffStates); - ImmutableSet<ReferentialReference<R>> references = referenceSet.getReferences(); + add0(rootNode, referenceSet, referentialName, createNode); + } + + private <R extends ReferentialDto> void add0(RootReferentialSynchroNode rootNode, ReferentialReferenceSet<R> referenceSet, Class<R> referentialName, CreateNode createNode) { + + List<ReferentialReference<R>> references = new ArrayList<>(referenceSet.getReferences()); if (!references.isEmpty()) { TypeReferentialSynchroNode typeNode = rootNode.getOrAddTypeNode(referentialName); + if (references.get(0).getPropertyNames().contains(ReferentialDto.PROPERTY_CODE)) { + Collections.sort(references, new ReferentialReferenceComparator<>()); + } for (ReferentialReference<R> reference : references) { createNode.createNode(typeNode, reference); } @@ -190,4 +196,20 @@ public class ReferentialSynchronizeTreeModelsBuilder { typeNode.add(node); } } + + private static class ReferentialReferenceComparator<R extends ReferentialDto> implements Comparator<ReferentialReference<R>> { + + @Override + public int compare(ReferentialReference<R> o1, ReferentialReference<R> o2) { + String o1Code = o1.getCode(); + String o2Code = o2.getCode(); + if (o1Code == null) { + return o2Code == null ? 0 : -1; + } + if (o2Code == null) { + return 1; + } + return StringUtils.leftPad(o1Code, 6, "0").compareTo(StringUtils.leftPad(o2Code, 6, "0")); + } + } } diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReference.java b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReference.java index ba1dc77..547180f 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReference.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ReferentialReference.java @@ -79,6 +79,10 @@ public class ReferentialReference<D extends ReferentialDto> extends AbstractRefe this.enabled = enabled; } + public String getCode() { + return (String) getPropertyValue(ReferentialDto.PROPERTY_CODE); + } + @Override public String toString() { MoreObjects.ToStringHelper toStringHelper = MoreObjects.toStringHelper(this) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.