KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nl > hippo > cms > workflows > reviewedactions > StartPublicationTaskFunction


1 package nl.hippo.cms.workflows.reviewedactions;
2
3 import com.opensymphony.module.propertyset.PropertySet;
4 import com.opensymphony.workflow.WorkflowException;
5 import java.util.Date JavaDoc;
6 import java.util.Map JavaDoc;
7 import nl.hippo.cms.workflows.shared.FunctionProviderComponent;
8 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil;
9 import nl.hippo.cms.workflows.shared.WorkflowSchedulerUtil;
10 import nl.hippo.componentcontainers.AvalonSpringBridge;
11 import nl.hippo.servermanager.Project;
12 import nl.hippo.servermanager.ServerManager;
13 import org.apache.avalon.framework.CascadingException;
14 import org.quartz.Scheduler;
15
16 public class StartPublicationTaskFunction extends FunctionProviderComponent {
17
18     private static final int DEBUG_OFFSET_IN_MINUTES = 2;
19
20     public StartPublicationTaskFunction() {
21         super();
22     }
23
24     public void executeImpl(Map JavaDoc transientVars, Map JavaDoc args, PropertySet ps)
25             throws WorkflowException {
26         Date JavaDoc publicationDate = WorkflowExtensionUtil.getDateAndTime(transientVars.get("publicationDate"));
27         String JavaDoc location = (String JavaDoc) transientVars.get("location");
28         String JavaDoc projectName = (String JavaDoc) transientVars.get("projectname");
29         
30         AvalonSpringBridge asb = null;
31         try
32         {
33             asb = (AvalonSpringBridge) m_manager.lookup(AvalonSpringBridge.ROLE);
34             ServerManager sm = (ServerManager)asb.getBean("serverManager");
35             Project p = sm.getServer().getProject(projectName);
36             Scheduler scheduler = p.getJobScheduler();
37             
38             WorkflowSchedulerUtil wsu = new WorkflowSchedulerUtil();
39             wsu.setScheduler(scheduler);
40             wsu.setProjectName(projectName);
41             
42             String JavaDoc taskId = wsu.schedule(location, PublicationTask.class.getName(), publicationDate, DEBUG_OFFSET_IN_MINUTES);
43
44             ps.setString("publicationTaskId", taskId);
45         }
46         catch (Exception JavaDoc e)
47         {
48             Throwable JavaDoc t = e;
49             while (t != null && t instanceof CascadingException)
50             {
51                 t = ((CascadingException)t).getCause();
52             }
53             throw new WorkflowException(t);
54         }
55         finally
56         {
57             if (asb != null)
58             {
59                 m_manager.release(asb);
60             }
61         }
62    }
63
64 }
65
Popular Tags