View Javadoc

1   package com.atlassian.scheduler.quartz1;
2   
3   import com.atlassian.scheduler.core.tests.CronFactory;
4   import org.joda.time.DateTimeZone;
5   import org.quartz.CronExpression;
6   
7   import java.text.ParseException;
8   import java.util.Date;
9   
10  /**
11   * @since v1.5
12   */
13  public class Quartz1CronFactory implements CronFactory {
14      @Override
15      public void parseAndDiscard(String cronExpression) {
16          parseInternal(cronExpression);
17      }
18  
19      @Override
20      public CronExpressionAdapter parse(final String cronExpression) {
21          return parse(cronExpression, DateTimeZone.getDefault());
22      }
23  
24      @Override
25      public CronExpressionAdapter parse(final String cronExpression, final DateTimeZone zone) {
26          final CronExpression parsed = parseInternal(cronExpression);
27          parsed.setTimeZone(zone.toTimeZone());
28  
29          return new CronExpressionAdapter() {
30              @Override
31              public boolean isSatisfiedBy(Date date) {
32                  return parsed.isSatisfiedBy(date);
33              }
34  
35              public Date nextRunTime(Date prevRunTime) {
36                  return parsed.getNextValidTimeAfter(prevRunTime);
37              }
38  
39              @Override
40              public String toString() {
41                  return cronExpression;
42              }
43          };
44      }
45  
46      private static CronExpression parseInternal(final String cronExpression) {
47          try {
48              return new CronExpression(cronExpression);
49          } catch (ParseException pe) {
50              final AssertionError err = new AssertionError("Unable to parse cron expression '" + cronExpression + '\'');
51              err.initCause(pe);
52              throw err;
53          }
54      }
55  }