KickJava   Java API By Example, From Geeks To Geeks.

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


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.repositorylocation.CommonRepositoryLocationRoles;
9 import nl.hippo.cms.repositorylocation.RepositoryLocation;
10 import nl.hippo.cms.workflows.shared.ProjectWorkflowQuartzJob;
11 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil;
12 import nl.hippo.componentcontainers.AvalonSpringBridge;
13 import nl.hippo.servermanager.Project;
14 import nl.hippo.servermanager.ServerManager;
15 import nl.hippo.uidgenerator.UIDGenerator;
16 import org.apache.avalon.framework.CascadingException;
17 import org.apache.commons.httpclient.HttpState;
18 import org.quartz.JobDataMap;
19 import org.quartz.JobDetail;
20 import org.quartz.Scheduler;
21 import org.quartz.SimpleTrigger;
22 import org.quartz.Trigger;
23
24 public class StartPublicationTaskFunction extends VersioningHelperComponent
25 {
26
27     public StartPublicationTaskFunction()
28     {
29         super();
30     }
31
32     public void executeImpl(Map JavaDoc transientVars, Map JavaDoc args, PropertySet ps) throws WorkflowException
33     {
34         try
35         {
36             WorkflowEntry entry = (WorkflowEntry) transientVars.get("entry");
37             Date JavaDoc publicationDate = WorkflowExtensionUtil.getDateAndTime(ps.getString("scheduledPublicationDate"));
38             String JavaDoc projectName = (String JavaDoc) transientVars.get("projectName");
39
40             AvalonSpringBridge asb = (AvalonSpringBridge) m_manager.lookup(AvalonSpringBridge.ROLE);
41             try
42             {
43                 ServerManager sm = (ServerManager) asb.getBean("serverManager");
44                 Project p = sm.getServer().getProject(projectName);
45                 Scheduler scheduler = p.getJobScheduler();
46                 
47                 String JavaDoc publicationTaskId = UIDGenerator.generateUID();
48                 ps.setString("publicationTaskId", publicationTaskId);
49                 JobDetail jobDetail = new JobDetail(publicationTaskId, projectName, ProjectWorkflowQuartzJob.class);
50                 JobDataMap jobDataMap = new JobDataMap();
51                 jobDataMap.put("className", PublicationTask.class.getName());
52                 jobDataMap.put("workflowId", entry.getId());
53                 jobDataMap.put("projectName", projectName);
54
55                 RepositoryLocation editorRepo = (RepositoryLocation) m_manager
56                 .lookup(CommonRepositoryLocationRoles.EDITOR_REPOSITORY_LOCATION_ROLE);
57                 try
58                 {
59                     String JavaDoc relativeLocation = ps.getString("location");
60                     String JavaDoc location = editorRepo.getRepositoryInformation().getAbsoluteUri(
61                             relativeLocation);
62                     HttpState httpState = (HttpState) transientVars.get("httpstate");
63                     int versionToPublish = getCurrentVersion(location, httpState);
64                     jobDataMap.put("versionToPublish", versionToPublish);
65                 }
66                 finally
67                 {
68                     m_manager.release(editorRepo);
69                 }
70                 
71                 jobDetail.setJobDataMap(jobDataMap);
72                 
73                 Trigger trigger = new SimpleTrigger(jobDetail.getName(), jobDetail.getGroup(), publicationDate);
74                 scheduler.scheduleJob(jobDetail, trigger);
75             }
76             finally
77             {
78                 m_manager.release(asb);
79             }
80         }
81         catch (Exception JavaDoc e)
82         {
83             Throwable JavaDoc t = e;
84             while (t != null && t instanceof CascadingException)
85             {
86                 t = ((CascadingException) t).getCause();
87             }
88             throw new WorkflowException(t);
89         }
90     }
91
92 }
93
Popular Tags