package pl.net.bluesoft.rnd.pt.ext.bpmnotifications;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import java.util.logging.Logger;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import pl.net.bluesoft.rnd.processtool.plugins.ProcessToolRegistry;
import pl.net.bluesoft.rnd.pt.ext.sched.service.ProcessToolSchedulerService;
/**
* Activator class for the notifications schedule jobs
*
* @author Maciej Pawlak
*
*/
public class SchedulersActivator
{
private static final Logger logger = Logger.getLogger(SchedulersActivator.class.getName());
private ProcessToolRegistry registry;
public SchedulersActivator(ProcessToolRegistry registry)
{
this.registry = registry;
}
/** Scheduler job for period notifications sending */
public void scheduleNotificationsSend(BpmNotificationEngine engine)
{
ProcessToolSchedulerService service = getSchedulerService();
JobDataMap dataMap = new JobDataMap();
dataMap.put("bpmNotificationEngine", engine);
String identity = "engine_notifications";
JobDetail jobDetail = JobBuilder.newJob(HandleEmailsJob.class)
.withIdentity(identity, HandleEmailsJob.class.getName())
.usingJobData(dataMap)
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(identity, HandleEmailsJob.class.getName())
.withSchedule(simpleSchedule().withIntervalInSeconds(30).repeatForever())
.forJob(jobDetail)
.build();
logger.info("Scheduling notifications job handler");
service.scheduleJob(jobDetail, trigger);
}
private ProcessToolSchedulerService getSchedulerService() {
return registry.getRegisteredService(ProcessToolSchedulerService.class);
}
}