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
19
20
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 }