branch develop updated (2bb7e9a4 -> 939966db)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository topia. See https://gitlab.nuiton.org/nuiton/topia.git discards 2bb7e9a4 Allow using OR instead of AND when building a query new 939966db Allow using OR instead of AND when building a query This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (2bb7e9a4) \ N -- N -- N refs/heads/develop (939966db) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. 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 939966dbae7e4c2042cd251aaab6ecd1ffc32be3 Author: Brendan Le Ny <bleny@codelutin.com> Date: Thu Jul 4 17:55:49 2019 +0200 Allow using OR instead of AND when building a query Summary of changes: .../java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java | 4 ++++ 1 file changed, 4 insertions(+) -- 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 https://gitlab.nuiton.org/nuiton/topia.git commit 939966dbae7e4c2042cd251aaab6ecd1ffc32be3 Author: Brendan Le Ny <bleny@codelutin.com> Date: Thu Jul 4 17:55:49 2019 +0200 Allow using OR instead of AND when building a query --- .../topia/persistence/HqlAndParametersBuilder.java | 21 +++++++++++++++++++-- .../java/org/nuiton/topia/persistence/TopiaDao.java | 11 ++++++++++- .../persistence/internal/AbstractTopiaDao.java | 16 +++++++++++++--- 3 files changed, 42 insertions(+), 6 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 0278ba66..101716bc 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 @@ -38,6 +38,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.text.WordUtils; +import org.nuiton.topia.persistence.pager.FilterRuleGroupOperator; import org.nuiton.util.pagination.PaginationOrder; import java.time.LocalDate; @@ -79,20 +80,35 @@ public class HqlAndParametersBuilder<E extends TopiaEntity> { // List of properties that must be loaded in a single query protected Set<String> fetchProperties = Sets.newLinkedHashSet(); + private final FilterRuleGroupOperator filterRuleGroupOperator; + public HqlAndParametersBuilder(Class<E> entityClass) { - this(entityClass, DEFAULT_ALIAS); + this(entityClass, DEFAULT_ALIAS, FilterRuleGroupOperator.AND); } public HqlAndParametersBuilder(Class<E> entityClass, String alias) { + this(entityClass, alias, FilterRuleGroupOperator.AND); + } + + public HqlAndParametersBuilder(Class<E> entityClass, FilterRuleGroupOperator filterRuleGroupOperator) { + this(entityClass, DEFAULT_ALIAS, filterRuleGroupOperator); + } + + public HqlAndParametersBuilder(Class<E> entityClass, String alias, FilterRuleGroupOperator filterRuleGroupOperator) { Preconditions.checkArgument(StringUtils.isNotEmpty(alias)); this.entityClass = entityClass; this.alias = alias; + this.filterRuleGroupOperator = filterRuleGroupOperator; } public String getAlias() { return alias; } + public FilterRuleGroupOperator getFilterRuleGroupOperator() { + return filterRuleGroupOperator; + } + public String getHqlSelectClause(boolean includeFetch) { String result = selectClause; if (includeFetch && !CollectionUtils.isEmpty(fetchProperties)) { @@ -581,7 +597,8 @@ public class HqlAndParametersBuilder<E extends TopiaEntity> { String whereClause = Iterables.getOnlyElement(whereClauses); hqlWhereClause = "where " + whereClause; } else { - hqlWhereClause = "where (" + StringUtils.join(whereClauses, ") and (") + ")"; + String hqlOperator = filterRuleGroupOperator == FilterRuleGroupOperator.AND ? "and" : "or"; + hqlWhereClause = "where (" + StringUtils.join(whereClauses, ") " + hqlOperator + " (") + ")"; } return hqlWhereClause; } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java index 736cec71..ae13b1f0 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java @@ -27,6 +27,7 @@ package org.nuiton.topia.persistence; import com.google.common.base.Optional; import org.nuiton.topia.persistence.event.TopiaEntityListener; import org.nuiton.topia.persistence.event.TopiaEntityVetoable; +import org.nuiton.topia.persistence.pager.FilterRuleGroupOperator; import org.nuiton.util.pagination.PaginationResult; import java.util.Collection; @@ -251,7 +252,15 @@ public interface TopiaDao<E extends TopiaEntity> extends Iterable<E> { * @return FIXME * @since 3.0 */ - TopiaQueryBuilderAddCriteriaStep<E> newQueryBuilder(); + default TopiaQueryBuilderAddCriteriaStep<E> newQueryBuilder() { + return newQueryBuilder(FilterRuleGroupOperator.AND); + } + + /** + * @return FIXME + * @since 3.0 + */ + TopiaQueryBuilderAddCriteriaStep<E> newQueryBuilder(FilterRuleGroupOperator filterRuleGroupOperator); /** * @param propertyName FIXME 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 cf52297c..6a77eb7a 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 @@ -56,6 +56,7 @@ import org.nuiton.topia.persistence.event.TopiaEntityListener; import org.nuiton.topia.persistence.event.TopiaEntityVetoable; import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; import org.nuiton.topia.persistence.internal.support.TopiaHibernateEventListener; +import org.nuiton.topia.persistence.pager.FilterRuleGroupOperator; import org.nuiton.topia.persistence.support.TopiaHibernateSupport; import org.nuiton.topia.persistence.support.TopiaJpaSupport; import org.nuiton.topia.persistence.support.TopiaSqlSupport; @@ -383,11 +384,15 @@ public abstract class AbstractTopiaDao<E extends TopiaEntity> implements TopiaDa } } - protected HqlAndParametersBuilder<E> newHqlAndParametersBuilder() { - HqlAndParametersBuilder<E> result = new HqlAndParametersBuilder<E>(getEntityClass()); + protected HqlAndParametersBuilder<E> newHqlAndParametersBuilder(FilterRuleGroupOperator filterRuleGroupOperator) { + HqlAndParametersBuilder<E> result = new HqlAndParametersBuilder<E>(getEntityClass(), filterRuleGroupOperator); return result; } + protected HqlAndParametersBuilder<E> newHqlAndParametersBuilder() { + return newHqlAndParametersBuilder(FilterRuleGroupOperator.AND); + } + protected HqlAndParametersBuilder<E> getHqlForProperties(String propertyName, Object propertyValue, Object... otherPropertyNamesAndValues) { @@ -457,7 +462,12 @@ public abstract class AbstractTopiaDao<E extends TopiaEntity> implements TopiaDa @Override public InnerTopiaQueryBuilderAddCriteriaOrRunQueryStep<E> newQueryBuilder() { - HqlAndParametersBuilder<E> hqlAndParametersBuilder = newHqlAndParametersBuilder(); + return newQueryBuilder(FilterRuleGroupOperator.AND); + } + + @Override + public InnerTopiaQueryBuilderAddCriteriaOrRunQueryStep<E> newQueryBuilder(FilterRuleGroupOperator filterRuleGroupOperator) { + HqlAndParametersBuilder<E> hqlAndParametersBuilder = newHqlAndParametersBuilder(filterRuleGroupOperator); InnerTopiaQueryBuilderAddCriteriaOrRunQueryStep<E> result = new InnerTopiaQueryBuilderAddCriteriaOrRunQueryStep<E>(this, hqlAndParametersBuilder); return result; } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm