1 package nl.hippo.cms.workflows.shared; 2 3 import java.util.Calendar ; 4 import java.util.Date ; 5 import nl.hippo.uidgenerator.UIDGenerator; 6 import nl.hippo.uidgenerator.UIDGeneratorException; 7 import org.quartz.JobDataMap; 8 import org.quartz.JobDetail; 9 import org.quartz.Scheduler; 10 import org.quartz.SchedulerException; 11 import org.quartz.SimpleTrigger; 12 import org.quartz.Trigger; 13 14 public class WorkflowSchedulerUtil 15 { 16 17 private static final String SCHEDULING_DEBUG_PROPERTY_NAME = "hippo.cms.workflow.scheduling.debug"; 18 19 private Scheduler m_scheduler; 20 21 private String m_projectName; 22 23 public WorkflowSchedulerUtil() 24 { 25 super(); 26 } 27 28 public void setScheduler(Scheduler scheduler) 29 { 30 m_scheduler = scheduler; 31 } 32 33 public void setProjectName(String projectName) 34 { 35 m_projectName = projectName; 36 } 37 38 public String schedule(String location, String componentIdentifier, Date date, int debugOffsetInMinutes) throws UIDGeneratorException, SchedulerException 39 { 40 String result = UIDGenerator.generateUID(); 41 JobDetail jobDetail = new JobDetail(result, m_projectName, WorkflowQuartzJob.class, false, false, false); 42 JobDataMap jobData = new JobDataMap(); 43 jobData.put("location", location); 44 jobData.put("projectName", m_projectName); 45 jobData.put("component", componentIdentifier); 46 jobDetail.setJobDataMap(jobData); 47 schedule(date, debugOffsetInMinutes, jobDetail); 48 return result; 49 } 50 51 private void schedule(Date date, int debugOffsetInMinutes, JobDetail jobDetail) throws SchedulerException 52 { 53 String group = jobDetail.getGroup(); 54 String name = jobDetail.getName(); 55 if (isDebugOn()) 56 { 57 Calendar debugDate = Calendar.getInstance(); 58 debugDate.add(Calendar.MINUTE, debugOffsetInMinutes); 59 Trigger trigger = new SimpleTrigger(name, group, debugDate.getTime()); 60 m_scheduler.scheduleJob(jobDetail, trigger); 61 } 62 else 63 { 64 Trigger trigger = new SimpleTrigger(name, group, date); 65 m_scheduler.scheduleJob(jobDetail, trigger); 66 } 67 } 68 69 private boolean isDebugOn() 70 { 71 String debugPropertyValue = System.getProperty(SCHEDULING_DEBUG_PROPERTY_NAME); 72 return debugPropertyValue != null && debugPropertyValue.equals("true"); 73 } 74 } 75 | Popular Tags |