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