This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository topia. See http://git.nuiton.org/topia.git commit bcc76c8cb79ada38b0ad63dbdff57ab857c60ccc Author: Arnaud Thimel <thimel@codelutin.com> Date: Tue Sep 9 17:37:11 2014 +0200 HqlAndParametersBuilder#orderByArguments obviously uses LinkedHashSet --- .../topia/persistence/HqlAndParametersBuilder.java | 28 ++++++++++++++++------ .../TopiaQueryBuilderAddCriteriaStep.java | 3 ++- .../persistence/internal/AbstractTopiaDao.java | 3 ++- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java index dab971d..e63f42d 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java @@ -30,6 +30,7 @@ import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; @@ -41,6 +42,8 @@ import org.nuiton.util.pagination.PaginationOrder; import java.util.Arrays; import java.util.Collection; import java.util.Date; +import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -64,7 +67,7 @@ public class HqlAndParametersBuilder<E extends TopiaEntity> { protected String alias = "topiaEntity_"; - protected Set<String> orderByArguments; + protected LinkedHashSet<String> orderByArguments; protected Map<String, Object> parameters = Maps.newLinkedHashMap(); @@ -368,23 +371,34 @@ public class HqlAndParametersBuilder<E extends TopiaEntity> { this.parameters = parameters; } - public void setOrderByArguments(Set<String> orderByArguments) { + public void setOrderByArguments(LinkedHashSet<String> orderByArguments) { Preconditions.checkNotNull(orderByArguments); - this.orderByArguments = orderByArguments; + this.orderByArguments = Sets.newLinkedHashSet(); + this.orderByArguments.addAll(orderByArguments); } public void setOrderByArguments(String... orderByArguments) { - Set<String> orderByArgumentsAsSet = Sets.newLinkedHashSet(); - orderByArgumentsAsSet.addAll(Arrays.asList(orderByArguments)); + Preconditions.checkNotNull(orderByArguments); + LinkedHashSet<String> orderByArgumentsAsSet = Sets.newLinkedHashSet(); + List<String> list = Lists.newArrayList(orderByArguments); + orderByArgumentsAsSet.addAll(list); + if (orderByArgumentsAsSet.size() < list.size()) { + throw new IllegalStateException("Duplicate ORDER BY arguments found: " + list); + } this.orderByArguments = orderByArgumentsAsSet; } public void setOrderByArguments(Collection<PaginationOrder> paginationOrders) { Preconditions.checkNotNull(paginationOrders); - this.orderByArguments = Sets.newLinkedHashSet(); + LinkedHashSet<String> orderByArgumentsAsSet = Sets.newLinkedHashSet(); for (PaginationOrder paginationOrder : paginationOrders) { - this.orderByArguments.add(String.format("%s %s", paginationOrder.getClause(), paginationOrder.isDesc() ? "desc" : "asc")); + String orderClause = String.format("%s %s", paginationOrder.getClause(), paginationOrder.isDesc() ? "desc" : "asc"); + boolean alreadyAdded = orderByArgumentsAsSet.add(orderClause); + if (alreadyAdded) { + throw new IllegalStateException("Duplicate ORDER BY arguments found: " + orderClause); + } } + this.orderByArguments = orderByArgumentsAsSet; } public void addAllFetches(Collection<String> properties) { diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java index e483a26..149c98f 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaQueryBuilderAddCriteriaStep.java @@ -27,6 +27,7 @@ package org.nuiton.topia.persistence; import org.nuiton.util.pagination.PaginationOrder; import java.util.Collection; +import java.util.LinkedHashSet; import java.util.Set; /** @@ -157,7 +158,7 @@ public interface TopiaQueryBuilderAddCriteriaStep<E extends TopiaEntity> { * @param orderByArguments list of arguments that will be added as order by * @return the next step as this method must be used at the end */ - TopiaQueryBuilderRunQueryStep<E> setOrderByArguments(Set<String> orderByArguments); + TopiaQueryBuilderRunQueryStep<E> setOrderByArguments(LinkedHashSet<String> orderByArguments); /** * @param orderByArguments list of arguments that will be added as order by diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java index c6e72ff..3d4a074 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java @@ -71,6 +71,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; @@ -847,7 +848,7 @@ public abstract class AbstractTopiaDao<E extends TopiaEntity> implements TopiaDa } @Override - public InnerTopiaQueryBuilderRunQueryStep<E> setOrderByArguments(Set<String> orderByArguments) { + public InnerTopiaQueryBuilderRunQueryStep<E> setOrderByArguments(LinkedHashSet<String> orderByArguments) { hqlAndParametersBuilder.setOrderByArguments(orderByArguments); return getNextStep(); } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.