package pl.net.bluesoft.rnd.pt.ext.sched.impl; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.listeners.JobListenerSupport; import pl.net.bluesoft.rnd.processtool.plugins.ProcessToolRegistry; import pl.net.bluesoft.rnd.pt.ext.sched.event.JobExecutedEvent; import java.util.Arrays; import java.util.concurrent.CopyOnWriteArraySet; /** * @author: amichalak@bluesoft.net.pl */ public class JobExecutionListener extends JobListenerSupport { private ProcessToolRegistry registry; private CopyOnWriteArraySet<Class<? extends Job>> silentJobsSet = new CopyOnWriteArraySet<Class<? extends Job>>(); public JobExecutionListener(ProcessToolRegistry registry) { this.registry = registry; } @Override public String getName() { return JobExecutionListener.class.getName(); } public void addSilentJobs(Class<? extends Job>... silentJobs) { silentJobsSet.addAll(Arrays.asList(silentJobs)); } public void removeSilentJobs(Class<? extends Job>... silentJobs) { silentJobsSet.removeAll(Arrays.asList(silentJobs)); } @Override public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { JobDetail jobDetail = context.getJobDetail(); if (!silentJobsSet.contains(jobDetail.getJobClass())) { registry.getEventBusManager().post(new JobExecutedEvent(jobDetail.getJobClass(), jobDetail, jobException)); } } }