View Javadoc

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