KickJava   Java API By Example, From Geeks To Geeks.

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


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.DateUtil;
8 import nl.hippo.cms.workflows.shared.FunctionProviderComponent;
9 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil;
10 import nl.hippo.cms.workflows.shared.WorkflowSchedulerUtil;
11 import nl.hippo.componentcontainers.AvalonSpringBridge;
12 import nl.hippo.servermanager.Project;
13 import nl.hippo.servermanager.ServerManager;
14 import org.apache.avalon.framework.CascadingException;
15 import org.quartz.Scheduler;
16
17 public class StartUnpublicationTaskFunction extends FunctionProviderComponent {
18
19     private static final int DEBUG_OFFSET_IN_MINUTES = 4;
20
21     public StartUnpublicationTaskFunction() {
22         super();
23     }
24
25     public void executeImpl(Map JavaDoc transientVars, Map JavaDoc args, PropertySet ps)
26             throws WorkflowException {
27         String JavaDoc unpublicationDateMode = (String JavaDoc) transientVars.get("unpublicationDateMode");
28         if (unpublicationDateMode != null && !unpublicationDateMode.equals("never"))
29         {
30             Date JavaDoc unpublicationDate = WorkflowExtensionUtil.getDateAndTime(transientVars.get("unpublicationDate"));
31             String JavaDoc publicationDateMode = (String JavaDoc) transientVars.get("publicationDateMode");
32             Date JavaDoc publicationDate = WorkflowExtensionUtil.getDateAndTime(transientVars.get("publicationDate"));
33             if (!DateUtil.isBeforeWithTime(unpublicationDate, publicationDateMode, publicationDate))
34             {
35                 String JavaDoc location = (String JavaDoc) transientVars.get("location");
36                 String JavaDoc projectName = (String JavaDoc) transientVars.get("projectname");
37
38                 AvalonSpringBridge asb = null;
39                 try
40                 {
41                     asb = (AvalonSpringBridge) m_manager.lookup(AvalonSpringBridge.ROLE);
42                     ServerManager sm = (ServerManager)asb.getBean("serverManager");
43                     Project p = sm.getServer().getProject(projectName);
44                     Scheduler scheduler = p.getJobScheduler();
45                     
46                     WorkflowSchedulerUtil wsu = new WorkflowSchedulerUtil();
47                     wsu.setScheduler(scheduler);
48                     wsu.setProjectName(projectName);
49                     
50                     String JavaDoc taskId = wsu.schedule(location, UnpublicationTask.class.getName(), unpublicationDate, DEBUG_OFFSET_IN_MINUTES);
51
52                     ps.setString("unpublicationTaskId", taskId);
53                 }
54                 catch (Exception JavaDoc e)
55                 {
56                     Throwable JavaDoc t = e;
57                     while (t != null && t instanceof CascadingException)
58                     {
59                         t = ((CascadingException)t).getCause();
60                     }
61                     throw new WorkflowException(t);
62                 }
63                 finally
64                 {
65                     if (asb != null)
66                     {
67                         m_manager.release(asb);
68                     }
69                 }
70             }
71         }
72    }
73
74 }
75
Popular Tags