KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nl > hippo > cms > workflows > shared > ProjectWorkflowQuartzJob


1 package nl.hippo.cms.workflows.shared;
2
3 import java.util.HashMap JavaDoc;
4 import java.util.HashSet JavaDoc;
5 import java.util.Iterator JavaDoc;
6 import java.util.Map JavaDoc;
7 import java.util.Set JavaDoc;
8 import nl.hippo.servermanager.Project;
9 import nl.hippo.servermanager.ProjectWorkflowRepository;
10 import nl.hippo.servermanager.Server;
11 import nl.hippo.servermanager.ServerManager;
12 import org.quartz.Job;
13 import org.quartz.JobDataMap;
14 import org.quartz.JobExecutionContext;
15 import org.quartz.JobExecutionException;
16 import org.quartz.SchedulerContext;
17 import org.springframework.beans.factory.BeanFactory;
18
19 public class ProjectWorkflowQuartzJob implements Job
20 {
21     private static final Set JavaDoc JOB_DATA_PROPERTIES_TO_FILTER = new HashSet JavaDoc();
22     
23     static
24     {
25         JOB_DATA_PROPERTIES_TO_FILTER.add("workflowId");
26         JOB_DATA_PROPERTIES_TO_FILTER.add("className");
27     }
28
29     public ProjectWorkflowQuartzJob()
30     {
31         super();
32     }
33
34     public void execute(JobExecutionContext context) throws JobExecutionException
35     {
36         JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
37         long workflowId = jobDataMap.getLong("workflowId");
38         try
39         {
40             SchedulerContext schedulerContext = context.getScheduler().getContext();
41             
42             BeanFactory bf = (BeanFactory) schedulerContext.get("beanFactory");
43             Server server = ((ServerManager)bf.getBean("serverManager")).getServer();
44             
45             String JavaDoc projectName = jobDataMap.getString("projectName");
46             Project project = server.getProject(projectName);
47             ProjectWorkflowRepository workflow = project.getWorkflowRepository();
48             
49             String JavaDoc className = jobDataMap.getString("className");
50             Object JavaDoc jobAsObject = workflow.loadComponent(workflowId, className);
51             if (jobAsObject instanceof ProjectWorkflowJob)
52             {
53                 Map JavaDoc params = new HashMap JavaDoc();
54                 
55                 params.put("httpstate", bf.getBean("httpState"));
56                 
57                 Iterator JavaDoc keysIterator = jobDataMap.keySet().iterator();
58                 while (keysIterator.hasNext())
59                 {
60                     Object JavaDoc key = keysIterator.next();
61                     if (!JOB_DATA_PROPERTIES_TO_FILTER.contains(key))
62                     {
63                         params.put(key, jobDataMap.get(key));
64                     }
65                 }
66                 ((ProjectWorkflowJob)jobAsObject).execute(project, workflowId, params);
67             }
68         }
69         catch (Exception JavaDoc e)
70         {
71             throw createJobExecutionException(workflowId, e);
72         }
73     }
74
75     private JobExecutionException createJobExecutionException(long workflowId, Exception JavaDoc e)
76     {
77         return new JobExecutionException("Workflow task failed for workflow ID: " + workflowId, e, false);
78     }
79
80 }
81
Popular Tags