[jbpm-commits] JBoss JBPM SVN: r6286 - in jbpm4/trunk/modules: test-db/src/test/java/org/jbpm/test/task and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Apr 29 12:31:38 EDT 2010
Author: swiderski.maciej
Date: 2010-04-29 12:31:38 -0400 (Thu, 29 Apr 2010)
New Revision: 6286
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/TaskQueryImpl.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskQueryCandidatesTest.java
Log:
JBPM-2648: implementation and test cases
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/TaskQueryImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/TaskQueryImpl.java 2010-04-28 04:33:08 UTC (rev 6285)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/query/TaskQueryImpl.java 2010-04-29 16:31:38 UTC (rev 6286)
@@ -139,9 +139,9 @@
hql.append("select ");
if (count) {
- hql.append("count(task) ");
+ hql.append("count(distinct task) ");
} else {
- hql.append("task ");
+ hql.append("distinct task ");
}
hql.append("from ");
@@ -167,7 +167,7 @@
groupIds = new ArrayList<String>();
for (Group group: groups) {
groupIds.add(group.getId());
- }
+ }
appendWhereClause("((participant.userId = :candidateUserId) or (participant.groupId in (:candidateGroupIds)))", hql);
}
}
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskQueryCandidatesTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskQueryCandidatesTest.java 2010-04-28 04:33:08 UTC (rev 6285)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/TaskQueryCandidatesTest.java 2010-04-29 16:31:38 UTC (rev 6286)
@@ -49,6 +49,7 @@
developmentGroupId = identityService.createGroup("development");
identityService.createMembership("jackblack", developmentGroupId);
+ identityService.createMembership("johndoe", developmentGroupId);
}
public void tearDown() throws Exception {
@@ -127,4 +128,51 @@
taskService.deleteTaskCascade(johnsOtherTaskId);
taskService.deleteTaskCascade(joesOtherTaskId);
}
+
+ public void testGroupCandidateDuplicate() {
+ Task task = taskService.newTask();
+ task.setName("do laundry");
+ String taskId = taskService.saveTask(task);
+ taskService.addTaskParticipatingGroup(taskId, salesGroupId, Participation.CANDIDATE);
+ taskService.addTaskParticipatingGroup(taskId, developmentGroupId, Participation.CANDIDATE);
+
+ // this tasks are a diversion to see if the query only selects the above task
+ task = taskService.newTask();
+ task.setName("dishes");
+ String johnsOtherTaskId = taskService.saveTask(task);
+
+ // this tasks are a diversion to see if the query only selects the above task
+ task = taskService.newTask();
+ task.setName("dishes");
+ String joesOtherTaskId = taskService.saveTask(task);
+
+
+ List<Task> groupTasks = taskService.findGroupTasks("johndoe");
+ assertEquals(1, groupTasks.size());
+ assertEquals(taskId, groupTasks.get(0).getId());
+
+ groupTasks = taskService.findGroupTasks("joesmoe");
+ assertEquals(1, groupTasks.size());
+ assertEquals(taskId, groupTasks.get(0).getId());
+
+ groupTasks = taskService.findGroupTasks("jackblack");
+ assertEquals(1, groupTasks.size());
+
+ taskService.deleteTaskCascade(taskId);
+ taskService.deleteTaskCascade(johnsOtherTaskId);
+ taskService.deleteTaskCascade(joesOtherTaskId);
+ }
+
+ public void testCountGroupCandidateDuplicate() {
+ Task task = taskService.newTask();
+ task.setName("do laundry");
+ String taskId = taskService.saveTask(task);
+ taskService.addTaskParticipatingGroup(taskId, salesGroupId, Participation.CANDIDATE);
+ taskService.addTaskParticipatingGroup(taskId, developmentGroupId, Participation.CANDIDATE);
+
+ long count = taskService.createTaskQuery().candidate("johndoe").count();
+ assertEquals(1, count);
+
+ taskService.deleteTaskCascade(taskId);
+ }
}
More information about the jbpm-commits
mailing list