From f9aa6e6d2eb8775bf5ae2d1e5970f50784eb44f9 Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Wed, 10 May 2017 19:50:37 -0400 Subject: [PATCH] HHH-11737 - Remove dependency on org.hibernate.criterion package. --- .../hibernate/envers/query/AuditEntity.java | 4 -- .../envers/query/criteria/AuditProperty.java | 10 ++- .../envers/query/criteria/MatchMode.java | 62 +++++++++++++++++++ .../test/integration/query/SimpleQuery.java | 2 +- 4 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 hibernate-envers/src/main/java/org/hibernate/envers/query/criteria/MatchMode.java diff --git a/hibernate-envers/src/main/java/org/hibernate/envers/query/AuditEntity.java b/hibernate-envers/src/main/java/org/hibernate/envers/query/AuditEntity.java index 975579256e7b..b6c43b40ba5f 100644 --- a/hibernate-envers/src/main/java/org/hibernate/envers/query/AuditEntity.java +++ b/hibernate-envers/src/main/java/org/hibernate/envers/query/AuditEntity.java @@ -23,11 +23,7 @@ import org.hibernate.envers.query.projection.internal.EntityAuditProjection; /** - * TODO: ilike - * * @author Adam Warski (adam at warski dot org) - * - * @see org.hibernate.criterion.Restrictions */ @SuppressWarnings({"JavaDoc"}) public class AuditEntity { diff --git a/hibernate-envers/src/main/java/org/hibernate/envers/query/criteria/AuditProperty.java b/hibernate-envers/src/main/java/org/hibernate/envers/query/criteria/AuditProperty.java index ca2922185616..d3509755a8cd 100644 --- a/hibernate-envers/src/main/java/org/hibernate/envers/query/criteria/AuditProperty.java +++ b/hibernate-envers/src/main/java/org/hibernate/envers/query/criteria/AuditProperty.java @@ -8,7 +8,6 @@ import java.util.Collection; -import org.hibernate.criterion.MatchMode; import org.hibernate.envers.boot.internal.EnversService; import org.hibernate.envers.internal.entities.EntityInstantiator; import org.hibernate.envers.query.criteria.internal.BetweenAuditExpression; @@ -86,7 +85,16 @@ public AuditCriterion ilike(T value) { /** * Apply an "ilike" constraint + * @deprecated since 5.2, use {@link #ilike(String, MatchMode)}. To be removed in 6.0. */ + @Deprecated + public AuditCriterion ilike(String value, org.hibernate.criterion.MatchMode matchMode) { + return new IlikeAuditExpression( alias, propertyNameGetter, matchMode.toMatchString( value ) ); + } + + /** + * Apply on "ilike" constraint + */ public AuditCriterion ilike(String value, MatchMode matchMode) { return new IlikeAuditExpression( alias, propertyNameGetter, matchMode.toMatchString( value ) ); } diff --git a/hibernate-envers/src/main/java/org/hibernate/envers/query/criteria/MatchMode.java b/hibernate-envers/src/main/java/org/hibernate/envers/query/criteria/MatchMode.java new file mode 100644 index 000000000000..fb192b6c0d70 --- /dev/null +++ b/hibernate-envers/src/main/java/org/hibernate/envers/query/criteria/MatchMode.java @@ -0,0 +1,62 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.envers.query.criteria; + +/** + * A strategy for matching strings using "like". + * + * @author Chris Cranford + */ +public enum MatchMode { + /** + * Match the pattern exactly. + */ + EXACT { + @Override + public String toMatchString(String pattern) { + return pattern; + } + }, + + /** + * Match the start of the string to the pattern. + */ + START { + @Override + public String toMatchString(String pattern) { + return pattern + '%'; + } + }, + + /** + * Match the end of the string to the pattern. + */ + END { + @Override + public String toMatchString(String pattern) { + return '%' + pattern; + } + }, + + /** + * Match the pattern anywhere in the string. + */ + ANYWHERE { + @Override + public String toMatchString(String pattern) { + return '%' + pattern + '%'; + } + }; + + /** + * Convert the pattern by prepending/append "%". + * + * @param pattern The pattern to convert according to the mode. + * @return The converted pattern. + */ + public abstract String toMatchString(String pattern); +} diff --git a/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/query/SimpleQuery.java b/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/query/SimpleQuery.java index c26fdc9acea9..66297573ecff 100644 --- a/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/query/SimpleQuery.java +++ b/hibernate-envers/src/test/java/org/hibernate/envers/test/integration/query/SimpleQuery.java @@ -11,10 +11,10 @@ import java.util.List; import javax.persistence.EntityManager; -import org.hibernate.criterion.MatchMode; import org.hibernate.envers.RevisionType; import org.hibernate.envers.enhanced.SequenceIdRevisionEntity; import org.hibernate.envers.query.AuditEntity; +import org.hibernate.envers.query.criteria.MatchMode; import org.hibernate.envers.test.BaseEnversJPAFunctionalTestCase; import org.hibernate.envers.test.Priority; import org.hibernate.envers.test.entities.StrIntTestEntity;