[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