1 25 package org.jresearch.gossip.scheduler; 26 27 import java.io.IOException ; 28 import java.io.InputStream ; 29 import java.text.ParseException ; 30 import java.util.Properties ; 31 32 import org.jresearch.gossip.scheduler.listeners.JobListener; 33 import org.jresearch.gossip.scheduler.listeners.TriggerListener; 34 import org.quartz.CronTrigger; 35 import org.quartz.JobDetail; 36 import org.quartz.SchedulerContext; 37 import org.quartz.SchedulerException; 38 import org.quartz.impl.StdSchedulerFactory; 39 40 46 public class Scheduler { 47 48 private org.quartz.Scheduler m_scheduler = null; 49 50 53 public Scheduler() throws SchedulerException, IOException { 54 super(); 55 try { 56 StdSchedulerFactory factory = new StdSchedulerFactory(); 57 Properties config = new Properties (); 58 InputStream configSource = Thread 59 .currentThread() 60 .getContextClassLoader() 61 .getResourceAsStream( 62 "org/jresearch/gossip/resources/scheduler.properties"); 63 config.load(configSource); 64 factory.initialize(config); 65 m_scheduler = factory.getScheduler(); 66 m_scheduler.addGlobalJobListener(new JobListener()); 67 m_scheduler.addGlobalTriggerListener(new TriggerListener()); 68 JobDetail jobDetail = new JobDetail(getConfValue(config, 69 "task.name"), getConfValue(config, "task.group"), Class 70 .forName(getConfValue(config, "task.class"))); 71 jobDetail.setDescription(getConfValue(config, "task.description")); 72 CronTrigger trigger = new CronTrigger(getConfValue(config, 73 "trigger.name"), getConfValue(config, "trigger.group")); 74 trigger.setCronExpression(getConfValue(config, 75 "trigger.cronExpression")); 76 m_scheduler.scheduleJob(jobDetail, trigger); 77 } catch (ClassNotFoundException e) { 78 throw new SchedulerException( 79 "Failed to find job implementation class:", e); 80 } catch (ParseException e) { 81 throw new SchedulerException( 82 "Failed to parse cron trigger expression:", e); 83 } 84 } 85 86 89 public String getSchedulerName() throws SchedulerException { 90 return m_scheduler.getSchedulerName(); 91 } 92 93 96 public String getSchedulerInstanceId() throws SchedulerException { 97 return m_scheduler.getSchedulerInstanceId(); 98 } 99 100 103 public SchedulerContext getContext() throws SchedulerException { 104 return m_scheduler.getContext(); 105 } 106 107 110 public void start() throws SchedulerException { 111 m_scheduler.start(); 112 } 113 114 117 public void pause() throws SchedulerException { 118 m_scheduler.pause(); 119 } 120 121 124 public boolean isPaused() throws SchedulerException { 125 return m_scheduler.isPaused(); 126 } 127 128 131 public void shutdown() throws SchedulerException { 132 m_scheduler.shutdown(); 133 } 134 135 138 public void shutdown(boolean waitForJobsToComplete) 139 throws SchedulerException { 140 m_scheduler.shutdown(waitForJobsToComplete); 141 } 142 143 146 public boolean isShutdown() throws SchedulerException { 147 return m_scheduler.isShutdown(); 148 } 149 150 private final String getConfValue(Properties conf, String param) { 151 StringBuffer key = new StringBuffer ().append(PREFIX).append(param); 152 return conf.getProperty(key.toString()); 153 } 154 155 private static final String PREFIX = "org.jgossip.scheduler.tasks.1."; 156 } 157 | Popular Tags |