View Javadoc

1   package com.atlassian.scheduler.quartz1;
2   
3   import com.atlassian.scheduler.SchedulerRuntimeException;
4   import com.atlassian.scheduler.config.JobRunnerKey;
5   import com.atlassian.scheduler.config.Schedule;
6   import com.atlassian.scheduler.core.AbstractSchedulerService;
7   import com.atlassian.scheduler.core.status.AbstractJobDetailsFactory;
8   import org.quartz.CronTrigger;
9   import org.quartz.SimpleTrigger;
10  import org.quartz.Trigger;
11  
12  import javax.annotation.Nonnull;
13  import javax.annotation.Nullable;
14  import java.util.Date;
15  
16  import static com.atlassian.scheduler.quartz1.Quartz1SchedulerFacade.QUARTZ_PARAMETERS_KEY;
17  
18  /**
19   * Creates {@code JobDetails} objects out of Quartz 1.x {@code Trigger}s.
20   *
21   * @since v1.0
22   */
23  public class Quartz1JobDetailsFactory extends AbstractJobDetailsFactory<Trigger> {
24      Quartz1JobDetailsFactory(AbstractSchedulerService schedulerService) {
25          super(schedulerService);
26      }
27  
28      @Nonnull
29      @Override
30      protected JobRunnerKey getJobRunnerKey(Trigger trigger) {
31          return JobRunnerKey.of(trigger.getJobName());
32      }
33  
34      @Nonnull
35      @Override
36      protected Schedule getSchedule(Trigger trigger) {
37          if (trigger instanceof CronTrigger) {
38              final CronTrigger cron = (CronTrigger) trigger;
39              return Schedule.forCronExpression(cron.getCronExpression(), cron.getTimeZone());
40          }
41          if (trigger instanceof SimpleTrigger) {
42              final SimpleTrigger simple = (SimpleTrigger) trigger;
43              return Schedule.forInterval(simple.getRepeatInterval(), simple.getStartTime());
44          }
45          throw new SchedulerRuntimeException("The job with jobId '" + trigger.getName() +
46                  "' has an unsupported trigger class: " + trigger.getClass().getName());
47      }
48  
49      @Nullable
50      @Override
51      protected byte[] getSerializedParameters(Trigger trigger) {
52          return (byte[]) trigger.getJobDataMap().get(QUARTZ_PARAMETERS_KEY);
53      }
54  
55      @Nullable
56      @Override
57      protected Date getNextRunTime(Trigger trigger) {
58          return trigger.getNextFireTime();
59      }
60  }