KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nl > hippo > cms > workflows > multiplesitessite > StartUnpublicationTaskFunction


1 package nl.hippo.cms.workflows.multiplesitessite;
2
3 import com.opensymphony.module.propertyset.PropertySet;
4 import com.opensymphony.workflow.WorkflowException;
5 import com.opensymphony.workflow.spi.WorkflowEntry;
6 import java.util.Date JavaDoc;
7 import java.util.Map JavaDoc;
8 import nl.hippo.cms.workflows.shared.FunctionProviderComponent;
9 import nl.hippo.cms.workflows.shared.ProjectWorkflowQuartzJob;
10 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil;
11 import nl.hippo.componentcontainers.AvalonSpringBridge;
12 import nl.hippo.servermanager.Project;
13 import nl.hippo.servermanager.ServerManager;
14 import nl.hippo.uidgenerator.UIDGenerator;
15 import org.apache.avalon.framework.CascadingException;
16 import org.quartz.JobDataMap;
17 import org.quartz.JobDetail;
18 import org.quartz.Scheduler;
19 import org.quartz.SimpleTrigger;
20 import org.quartz.Trigger;
21
22 public class StartUnpublicationTaskFunction extends FunctionProviderComponent
23 {
24
25     public StartUnpublicationTaskFunction()
26     {
27         super();
28     }
29
30     public void executeImpl(Map JavaDoc transientVars, Map JavaDoc args, PropertySet ps) throws WorkflowException
31     {
32         try
33         {
34             WorkflowEntry entry = (WorkflowEntry) transientVars.get("entry");
35             Date JavaDoc unpublicationDate = WorkflowExtensionUtil.getDateAndTime(transientVars
36                     .get("unpublicationDate"));
37             if (unpublicationDate != null)
38             {
39                 String JavaDoc projectName = (String JavaDoc) transientVars.get("projectName");
40
41                 AvalonSpringBridge asb = (AvalonSpringBridge) m_manager.lookup(AvalonSpringBridge.ROLE);
42                 try
43                 {
44                     ServerManager sm = (ServerManager) asb.getBean("serverManager");
45                     Project p = sm.getServer().getProject(projectName);
46                     Scheduler scheduler = p.getJobScheduler();
47                     
48                     String JavaDoc unpublicationTaskId = UIDGenerator.generateUID();
49                     ps.setString("unpublicationTaskId", unpublicationTaskId);
50                     JobDetail jobDetail = new JobDetail(unpublicationTaskId, projectName, ProjectWorkflowQuartzJob.class);
51                     JobDataMap jobDataMap = new JobDataMap();
52                     jobDataMap.put("className", UnpublicationTask.class.getName());
53                     jobDataMap.put("workflowId", entry.getId());
54                     jobDataMap.put("projectName", projectName);
55                     jobDetail.setJobDataMap(jobDataMap);
56                     
57                     Trigger trigger = new SimpleTrigger(jobDetail.getName(), jobDetail.getGroup(), unpublicationDate);
58                     scheduler.scheduleJob(jobDetail, trigger);
59                 }
60                 finally
61                 {
62                     m_manager.release(asb);
63                 }
64             }
65         }
66         catch (Exception JavaDoc e)
67         {
68             Throwable JavaDoc t = e;
69             while (t != null && t instanceof CascadingException)
70             {
71                 t = ((CascadingException) t).getCause();
72             }
73             throw new WorkflowException(t);
74         }
75     }
76
77 }
78
Popular Tags