[topia] branch develop updated (20f5f5d -> bcc76c8)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository topia. See http://git.nuiton.org/topia.git from 20f5f5d fixes #3484 Merge branch 'feature/3484' into develop new bcc76c8 HqlAndParametersBuilder#orderByArguments obviously uses LinkedHashSet The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit bcc76c8cb79ada38b0ad63dbdff57ab857c60ccc Author: Arnaud Thimel <thimel@codelutin.com> Date: Tue Sep 9 17:37:11 2014 +0200 HqlAndParametersBuilder#orderByArguments obviously uses LinkedHashSet Summary of changes: .../topia/persistence/HqlAndParametersBuilder.java | 28 ++++++++++++++++------ .../TopiaQueryBuilderAddCriteriaStep.java | 3 ++- .../persistence/internal/AbstractTopiaDao.java | 3 ++- 3 files changed, 25 insertions(+), 9 deletions(-) -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
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>.
participants (1)
-
nuiton.org scm