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 ; 7 import java.util.Map ; 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 transientVars, Map args, PropertySet ps) throws WorkflowException 31 { 32 try 33 { 34 WorkflowEntry entry = (WorkflowEntry) transientVars.get("entry"); 35 Date unpublicationDate = WorkflowExtensionUtil.getDateAndTime(transientVars 36 .get("unpublicationDate")); 37 if (unpublicationDate != null) 38 { 39 String projectName = (String ) 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 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 e) 67 { 68 Throwable 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 |