package org.wamblee.crawler.kiss.scheduling.quartz;
import java.util.Date;
+import java.util.List;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
+import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
+import org.wamblee.crawler.kiss.scheduling.CrawlerScheduler;
/**
* Interface to the Quartz scheduler.
*/
-public class QuartzCrawlerScheduler {
+public class QuartzCrawlerScheduler implements CrawlerScheduler {
+ /**
+ *
+ */
+ private static final String TRIGGER_NAME = "interval";
+
+ /**
+ *
+ */
+ private static final String JOB_NAME = "kisscrawler";
+
private Scheduler _scheduler;
private int _intervalInSeconds;
public void initialize() throws SchedulerException {
_scheduler.start();
- JobDetail jobDetail = new JobDetail("kisscrawler", null, CrawlerJob.class);
+ JobDetail jobDetail = new JobDetail(JOB_NAME, null, CrawlerJob.class);
Trigger trigger = TriggerUtils.makeSecondlyTrigger(_intervalInSeconds);
//trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date()));
trigger.setStartTime(new Date());
- trigger.setName("hourly");
+ trigger.setName(TRIGGER_NAME);
_scheduler.scheduleJob(jobDetail, trigger);
}
+ /* (non-Javadoc)
+ * @see org.wamblee.crawler.kiss.scheduling.CrawlerScheduler#isCrawlerRunning()
+ */
+ public boolean isCrawlerRunning() throws Exception {
+ List jobs = _scheduler.getCurrentlyExecutingJobs();
+ return jobs.size() > 0;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wamblee.crawler.kiss.scheduling.CrawlerScheduler#scheduleNow()
+ */
+ public void scheduleNow() throws Exception {
+ Trigger trigger = new SimpleTrigger("immediate", null);
+ trigger.setJobName(JOB_NAME);
+ _scheduler.scheduleJob(trigger);
+ }
+
/**
* Shuts down the scheduler.
* @throws SchedulerException