com.blazebit.quartz.TriggerUtils Maven / Gradle / Ivy
/*
* Copyright 2011 Blazebit
*/
package com.blazebit.quartz;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.quartz.CalendarIntervalScheduleBuilder;
import org.quartz.CalendarIntervalTrigger;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.DateBuilder.IntervalUnit;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.matchers.GroupMatcher;
/**
*
* @author Christian Beikov
* @since 0.1.2
*/
public class TriggerUtils {
public static Trigger simple(String triggerName, String triggerGroup,
JobDetail job, Map dataMap, Date start,
Date end) {
return simple(triggerName, triggerGroup, job.getKey().getName(), job
.getKey().getGroup(), dataMap, start, end);
}
public static Trigger simple(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, Date start, Date end) {
return simple(triggerName, triggerGroup, jobName, jobGroup, dataMap,
start, end, 0);
}
public static Trigger simple(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, Date start, Date end,
int repeat) {
TriggerBuilder tb = TriggerBuilder.newTrigger().forJob(
jobName, jobGroup);
if (triggerName != null && !triggerName.isEmpty()) {
if (triggerGroup != null && !triggerGroup.isEmpty()) {
tb.withIdentity(triggerName, triggerGroup);
} else {
tb.withIdentity(triggerName);
}
} else if (triggerGroup != null && !triggerGroup.isEmpty()) {
tb.withIdentity(UUID.randomUUID().toString(), triggerGroup);
}
if (start == null || start.before(new Date())) {
tb.startNow();
} else {
tb.startAt(start);
}
if (end != null && end.after(new Date())) {
tb.endAt(end);
}
if (dataMap != null && !dataMap.isEmpty()) {
tb.usingJobData(new JobDataMap(dataMap));
}
if (repeat > 0) {
tb.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withRepeatCount(repeat));
}
return tb.build();
}
public static Trigger second(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, int interval, Date start,
Date end) {
return interval(triggerName, triggerGroup, jobName, jobGroup, dataMap,
interval, IntervalUnit.SECOND, start, end);
}
public static Trigger minute(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, int interval, Date start,
Date end) {
return interval(triggerName, triggerGroup, jobName, jobGroup, dataMap,
interval, IntervalUnit.MINUTE, start, end);
}
public static Trigger hour(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, int interval, Date start,
Date end) {
return interval(triggerName, triggerGroup, jobName, jobGroup, dataMap,
interval, IntervalUnit.HOUR, start, end);
}
public static Trigger day(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, int interval, Date start,
Date end) {
return interval(triggerName, triggerGroup, jobName, jobGroup, dataMap,
interval, IntervalUnit.DAY, start, end);
}
public static Trigger week(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, int interval, Date start,
Date end) {
return interval(triggerName, triggerGroup, jobName, jobGroup, dataMap,
interval, IntervalUnit.WEEK, start, end);
}
public static Trigger month(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, int interval, Date start,
Date end) {
return interval(triggerName, triggerGroup, jobName, jobGroup, dataMap,
interval, IntervalUnit.MONTH, start, end);
}
public static Trigger year(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, int interval, Date start,
Date end) {
return interval(triggerName, triggerGroup, jobName, jobGroup, dataMap,
interval, IntervalUnit.YEAR, start, end);
}
public static Trigger cron(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, String cronExpression)
throws ParseException {
TriggerBuilder tb = TriggerBuilder.newTrigger()
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.forJob(jobName, jobGroup);
if (triggerName != null && !triggerName.isEmpty()) {
if (triggerGroup != null && !triggerGroup.isEmpty()) {
tb.withIdentity(triggerName, triggerGroup);
} else {
tb.withIdentity(triggerName);
}
}
if (dataMap != null && !dataMap.isEmpty()) {
tb.usingJobData(new JobDataMap(dataMap));
}
return tb.build();
}
private static Trigger interval(String triggerName, String triggerGroup,
String jobName, String jobGroup,
Map dataMap, int interval,
IntervalUnit unit, Date start, Date end) {
TriggerBuilder tb = TriggerBuilder
.newTrigger()
.withSchedule(
CalendarIntervalScheduleBuilder
.calendarIntervalSchedule().withInterval(
interval, unit))
.forJob(jobName, jobGroup);
if (triggerName != null && !triggerName.isEmpty()) {
if (triggerGroup != null && !triggerGroup.isEmpty()) {
tb.withIdentity(triggerName, triggerGroup);
} else {
tb.withIdentity(triggerName);
}
}
if (start != null && start.after(new Date())) {
tb.startAt(start);
}
if (end != null && end.after(new Date())) {
tb.endAt(end);
}
if (dataMap != null && !dataMap.isEmpty()) {
tb.usingJobData(new JobDataMap(dataMap));
}
return tb.build();
}
public static void schedule(Trigger trigger) throws SchedulerException {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
sched.scheduleJob(trigger);
}
public static void pause(Trigger trigger) throws SchedulerException {
pause(trigger.getKey());
}
public static void pause(TriggerKey key) throws SchedulerException {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
sched.pauseTrigger(key);
}
public static void delete(Trigger trigger) throws SchedulerException {
delete(trigger.getKey());
}
public static void delete(TriggerKey key) throws SchedulerException {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
sched.unscheduleJob(key);
}
public static void resume(Trigger trigger) throws SchedulerException {
resume(trigger.getKey());
}
public static void resume(TriggerKey key) throws SchedulerException {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
sched.resumeTrigger(key);
}
public static Trigger.TriggerState getState(Trigger trigger)
throws SchedulerException {
return getState(trigger.getKey());
}
public static Trigger.TriggerState getState(TriggerKey key)
throws SchedulerException {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
return sched.getTriggerState(key);
}
public static List getTriggers() throws SchedulerException {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
List triggerGroups = sched.getTriggerGroupNames();
List triggers = new ArrayList();
for (int i = 0; i < triggerGroups.size(); i++) {
String name = triggerGroups.get(i);
Set keys = sched.getTriggerKeys(GroupMatcher
.triggerGroupEquals(name));
Iterator iter = keys.iterator();
while (iter.hasNext()) {
triggers.add(sched.getTrigger(iter.next()));
}
}
return triggers;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy