1
22
23 package com.liferay.portal.job;
24
25 import com.liferay.util.Time;
26
27 import java.util.Date;
28
29 import org.apache.commons.logging.Log;
30 import org.apache.commons.logging.LogFactory;
31
32 import org.quartz.JobDetail;
33 import org.quartz.Scheduler;
34 import org.quartz.SchedulerException;
35 import org.quartz.SimpleTrigger;
36 import org.quartz.Trigger;
37 import org.quartz.impl.StdSchedulerFactory;
38
39
45 public class JobScheduler {
46
47 public static void schedule(IntervalJob intervalJob)
48 throws SchedulerException {
49
50 Date startTime = new Date(System.currentTimeMillis() + Time.MINUTE * 3);
51 Date endTime = null;
52
53 JobDetail jobDetail = new JobDetail(
54 intervalJob.getClass().getName(), Scheduler.DEFAULT_GROUP,
55 intervalJob.getClass());
56
57 Trigger trigger = new SimpleTrigger(
58 intervalJob.getClass().getName() + "_TRIGGER",
59 org.quartz.Scheduler.DEFAULT_GROUP, startTime, endTime,
60 SimpleTrigger.REPEAT_INDEFINITELY,
61 intervalJob.getInterval());
62
63 scheduleJob(jobDetail, trigger);
64 }
65
66 public static void scheduleJob(JobDetail jobDetail, Trigger trigger)
67 throws SchedulerException {
68
69 _getScheduler().scheduleJob(jobDetail, trigger);
70 }
71
72 public static void scheduleJob(Trigger trigger) throws SchedulerException {
73 _getScheduler().scheduleJob(trigger);
74 }
75
76 public static void shutdown() {
77 _instance._shutdown();
78 }
79
80 public static void triggerJob(String jobName, String groupName)
81 throws SchedulerException {
82
83 _getScheduler().triggerJob(jobName, groupName);
84 }
85
86 public static void unscheduleJob(String triggerName, String groupName)
87 throws SchedulerException {
88
89 _getScheduler().unscheduleJob(triggerName, groupName);
90 }
91
92 private static Scheduler _getScheduler() {
93 return _instance._scheduler;
94 }
95
96 private JobScheduler() {
97 _start();
98 }
99
100 private void _start() {
101 StdSchedulerFactory sf = new StdSchedulerFactory();
102
103 try {
104 _scheduler = sf.getScheduler();
105 _scheduler.start();
106 }
107 catch (SchedulerException se) {
108 _log.error(se);
109 }
110 }
111
112 private void _shutdown() {
113 try {
114 if (!_scheduler.isShutdown()) {
115 _scheduler.shutdown();
116 }
117 }
118 catch (SchedulerException se) {
119 _log.error(se);
120 }
121 }
122
123 private static Log _log = LogFactory.getLog(JobScheduler.class);
124
125 private static JobScheduler _instance = new JobScheduler();
126
127 private Scheduler _scheduler;
128
129 }