View Javadoc

1   /*
2    *  DISCLAIMER
3    */
4   
5   package org.flowfuse.base.services.workitem.implementation;
6   
7   import org.apache.commons.logging.Log;
8   import org.apache.commons.logging.LogFactory;
9   import org.flowfuse.base.dao.WorkflowInstanceDao;
10  import org.flowfuse.base.model.WorkItem;
11  import org.flowfuse.base.services.workflow.WorkflowService;
12  import org.flowfuse.base.services.workitem.WorkItemManagementService;
13  
14  import java.util.List;
15  import java.util.Map;
16  
17  /***
18   * Default Implementation of the WorkItemManagementService iterface.
19   *
20   * @author <a href="stefan@flowfuse.org">Stefan Kleineikenscheidt</a>,
21   *         Flowfuse.org
22   * @see org.flowfuse.base.services.workitem.WorkItemManagementService
23   * @since 1.0
24   * @version $Id: WorkItemManagementServiceImpl.java,v 1.2 2006/01/15 19:56:18 skleinei Exp $
25   */
26  public class WorkItemManagementServiceImpl
27          implements WorkItemManagementService {
28  
29    /* RCS ID */
30    public final static String rcsid = "$Id: WorkItemManagementServiceImpl.java,v 1.2 2006/01/15 19:56:18 skleinei Exp $";
31  
32    /* Logger */
33    protected final Log logger = LogFactory.getLog(this.getClass());
34  
35    /***
36     * WorkflowInstance Dao
37     */
38    private WorkflowInstanceDao workItemDao = null;
39  
40    private WorkflowService workflowService = null;
41  
42    public static final String KEY_COMMENTS = "sadf";
43  
44    public WorkItem createWorkItem() {
45      return injectServices(new WorkItem());
46    }
47  
48    public WorkItem getWorkItem(Long workflowId) {
49      return injectServices(
50              workItemDao.getWorkflowInstance(workflowId));
51    }
52  
53    public WorkItem getWorkItemByOswfId(Long oswfId) {
54      return injectServices(
55              workItemDao.getWorkflowInstanceByOswfId(oswfId));
56    }
57  
58    public List queryWorkItems(Map filter) {
59      logger.debug("Querying work items.");
60      List workItems = workItemDao.query(filter);
61      logger.debug(workItems.size() + " work items found.");
62      return injectServices(workItems);
63    }
64  
65    public int countWorkItems(Map filter) {
66      return workItemDao.count(filter);
67    }
68  
69    public void saveWorkflowInstance(WorkItem workItem) {
70      workItemDao.saveWorkflowInstance(workItem);
71    }
72  
73    public void removeWorkflowInstance(Long workflowId) {
74      workItemDao.removeWorkflowInstance(workflowId);
75    }
76  
77    /***
78     * Injects the required dependencies in the given work item and returns
79     * the work item.
80     *
81     * @param workItem The work item to inject the
82     * @return The injected work item.
83     */
84    private WorkItem injectServices(WorkItem workItem) {
85      workItem.getWorkflow().setWorkflowManagementService(this);
86      workItem.getWorkflow().setWorkflowService(this.workflowService);
87      return workItem;
88    }
89  
90    /***
91     * Injects all required dependencies in all work item in the list
92     * and returns the list of work items.
93     *
94     * @param workItems List of work items.
95     * @return The list with injected work items.
96     */
97    private List injectServices(List workItems) {
98      for (int i = 0; i < workItems.size(); i++) {
99        WorkItem item = (WorkItem) workItems.get(i);
100       injectServices(item);
101     }
102     return workItems;
103   }
104 
105   // -- Dependency injection setter --------------------------------------
106 
107   public WorkflowInstanceDao getWorkItemDao() {
108     return workItemDao;
109   }
110 
111   public void setWorkItemDao(WorkflowInstanceDao workItemDao) {
112     this.workItemDao = workItemDao;
113   }
114 
115   public WorkflowService getWorkflowService() {
116     return workflowService;
117   }
118 
119   public void setWorkflowService(WorkflowService workflowService) {
120     this.workflowService = workflowService;
121   }
122 }
123 
124 /* EOF */