Repository: deltaspike Updated Branches: refs/heads/master 35883fbd0 -> 13e1d4d0d
DELTASPIKE-702 Remove restirctions to number Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/04ee688a Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/04ee688a Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/04ee688a Branch: refs/heads/master Commit: 04ee688a8d1ffbefc3aae7db4ce02297e226a350 Parents: 35883fb Author: Thomas Hug <[email protected]> Authored: Fri Aug 29 15:46:08 2014 +0200 Committer: Thomas Hug <[email protected]> Committed: Fri Aug 29 16:47:54 2014 +0200 ---------------------------------------------------------------------- .../deltaspike/data/api/criteria/Criteria.java | 4 +-- .../data/impl/criteria/QueryCriteria.java | 4 +-- .../impl/criteria/predicate/GreaterThan.java | 4 +-- .../data/impl/criteria/predicate/LessThan.java | 4 +-- .../data/impl/criteria/CriteriaTest.java | 27 ++++++++++++++++++++ .../test/service/SimpleCriteriaRepository.java | 8 ++++++ 6 files changed, 43 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/deltaspike/blob/04ee688a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/criteria/Criteria.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/criteria/Criteria.java b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/criteria/Criteria.java index 6dfedd1..6ff411b 100644 --- a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/criteria/Criteria.java +++ b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/criteria/Criteria.java @@ -232,7 +232,7 @@ public interface Criteria<C, R> * @param value The comparison value. * @return Fluent API: Criteria instance. */ - <P extends Number> Criteria<C, R> lt(SingularAttribute<? super C, P> att, P value); + <P extends Comparable<? super P>> Criteria<C, R> lt(SingularAttribute<? super C, P> att, P value); /** * Less than or equals predicate. @@ -248,7 +248,7 @@ public interface Criteria<C, R> * @param value The comparison value. * @return Fluent API: Criteria instance. */ - <P extends Number> Criteria<C, R> gt(SingularAttribute<? super C, P> att, P value); + <P extends Comparable<? super P>> Criteria<C, R> gt(SingularAttribute<? super C, P> att, P value); /** * Greater than or equals predicate. http://git-wip-us.apache.org/repos/asf/deltaspike/blob/04ee688a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/QueryCriteria.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/QueryCriteria.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/QueryCriteria.java index 6c0aa11..b530280 100644 --- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/QueryCriteria.java +++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/QueryCriteria.java @@ -388,7 +388,7 @@ public class QueryCriteria<C, R> implements Criteria<C, R> } @Override - public <P extends Number> Criteria<C, R> lt(SingularAttribute<? super C, P> att, P value) + public <P extends Comparable<? super P>> Criteria<C, R> lt(SingularAttribute<? super C, P> att, P value) { add(new LessThan<C, P>(att, value), value); return this; @@ -402,7 +402,7 @@ public class QueryCriteria<C, R> implements Criteria<C, R> } @Override - public <P extends Number> Criteria<C, R> gt(SingularAttribute<? super C, P> att, P value) + public <P extends Comparable<? super P>> Criteria<C, R> gt(SingularAttribute<? super C, P> att, P value) { add(new GreaterThan<C, P>(att, value), value); return this; http://git-wip-us.apache.org/repos/asf/deltaspike/blob/04ee688a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/GreaterThan.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/GreaterThan.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/GreaterThan.java index 6cfd6fd..6bf61d7 100644 --- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/GreaterThan.java +++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/GreaterThan.java @@ -26,7 +26,7 @@ import javax.persistence.criteria.Path; import javax.persistence.criteria.Predicate; import javax.persistence.metamodel.SingularAttribute; -public class GreaterThan<E, V extends Number> extends SingleValueBuilder<E, V> +public class GreaterThan<E, V extends Comparable<? super V>> extends SingleValueBuilder<E, V> { public GreaterThan(SingularAttribute<? super E, V> att, V value) @@ -37,7 +37,7 @@ public class GreaterThan<E, V extends Number> extends SingleValueBuilder<E, V> @Override public List<Predicate> build(CriteriaBuilder builder, Path<E> path) { - return Arrays.asList(builder.gt(path.get(getAtt()), getValue())); + return Arrays.asList(builder.greaterThan(path.get(getAtt()), getValue())); } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/04ee688a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/LessThan.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/LessThan.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/LessThan.java index 837d873..6086da2 100644 --- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/LessThan.java +++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/criteria/predicate/LessThan.java @@ -26,7 +26,7 @@ import javax.persistence.criteria.Path; import javax.persistence.criteria.Predicate; import javax.persistence.metamodel.SingularAttribute; -public class LessThan<E, V extends Number> extends SingleValueBuilder<E, V> +public class LessThan<E, V extends Comparable<? super V>> extends SingleValueBuilder<E, V> { public LessThan(SingularAttribute<? super E, V> att, V value) @@ -37,7 +37,7 @@ public class LessThan<E, V extends Number> extends SingleValueBuilder<E, V> @Override public List<Predicate> build(CriteriaBuilder builder, Path<E> path) { - return Arrays.asList(builder.lt(path.get(getAtt()), getValue())); + return Arrays.asList(builder.lessThan(path.get(getAtt()), getValue())); } } http://git-wip-us.apache.org/repos/asf/deltaspike/blob/04ee688a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/criteria/CriteriaTest.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/criteria/CriteriaTest.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/criteria/CriteriaTest.java index 2cfa21c..031b0da 100644 --- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/criteria/CriteriaTest.java +++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/criteria/CriteriaTest.java @@ -26,6 +26,8 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.lang.reflect.InvocationTargetException; +import java.util.Calendar; +import java.util.Date; import java.util.List; import javax.enterprise.inject.Produces; @@ -357,6 +359,31 @@ public class CriteriaTest extends TransactionalTestCase assertEquals(1l, result.longValue()); } + @Test + public void should_create_date_criteria() + { + // given + final String name = "should_create_date_criteria"; + final Simple simple = new Simple(name); + simple.setTemporal(new Date()); + entityManager.persist(simple); + entityManager.flush(); + + Calendar cal = Calendar.getInstance(); + cal.setTime(simple.getTemporal()); + cal.add(Calendar.MINUTE, -1); + Date from = cal.getTime(); + cal.add(Calendar.MINUTE, 2); + Date to = cal.getTime(); + + // when + final List<Simple> result = repo.findByTimeBetween(from, to); + + // then + assertNotNull(result); + assertEquals(1, result.size()); + } + @Override protected EntityManager getEntityManager() { http://git-wip-us.apache.org/repos/asf/deltaspike/blob/04ee688a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleCriteriaRepository.java ---------------------------------------------------------------------- diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleCriteriaRepository.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleCriteriaRepository.java index 244587b..c911b25 100644 --- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleCriteriaRepository.java +++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleCriteriaRepository.java @@ -18,6 +18,7 @@ */ package org.apache.deltaspike.data.test.service; +import java.util.Date; import java.util.List; import org.apache.deltaspike.data.api.AbstractEntityRepository; @@ -54,6 +55,13 @@ public abstract class SimpleCriteriaRepository extends AbstractEntityRepository< .getAnyResult(); } + public List<Simple> findByTimeBetween(Date from, Date to) { + return criteria() + .gt(Simple_.temporal, from) + .lt(Simple_.temporal, to) + .getResultList(); + } + public Long criteriaCount(String name) { return criteria()
