All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.app.common.utils.Schedule Maven / Gradle / Ivy

package com.app.common.utils;

import org.quartz.CronScheduleBuilder;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.CronTriggerImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Schedule {
	private Logger logger = LoggerFactory.getLogger(this.getClass());
	private Scheduler scheduler = null;

	public void init(String sfile) {
		 
		try {
			StdSchedulerFactory sf = new StdSchedulerFactory(sfile);
			scheduler = sf.getScheduler();

		} catch (Exception e) {
			logger.error("can't create quartz Scheduler with file: " + sfile);

		}
	}

	public void start() {
		try {
			scheduler.start();
		} catch (SchedulerException e) {
			logger.error("Scheduler Error", e);
		}
	}

	public void stop() {
		try {
			scheduler.shutdown();
		} catch (SchedulerException e) {
			logger.error("Scheduler Error", e);
		}
	}
	public void deleteJob(String type,Class job) {
		String name = job.getSimpleName()+"_"+type;
		JobKey jobKey = new JobKey(name, name);
		TriggerKey tk = new TriggerKey(name, name);

	
		try {

			if (scheduler.checkExists(jobKey) && scheduler.checkExists(tk)) {
				 
				scheduler.deleteJob(jobKey);
				 
			}  

		} catch (Exception e) {
			logger.error("", e);
		}

	}
	public void updateJob(String cron, String type,Class job,Object... paras) {
		String name = job.getSimpleName()+"_"+type;
		JobKey jobKey = new JobKey(name, name);
		TriggerKey tk = new TriggerKey(name, name);

		logger.info("job cron:{} {} {}.", cron,
				job.getSimpleName(),paras);
		try {

			if (scheduler.checkExists(jobKey) && scheduler.checkExists(tk)) {
				JobDetail jd = scheduler.getJobDetail(jobKey);
				Trigger trigh = scheduler.getTrigger(tk);
				jd.getJobDataMap().clear();
				jd.getJobDataMap().put("Object", paras);
				scheduler.deleteJob(jobKey);
				if (trigh instanceof CronTriggerImpl) {

					CronTriggerImpl cronTrig = (CronTriggerImpl) trigh;
					cronTrig.setCronExpression(cron);
					scheduler.scheduleJob(jd, cronTrig);
				}
			} else {
				JobDetail jobDetail = JobBuilder.newJob(job)
						.withIdentity(new JobKey(name, name)).build();
				jobDetail.getJobDataMap().put("Object", paras);
				Trigger trigger = TriggerBuilder.newTrigger()
						.withIdentity(new TriggerKey(name, name))
						.forJob(jobDetail.getKey())
						.withSchedule(CronScheduleBuilder.cronSchedule(cron))
						.build();
				scheduler.scheduleJob(jobDetail, trigger);
			}

		} catch (Exception e) {
			logger.error("", e);
		}

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy