package com.github.signed.sandboxe.quartz.domain;
import org.quartz.JobDataMap;
import org.quartz.JobKey;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
public class JobFacts {
public final JobKey jobKey;
public final TriggerKey triggerKey;
public JobFacts(JobKey jobKey, TriggerKey triggerKey) {
this.jobKey = jobKey;
this.triggerKey = triggerKey;
}
public SimpleTrigger triggerForOneImmediateExecution() {
SimpleScheduleBuilder once = SimpleScheduleBuilder.simpleSchedule().withRepeatCount(0);
TriggerBuilder<SimpleTrigger> triggerTriggerBuilder = TriggerBuilder.newTrigger().forJob(jobKey).withIdentity(triggerKey).withSchedule(once).startNow();
return triggerTriggerBuilder.build();
}
public Trigger triggerForPeriodicExecution(int intervalInMillis) {
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("greeting", "periodically");
SimpleScheduleBuilder secondSchedule = simpleSchedule().repeatForever().withIntervalInMilliseconds(intervalInMillis).withMisfireHandlingInstructionNowWithRemainingCount();
return TriggerBuilder.newTrigger().forJob(jobKey).withIdentity(triggerKey)
.usingJobData(jobDataMap).withSchedule(secondSchedule).build();
}
}