(no commit message)
[utils] / crawler / kissweb / src / org / wamblee / crawler / kiss / scheduling / quartz / QuartzCrawlerScheduler.java
index 94201f37b23213d08c3b47b9a03379da456ae46a..5fa7cf86c4714a4f1acc158b643a1b3d3f305859 100644 (file)
 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;
@@ -53,15 +66,32 @@ public class QuartzCrawlerScheduler {
     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