[jbpm-commits] JBoss JBPM SVN: r3704 - in jbpm4/trunk/modules: pvm/src/main/java/org/jbpm/pvm/internal/cmd and 6 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Jan 22 15:25:15 EST 2009


Author: tom.baeyens at jboss.com
Date: 2009-01-22 15:25:15 -0500 (Thu, 22 Jan 2009)
New Revision: 3704

Added:
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/HqlQueryOldCmd.java
Removed:
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/HqlQueryCmd.java
   jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/cmd/GetPersonalTaskListCmd.java
Modified:
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskQuery.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ExecutionQueryImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ProcessDefinitionQueryImpl.java
   jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/hibernate/HibernateTaskDbSession.java
   jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/model/TaskQueryImpl.java
   jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/model/TaskServiceImpl.java
   jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/session/TaskDbSession.java
   jbpm4/trunk/modules/test-db/src/main/java/org/jbpm/test/task/TaskListTest.java
Log:
added task queries

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskQuery.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskQuery.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/TaskQuery.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -31,6 +31,7 @@
  */
 public interface TaskQuery {
   
+  public static final String NAME = "name";
   public static final String ASSIGNEE = "assignee";
   public static final String CREATEDATE = "create-date";
   public static final String DUEDATE = "due-date";

Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/HqlQueryCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/HqlQueryCmd.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/HqlQueryCmd.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -1,74 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.pvm.internal.cmd;
-
-import java.util.List;
-
-import org.hibernate.Query;
-import org.hibernate.Session;
-import org.jbpm.JbpmException;
-import org.jbpm.cmd.Command;
-import org.jbpm.env.Environment;
-import org.jbpm.log.Log;
-
-
-/**
- * @author Tom Baeyens
- */
-public class HqlQueryCmd implements Command<List<Object>> {
-
-  private static final long serialVersionUID = 1L;
-  
-  private static Log log = Log.getLog(HqlQueryCmd.class.getName());
-  
-  String hql;
-  Integer firstResult;
-  Integer maxResults;
-
-  public HqlQueryCmd(String hql, Integer firstResult, Integer maxResults) {
-    this.hql = hql;
-    this.firstResult = firstResult;
-    this.maxResults = maxResults;
-  }
-
-  public List<Object> execute(Environment environment) throws Exception {
-    Session session = environment.get(Session.class);
-    if (session==null) {
-      throw new JbpmException("no hibernate-session defined in configuration");
-    }
-    
-    Query query = session.createQuery(hql);
-    if (firstResult!=null) {
-      query.setFirstResult(firstResult);
-    }
-    if (maxResults!=null) {
-      query.setMaxResults(maxResults);
-    }
-    
-    if (log.isDebugEnabled()) {
-      log.debug("executing hql: ");
-      log.debug(hql);
-    }
-
-    return query.list();
-  }
-}

Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/HqlQueryOldCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/HqlQueryOldCmd.java	                        (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/HqlQueryOldCmd.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.pvm.internal.cmd;
+
+import java.util.List;
+
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.jbpm.JbpmException;
+import org.jbpm.cmd.Command;
+import org.jbpm.env.Environment;
+import org.jbpm.log.Log;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class HqlQueryOldCmd implements Command<List<Object>> {
+
+  private static final long serialVersionUID = 1L;
+  
+  private static Log log = Log.getLog(HqlQueryOldCmd.class.getName());
+  
+  String hql;
+  Integer firstResult;
+  Integer maxResults;
+
+  public HqlQueryOldCmd(String hql, Integer firstResult, Integer maxResults) {
+    this.hql = hql;
+    this.firstResult = firstResult;
+    this.maxResults = maxResults;
+  }
+
+  public List<Object> execute(Environment environment) throws Exception {
+    Session session = environment.get(Session.class);
+    if (session==null) {
+      throw new JbpmException("no hibernate-session defined in configuration");
+    }
+    
+    Query query = session.createQuery(hql);
+    if (firstResult!=null) {
+      query.setFirstResult(firstResult);
+    }
+    if (maxResults!=null) {
+      query.setMaxResults(maxResults);
+    }
+    
+    if (log.isDebugEnabled()) {
+      log.debug("executing hql: ");
+      log.debug(hql);
+    }
+
+    return query.list();
+  }
+}

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ExecutionQueryImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ExecutionQueryImpl.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ExecutionQueryImpl.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -26,7 +26,7 @@
 import org.jbpm.Execution;
 import org.jbpm.ExecutionQuery;
 import org.jbpm.cmd.CommandService;
-import org.jbpm.pvm.internal.cmd.HqlQueryCmd;
+import org.jbpm.pvm.internal.cmd.HqlQueryOldCmd;
 import org.jbpm.pvm.internal.model.ExecutionImpl;
 
 
@@ -97,7 +97,7 @@
 
   protected List<Execution> execute() {
     String hql = buildHql();
-    return (List) commandService.execute(new HqlQueryCmd(hql, firstResult, maxResults));
+    return (List) commandService.execute(new HqlQueryOldCmd(hql, firstResult, maxResults));
   }
 
   public ExecutionQuery onlyProcessInstances() {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ProcessDefinitionQueryImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ProcessDefinitionQueryImpl.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ProcessDefinitionQueryImpl.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -26,7 +26,7 @@
 import org.jbpm.ProcessDefinition;
 import org.jbpm.ProcessDefinitionQuery;
 import org.jbpm.cmd.CommandService;
-import org.jbpm.pvm.internal.cmd.HqlQueryCmd;
+import org.jbpm.pvm.internal.cmd.HqlQueryOldCmd;
 import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
 
 
@@ -81,7 +81,7 @@
 
   protected List<ProcessDefinition> execute() {
     String hql = buildHql();
-    return (List) commandService.execute(new HqlQueryCmd(hql, firstResult, maxResults));
+    return (List) commandService.execute(new HqlQueryOldCmd(hql, firstResult, maxResults));
   }
 
 

Deleted: jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/cmd/GetPersonalTaskListCmd.java
===================================================================
--- jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/cmd/GetPersonalTaskListCmd.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/cmd/GetPersonalTaskListCmd.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -1,53 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.task.internal.cmd;
-
-import java.util.List;
-
-import org.jbpm.cmd.Command;
-import org.jbpm.env.Environment;
-import org.jbpm.task.Task;
-import org.jbpm.task.session.TaskDbSession;
-
-
-/**
- * @author Tom Baeyens
- */
-public class GetPersonalTaskListCmd implements Command<List<Task>> {
-
-  private static final long serialVersionUID = 1L;
-
-  protected String userId;
-  protected int firstResult;
-  protected int maxResults;
-  
-  public GetPersonalTaskListCmd(String userId, int firstResult, int maxResults) {
-    this.userId = userId;
-    this.firstResult = firstResult;
-    this.maxResults = maxResults;
-  }
-
-  public List<Task> execute(Environment environment) {
-    TaskDbSession taskDbession = environment.get(TaskDbSession.class);
-    return taskDbession.findPersonalTasks(userId, firstResult, maxResults);
-  }
-}

Modified: jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/hibernate/HibernateTaskDbSession.java
===================================================================
--- jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/hibernate/HibernateTaskDbSession.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/hibernate/HibernateTaskDbSession.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -22,11 +22,9 @@
 package org.jbpm.task.internal.hibernate;
 
 import java.io.Serializable;
-import java.util.List;
 
 import org.hibernate.criterion.Restrictions;
 import org.jbpm.pvm.internal.hibernate.HibernateDbSession;
-import org.jbpm.task.Task;
 import org.jbpm.task.internal.model.TaskImpl;
 import org.jbpm.task.session.TaskDbSession;
 
@@ -43,16 +41,6 @@
       .uniqueResult();
   }
 
-  public List<Task> findPersonalTasks(String userId, int firstResult, int maxResults) {
-    // TODO maybe we should move these criteria queries to hql queries in the 
-    // hbm file so that users can easily customize.
-    return session.createCriteria(TaskImpl.class)
-      .add(Restrictions.eq("assignee", userId))
-      .setFirstResult(firstResult)
-      .setMaxResults(maxResults)
-      .list();
-  }
-
   public void saveTask(TaskImpl task) {
     if (! task.isPersisted()) {
       Serializable dbid = session.save(task);

Modified: jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/model/TaskQueryImpl.java
===================================================================
--- jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/model/TaskQueryImpl.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/model/TaskQueryImpl.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -23,20 +23,30 @@
 
 import java.util.List;
 
+import org.hibernate.Query;
+import org.hibernate.Session;
 import org.jbpm.TaskQuery;
+import org.jbpm.cmd.Command;
 import org.jbpm.cmd.CommandService;
+import org.jbpm.env.Environment;
 import org.jbpm.task.Task;
-import org.jbpm.task.internal.cmd.HqlQueryCmd;
 
 
 /**
  * @author Tom Baeyens
  */
-public class TaskQueryImpl implements TaskQuery {
+public class TaskQueryImpl implements TaskQuery, Command<List<Task>> {
   
+  private static final long serialVersionUID = 1L;
+
+  private static final String UNASSIGNED = "unassigned";
+
   protected CommandService commandService;
   
   protected String assignee = null;
+  protected int[] page = null;
+  protected boolean hasWhereClause = false;
+  protected String orderByClause = null;
 
   public TaskQueryImpl(CommandService commandService) {
     this.commandService = commandService;
@@ -44,23 +54,79 @@
 
   public TaskQuery assignee(String assignee) {
     this.assignee = assignee;
+    this.hasWhereClause = true;
     return this;
   }
 
+  public TaskQuery unassigned() {
+    this.assignee = UNASSIGNED;
+    this.hasWhereClause = true;
+    return this;
+  }
+
   public TaskQuery orderAsc(String property) {
-    return null;
+    addOrderByClause(property, "asc");
+    return this;
   }
 
   public TaskQuery orderDesc(String property) {
-    return null;
+    addOrderByClause(property, "desc");
+    return this;
   }
 
+  protected void addOrderByClause(String property, String direction) {
+    if (orderByClause==null) {
+      orderByClause = "";
+    } else {
+      orderByClause += ", ";
+    }
+    orderByClause += "task."+property+" "+direction;
+  }
+
   public TaskQuery page(int firstResult, int maxResults) {
-    return null;
+    page = new int[]{firstResult, maxResults};
+    return this;
   }
 
   public List<Task> execute() {
-    // TODO
-    return commandService.execute(null);
+    return commandService.execute(this);
   }
+
+  public List<Task> execute(Environment environment){
+    StringBuffer hql = new StringBuffer();
+    hql.append("select task ");
+    hql.append("from ");
+    hql.append(TaskImpl.class.getName());
+    hql.append(" as task ");
+    
+    if (hasWhereClause) {
+      hql.append("where ");
+    }
+    
+    if (assignee==UNASSIGNED) {
+      hql.append("task.assignee is null ");
+    } else if (assignee!=null) {
+      hql.append("task.assignee = :assignee ");
+    }
+    
+    if (orderByClause!=null) {
+      hql.append("order by ");
+      hql.append(orderByClause);
+   }
+
+    Session session = environment.get(Session.class);
+    String hqlText = hql.toString();
+    Query query = session.createQuery(hqlText);
+    
+    if ( (assignee!=UNASSIGNED) && (assignee!=null) ) {
+      query.setString("assignee", assignee);
+    }
+    
+    if (page!=null) {
+      query.setFirstResult(page[0]);
+      query.setMaxResults(page[1]);
+    }
+    
+    return query.list();
+  }
 }

Modified: jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/model/TaskServiceImpl.java
===================================================================
--- jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/model/TaskServiceImpl.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/internal/model/TaskServiceImpl.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -28,10 +28,9 @@
 import org.jbpm.cmd.CommandService;
 import org.jbpm.task.Role;
 import org.jbpm.task.Task;
-import org.jbpm.task.internal.cmd.NewTaskCmd;
 import org.jbpm.task.internal.cmd.DeleteTaskCmd;
-import org.jbpm.task.internal.cmd.GetPersonalTaskListCmd;
 import org.jbpm.task.internal.cmd.GetTaskCmd;
+import org.jbpm.task.internal.cmd.NewTaskCmd;
 import org.jbpm.task.internal.cmd.SaveTaskCmd;
 import org.jbpm.task.internal.cmd.SubmitTaskCmd;
 
@@ -89,8 +88,12 @@
     return null;
   }
 
-  public List<Task> getPersonalTaskList(String userId, int firstResult, int maxResults) {
-    return commandService.execute(new GetPersonalTaskListCmd(userId, firstResult, maxResults));
+  public List<Task> getPersonalTaskList(String assignee, int firstResult, int maxResults) {
+    return createTaskQuery()
+      .assignee(assignee)
+      .orderDesc(TaskQuery.PRIORITY)
+      .page(firstResult, maxResults)
+      .execute();
   }
 
   public List<Task> getGroupTaskList(String userId, int firstResult, int maxResults) {

Modified: jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/session/TaskDbSession.java
===================================================================
--- jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/session/TaskDbSession.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/task/src/main/java/org/jbpm/task/session/TaskDbSession.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -21,10 +21,7 @@
  */
 package org.jbpm.task.session;
 
-import java.util.List;
-
 import org.jbpm.session.DbSession;
-import org.jbpm.task.Task;
 import org.jbpm.task.internal.model.TaskImpl;
 
 /** 
@@ -35,7 +32,5 @@
 
   TaskImpl findTaskById(String taskId);
 
-  List<Task> findPersonalTasks(String userId, int firstResult, int maxResults);
-
   void saveTask(TaskImpl task);
 }

Modified: jbpm4/trunk/modules/test-db/src/main/java/org/jbpm/test/task/TaskListTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/main/java/org/jbpm/test/task/TaskListTest.java	2009-01-22 17:59:15 UTC (rev 3703)
+++ jbpm4/trunk/modules/test-db/src/main/java/org/jbpm/test/task/TaskListTest.java	2009-01-22 20:25:15 UTC (rev 3704)
@@ -23,6 +23,7 @@
 
 import java.util.List;
 
+import org.jbpm.TaskQuery;
 import org.jbpm.task.Task;
 import org.jbpm.test.DbTestCase;
 
@@ -32,46 +33,167 @@
  */
 public class TaskListTest extends DbTestCase {
 
-  public void testDefaultScenario() {
+  public void testPersonalTaskList() {
     Task task = taskService.newTask();
     task.setName("do laundry");
     task.setAssignee("johndoe");
     saveTask(task);
 
     task = taskService.newTask();
+    task.setName("get good idea");
+    task.setAssignee("joesmoe");
+    saveTask(task);
+
+    task = taskService.newTask();
+    task.setName("find venture capital");
+    task.setAssignee("joesmoe");
+    saveTask(task);
+    
+    task = taskService.newTask();
+    task.setName("start new business");
+    task.setAssignee("joesmoe");
+    saveTask(task);
+
+    List<Task> taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    assertNotNull(taskList);
+    
+    assertEquals("do laundry", taskList.get(0).getName());
+    assertEquals(1, taskList.size());
+
+    taskList = taskService.getPersonalTaskList("joesmoe", 0, 10);
+    assertNotNull(taskList);
+    
+    assertContainsTask(taskList, "get good idea");
+    assertContainsTask(taskList, "start new business");
+    assertContainsTask(taskList, "find venture capital");
+
+    assertEquals(3, taskList.size());
+  }
+
+  public void testPersonalTaskListDefaultSortOrder() {
+    Task task = taskService.newTask();
+    task.setName("get good idea");
+    task.setAssignee("joesmoe");
+    task.setPriority(3);
+    saveTask(task);
+
+    task = taskService.newTask();
+    task.setName("find venture capital");
+    task.setAssignee("joesmoe");
+    task.setPriority(2);
+    saveTask(task);
+    
+    task = taskService.newTask();
+    task.setName("start new business");
+    task.setAssignee("joesmoe");
+    task.setPriority(1);
+    saveTask(task);
+
+    task = taskService.newTask();
+    task.setName("take a day off");
+    task.setAssignee("joesmoe");
+    task.setPriority(-5);
+    saveTask(task);
+
+    task = taskService.newTask();
+    task.setName("make profit");
+    task.setAssignee("joesmoe");
+    task.setPriority(10);
+    saveTask(task);
+
+    List<Task> taskList = taskService.getPersonalTaskList("joesmoe", 0, 10);
+    assertNotNull(taskList);
+    
+    assertEquals("make profit",          taskList.get(0).getName());
+    assertEquals("get good idea",        taskList.get(1).getName());
+    assertEquals("find venture capital", taskList.get(2).getName());
+    assertEquals("start new business",   taskList.get(3).getName());
+    assertEquals("take a day off",       taskList.get(4).getName());
+
+    assertEquals(5, taskList.size());
+  }
+
+  public void testSimplestTaskQuery() {
+    Task task = taskService.newTask();
+    task.setName("do laundry");
+    task.setAssignee("johndoe");
+    task.setPriority(3);
+    saveTask(task);
+
+    task = taskService.newTask();
     task.setName("change dyper");
     task.setAssignee("johndoe");
+    task.setPriority(1);
     saveTask(task);
 
     task = taskService.newTask();
     task.setName("start new business");
     task.setAssignee("joesmoe");
+    task.setPriority(4);
     saveTask(task);
 
     task = taskService.newTask();
     task.setName("find venture capital");
-    task.setAssignee("joesmoe");
+    task.setPriority(4);
     saveTask(task);
 
-    /* 
-    List<Task> taskList = taskService.getPersonalTaskList("johndoe", 0, 10);
+    List<Task> taskList = taskService
+      .createTaskQuery()
+      .execute();
     assertNotNull(taskList);
     
-    task = taskList.get(0);
-    assertEquals("johndoe", task.getAssignee());
-    assertEquals("do laundry", task.getName());
+    assertContainsTask(taskList, "do laundry");
+    assertContainsTask(taskList, "change dyper");
+    assertContainsTask(taskList, "start new business");
+    assertContainsTask(taskList, "find venture capital");
 
-    task = taskList.get(1);
-    assertEquals("johndoe", task.getAssignee());
-    assertEquals("do laundry", task.getName());
+    assertEquals(4, taskList.size());
+  }
 
-    assertEquals(2, taskList.size());
+  public void testSimplestTaskQuerySortBy() {
+    Task task = taskService.newTask();
+    task.setName("do laundry");
+    task.setAssignee("johndoe");
+    task.setPriority(3);
+    saveTask(task);
+
+    task = taskService.newTask();
+    task.setName("change dyper");
+    task.setAssignee("johndoe");
+    task.setPriority(1);
+    saveTask(task);
+
+    task = taskService.newTask();
+    task.setName("start new business");
+    task.setAssignee("joesmoe");
+    task.setPriority(4);
+    saveTask(task);
+
+    task = taskService.newTask();
+    task.setName("find venture capital");
+    task.setPriority(7);
+    saveTask(task);
+
+    List<Task> taskList = taskService
+      .createTaskQuery()
+      .orderAsc(TaskQuery.NAME)
+      .execute();
+    assertNotNull(taskList);
     
-    
-    taskService.submitTask(task.getId());
-    
-    assertEquals(0, taskService.getPersonalTaskList("johndoe", 0, 10).size());
-    
-    */
+    assertEquals("change dyper",         taskList.get(0).getName());
+    assertEquals("do laundry",           taskList.get(1).getName());
+    assertEquals("find venture capital", taskList.get(2).getName());
+    assertEquals("start new business",   taskList.get(3).getName());
+
+    assertEquals(4, taskList.size());
   }
+
+  public void assertContainsTask(List<Task> taskList, String taskName) {
+    for (Task task : taskList) {
+      if (taskName.equals(task.getName())) {
+        return;
+      }
+    }
+    fail("tasklist doesn't contain task '"+taskName+"': "+taskList);
+  }
 }




More information about the jbpm-commits mailing list