package com.github.signed.sandboxe.quartz.domain;
import org.quartz.Trigger;
public class Domain {
private final JobFacts facts;
private final SchedulerFacade schedulerFacade;
public Domain(JobFacts facts, SchedulerFacade schedulerFacade) {
this.facts = facts;
this.schedulerFacade = schedulerFacade;
}
public Integer getResultOfCurrentExecution() {
String threadId = Long.toString(Thread.currentThread().getId());
JobResult jobResult = new JobResult(threadId);
try {
schedulerFacade.addTriggerListener(jobResult, facts.triggerKey);
new EnsureJobIsRunning(schedulerFacade).ensureRunning(facts);
return jobResult.waitFor();
} finally {
schedulerFacade.removeTriggerListener(jobResult);
}
}
public void stopPeriodicExecution() {
schedulerFacade.unscheduleJob(this.facts.triggerKey);
}
public boolean isRunningPeriodically(){
return schedulerFacade.isRunningPeriodically(this.facts.triggerKey);
}
public void runPeriodically() {
Trigger trigger = facts.triggerForPeriodicExecution(15 * 1000);
schedulerFacade.scheduleJobSmart(trigger);
}
}