package com.trulia.thoth.shrinker; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; /** * User: dbraga - Date: 11/7/14 */ public class Scheduler { private String schedule; private boolean isEnabled; private int shrinkPeriod; private String thothIndexURL; private int threadPoolSize; public void setSchedule(String schedule) { this.schedule = schedule; } public String getSchedule() { return schedule; } public void init() throws SchedulerException { if (isEnabled){ // Only shrink if specified JobDetail workerJob = JobBuilder.newJob(ShrinkerJob.class) .withIdentity("shrinkingJob", "group1").build(); Trigger workerTrigger = TriggerBuilder .newTrigger() .withIdentity("shrinkingTrigger", "group1") .withSchedule( CronScheduleBuilder.cronSchedule(schedule)) // execute this every day at midnight .build(); //Schedule it org.quartz.Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.getContext().put("period", shrinkPeriod); scheduler.getContext().put("thothIndexUrl", thothIndexURL); scheduler.getContext().put("threadPoolSize", threadPoolSize); scheduler.scheduleJob(workerJob, workerTrigger); } } public void setIsEnabled(boolean isEnabled) { this.isEnabled = isEnabled; } public boolean getIsEnabled() { return isEnabled; } public void setShrinkPeriod(int shrinkPeriod) { this.shrinkPeriod = shrinkPeriod; } public int getShrinkPeriod() { return shrinkPeriod; } public void setThothIndexURL(String thothIndexURL) { this.thothIndexURL = thothIndexURL; } public String getThothIndexURL() { return thothIndexURL; } public void setThreadPoolSize(int threadPoolSize) { this.threadPoolSize = threadPoolSize; } public int getThreadPoolSize() { return threadPoolSize; } }