(no commit message)
[utils] / crawler / kissweb / src / org / wamblee / crawler / kiss / scheduling / quartz / QuartzCrawlerScheduler.java
index 9458d1c38de982616bf3a44dcb3bea4fd79c5d57..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;
 
     /**
      * Constructs the quartz interface. 
+     * @param aIntervalInSeconds Scheduling interval in seconds. 
      * @throws SchedulerException
      */
-    public QuartzCrawlerScheduler() throws SchedulerException { 
+    public QuartzCrawlerScheduler(int aIntervalInSeconds) throws SchedulerException { 
         SchedulerFactory schedulerFactory = new StdSchedulerFactory();
         _scheduler = schedulerFactory.getScheduler();
+        _intervalInSeconds = aIntervalInSeconds; 
     }
     
     /**
@@ -49,16 +66,32 @@ public class QuartzCrawlerScheduler {
     public void initialize() throws SchedulerException { 
         _scheduler.start();
 
-        JobDetail jobDetail = new JobDetail("kisscrawler", null, CrawlerJob.class);
-        jobDetail.getJobDataMap().put("count", 0);
-
-        Trigger trigger = TriggerUtils.makeHourlyTrigger(); 
-        trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date())); 
-        trigger.setName("hourly");
+        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(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