You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by ta...@apache.org on 2018/04/23 14:54:06 UTC
deltaspike git commit: DELTASPIKE-1280 Automatic support for count*
methods in EntityRepository
Repository: deltaspike
Updated Branches:
refs/heads/master 1a6a0013a -> aa668679e
DELTASPIKE-1280 Automatic support for count* methods in EntityRepository
Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/aa668679
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/aa668679
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/aa668679
Branch: refs/heads/master
Commit: aa668679e7105e101226e4a2d2beaafb1e86c403
Parents: 1a6a001
Author: Thomas Andraschko <ta...@apache.org>
Authored: Mon Apr 23 16:53:59 2018 +0200
Committer: Thomas Andraschko <ta...@apache.org>
Committed: Mon Apr 23 16:53:59 2018 +0200
----------------------------------------------------------------------
.../data/impl/builder/part/QueryRoot.java | 7 +++++++
.../data/impl/meta/RepositoryMethodPrefix.java | 11 +++++++++--
.../data/impl/handler/QueryHandlerTest.java | 17 +++++++++++++++++
.../data/test/service/SimpleRepository.java | 4 +++-
4 files changed, 36 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/aa668679/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/part/QueryRoot.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/part/QueryRoot.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/part/QueryRoot.java
index 80ec18d..6d9cec5 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/part/QueryRoot.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/part/QueryRoot.java
@@ -107,15 +107,22 @@ public class QueryRoot extends QueryPart
{
ctx.append(QueryBuilder.deleteQuery(entityName));
}
+ else if (methodPrefix.isCount())
+ {
+ ctx.append(QueryBuilder.countQuery(entityName));
+ }
else
{
ctx.append(QueryBuilder.selectQuery(entityName));
}
+
if (hasChildren(excludedForWhereCheck()))
{
ctx.append(" where ");
}
+
buildQueryForChildren(ctx);
+
return this;
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/aa668679/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodPrefix.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodPrefix.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodPrefix.java
index a166e08..90095cc 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodPrefix.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodPrefix.java
@@ -29,9 +29,10 @@ public class RepositoryMethodPrefix
public static final String DEFAULT_OPT_PREFIX = "findOptionalBy";
public static final String DEFAULT_ANY_PREFIX = "findAnyBy";
public static final String DEFAULT_DELETE_PREFIX = "deleteBy";
+ public static final String DEFAULT_COUNT_PREFIX = "countBy";
public static final String DEFAULT_REMOVE_PREFIX = "removeBy";
private static final String FIND_ALL_PREFIX = "findAll";
-
+
private static final String FIND_FIRST_PREFIX = "find(First|Top)(\\d+)(By)*";
private static final String FIND_FIRST_PREFIX_PATTERN = FIND_FIRST_PREFIX + "(.*)";
private static final Pattern DIGIT_PATTERN = Pattern.compile("\\d+");
@@ -104,6 +105,11 @@ public class RepositoryMethodPrefix
this.getPrefix().equalsIgnoreCase(DEFAULT_REMOVE_PREFIX);
}
+ public boolean isCount()
+ {
+ return this.getPrefix().equalsIgnoreCase(DEFAULT_COUNT_PREFIX);
+ }
+
public int getDefinedMaxResults()
{
return definedMaxResults;
@@ -141,7 +147,8 @@ public class RepositoryMethodPrefix
OPTIONAL(DEFAULT_OPT_PREFIX,SingleResultType.OPTIONAL),
ANY(DEFAULT_ANY_PREFIX, SingleResultType.ANY),
DELETE_DEFAULT(DEFAULT_DELETE_PREFIX, SingleResultType.ANY),
- REMOVE_DEFAULT(DEFAULT_REMOVE_PREFIX, SingleResultType.ANY);
+ REMOVE_DEFAULT(DEFAULT_REMOVE_PREFIX, SingleResultType.ANY),
+ COUNT_DEFAULT(DEFAULT_COUNT_PREFIX, SingleResultType.ANY);
private final String prefix;
private final SingleResultType singleResultType;
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/aa668679/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/QueryHandlerTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/QueryHandlerTest.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/QueryHandlerTest.java
index 75f8543..1d34ec0 100644
--- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/QueryHandlerTest.java
+++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/QueryHandlerTest.java
@@ -515,6 +515,23 @@ public class QueryHandlerTest extends TransactionalTestCase
assertEquals("willow", result.get(2).getName());
assertEquals("zebra", result.get(3).getName());
}
+
+ @Test
+ public void should_count_by_name()
+ {
+ builder.createSimple("zebra");
+ builder.createSimple("zebra");
+ builder.createSimple("willow");
+ builder.createSimple("kangaroo");
+ builder.createSimple("kangaroo");
+ builder.createSimple("kangaroo");
+ builder.createSimple("bologna");
+
+ assertEquals(repo.countByName("bologna"), 1);
+ assertEquals(repo.countByName("kangaroo"), 3);
+ assertEquals(repo.countByName("willow"), 1);
+ assertEquals(repo.countByName("zebra"), 2);
+ }
@Before
public void setup()
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/aa668679/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java
index 977736d..ac8302a 100755
--- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java
+++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java
@@ -92,7 +92,9 @@ public abstract class SimpleRepository extends AbstractEntityRepository<Simple,
public abstract List<Simple> findFirst3OrderByName();
public abstract List<Simple> findAllOrderByName();
-
+
+ public abstract long countByName(String name);
+
public abstract List<Simple> findByOrderByCounterAscIdDesc();
@Query(value = "SELECT * from SIMPLE_TABLE s WHERE s.name = ?1", isNative = true)