You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2003/10/03 15:19:48 UTC

cvs commit: cocoon-lenya/src/java/org/apache/lenya/cms/scheduler SchedulerWrapper.java

andreas     2003/10/03 06:19:48

  Modified:    src/java/org/apache/lenya/cms/scheduler
                        SchedulerWrapper.java
  Log:
  when restoring jobs, check if trigger date has expired
  
  Revision  Changes    Path
  1.23      +45 -13    cocoon-lenya/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java
  
  Index: SchedulerWrapper.java
  ===================================================================
  RCS file: /home/cvs/cocoon-lenya/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- SchedulerWrapper.java	29 Aug 2003 17:17:07 -0000	1.22
  +++ SchedulerWrapper.java	3 Oct 2003 13:19:48 -0000	1.23
  @@ -86,6 +86,8 @@
   
   import java.io.File;
   
  +import java.text.DateFormat;
  +import java.text.SimpleDateFormat;
   import java.util.Date;
   import java.util.GregorianCalendar;
   
  @@ -214,12 +216,21 @@
               JobDetail jobDetail = new JobDetail(uniqueJobId, jobGroup, jobClass);
               jobDetail.setJobDataMap(map);
   
  -            if (startTime.after(new GregorianCalendar().getTime())) {
  +            Date now = new GregorianCalendar().getTime();
  +            if (log.isDebugEnabled()) {
  +                DateFormat format = new SimpleDateFormat();
  +                log.debug("Trigger time: [" + format.format(startTime) + "]");
  +                log.debug("Current time: [" + format.format(now) + "]");
  +            }
  +
  +            if (startTime.after(now)) {
                   Trigger trigger =
                       TriggerHelper.createSimpleTrigger(uniqueJobId, jobGroup, startTime);
                   addJob(jobDetail, trigger);
  +                log.debug("Scheduling job.");
               } else {
                   addJob(jobDetail);
  +                log.debug("Adding job without scheduling.");
               }
   
               log.debug("----------------------------------------------");
  @@ -553,18 +564,37 @@
               ServletJob job = ServletJobFactory.createJob(jobClassName);
               JobDetail jobDetail = job.load(jobElement, jobGroup, getServletContextPath());
   
  -            Element triggerElement = helper.getFirstChild(jobElement, "trigger");
  +            Trigger trigger = null;
   
  +            Element triggerElement = helper.getFirstChild(jobElement, "trigger");
               if (triggerElement != null) {
  -                Trigger trigger =
  +                trigger =
                       TriggerHelper.createTrigger(
                           triggerElement,
                           jobDetail.getName(),
                           jobDetail.getGroup());
   
  -                // FIXME: In the case of CronTrigger, getFinalFireTime does not make sense!
  +                Date now = new GregorianCalendar().getTime();
  +                if (log.isDebugEnabled()) {
  +                    DateFormat format = new SimpleDateFormat();
  +                    log.debug("    Trigger time: [" + format.format(trigger.getFinalFireTime()) + "]");
  +                    log.debug("    Current time: [" + format.format(now) + "]");
  +                }
  +                if (!trigger.getFinalFireTime().after(now)) {
  +                    trigger = null;
  +                }
  +            }
  +
  +            // FIXME: In the case of CronTrigger, getFinalFireTime does not make sense!
  +            if (trigger != null) {
  +                if (log.isDebugEnabled()) {
  +                    log.debug("    Trigger time in future - scheduling job.");
  +                }
                   addJob(jobDetail, trigger);
               } else {
  +                if (log.isDebugEnabled()) {
  +                    log.debug("    Trigger time has expired - adding job without scheduling.");
  +                }
                   addJob(jobDetail);
               }
           } catch (Exception e) {
  @@ -609,24 +639,26 @@
       public void modifyJob(String jobId, String jobGroup, Date startTime)
           throws SchedulerException {
           log.debug("Modifying job [" + jobId + "][" + jobGroup + "]");
  -        
  +
           JobDetail jobDetail = getScheduler().getJobDetail(jobId, jobGroup);
           if (jobDetail == null) {
               throw new SchedulerException("Job not found!");
           }
  -        
  +
           Trigger trigger = getTrigger(jobDetail.getName(), jobGroup);
           if (trigger == null) {
  -            log.debug("No trigger found.");
  -        }
  -        else {
  -            log.debug("Trigger found. Setting new start time.");
  -            getScheduler().unscheduleJob(trigger.getName(), trigger.getGroup());
  -
  +            log.debug("    No trigger found.");
  +        } else {
  +            log.debug("    Trigger found. Setting new start time.");
               jobDetail.setDurability(true);
               if (startTime.after(new GregorianCalendar().getTime())) {
  +                log.debug("    Start time is in future - re-scheduling job.");
  +                getScheduler().unscheduleJob(trigger.getName(), trigger.getGroup());
                   trigger = TriggerHelper.createSimpleTrigger(jobId, jobGroup, startTime);
                   getScheduler().scheduleJob(trigger);
  +            } else {
  +                log.debug("    Start time has already expired - deleting job.");
  +                getScheduler().deleteJob(jobId, jobGroup);
               }
               writeSnapshot(jobGroup);
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: lenya-cvs-unsubscribe@cocoon.apache.org
For additional commands, e-mail: lenya-cvs-help@cocoon.apache.org