package frame.schedule; import org.apache.log4j.Logger; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.JobBuilder; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.TriggerKey; import org.quartz.impl.StdSchedulerFactory; import frame.config.Configer; public class Schedule { private static Logger logger; private static Scheduler scheduler; public static boolean Terminated; static { logger = Logger.getLogger(Schedule.class); Terminated = false; } public static void startup() { try { SchedulerFactory factory = new StdSchedulerFactory(Configer.getPath_TimerConfig()); scheduler = factory.getScheduler(); } catch (Exception e) { logger.error(e.getMessage()); } } public static void shutdown() { if (scheduler == null) { return; } try { Terminated = true; scheduler.shutdown(); } catch (Exception e) { logger.error(e); } } public static void appendJob(IJob job) throws Exception { String runTime = job.getRunTime(); if (runTime == null) { return; } JobKey jobKey = job.getJobKey(); JobDetail jobDetail = JobBuilder.newJob(ScheduleJob.class).withIdentity(jobKey).build(); JobDataMap dataMap = jobDetail.getJobDataMap(); dataMap.put(IJob.Key_Job, job); TriggerKey triggerKey = job.getTriggerKey(); TriggerBuilder triggerBuilder = TriggerBuilder.newTrigger(); triggerBuilder.withIdentity(triggerKey); triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(runTime)); CronTrigger trigger = (CronTrigger)triggerBuilder.build(); if (!scheduler.checkExists(jobKey)) { scheduler.scheduleJob(jobDetail, trigger); } } public static void deleteJob(IJob job) throws SchedulerException { JobKey jobKey = job.getJobKey(); if (scheduler.checkExists(jobKey)) { scheduler.deleteJob(jobKey); } } public void start() throws SchedulerException { scheduler.start(); } public void pause() throws SchedulerException { scheduler.pauseAll(); } public void clear() throws SchedulerException { scheduler.clear(); } public void isStarted() throws SchedulerException { scheduler.isStarted(); } public void isShutdown() throws SchedulerException { scheduler.isShutdown(); } public static boolean isActive() { // TODO Auto-generated method stub return false; } }