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

prerna.rpa.quartz.QuartzUtil Maven / Gradle / Ivy

The newest version!
package prerna.rpa.quartz;

import static org.quartz.impl.matchers.GroupMatcher.jobGroupEquals;

import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.UnableToInterruptJobException;

public class QuartzUtil {
	
	private static final Logger LOGGER = LogManager.getLogger(QuartzUtil.class.getName());
	
	private QuartzUtil() {
		throw new IllegalStateException("Utility class");
	}
	
	public static final void removeAllJobsInGroup(Scheduler scheduler, String jobGroup) {
		LOGGER.info("Removing jobs in the " + jobGroup + " group.");
		for (JobKey jobKey : getJobKeysInGroup(scheduler, jobGroup)) {
			removeJob(scheduler, jobKey);
		}
	}
	
	public static final void removeJob(Scheduler scheduler, JobKey jobKey) {
		try {
			scheduler.deleteJob(jobKey);
			LOGGER.info("Removing " + jobKey.getName() + " job from the scheduler.");
		} catch (SchedulerException e) {
			LOGGER.error("Failed to remove " + jobKey.getName() + " job from the scheduler.", e);
		}
	}
	
	public static final void terminateAllJobsInGroup(Scheduler scheduler, String jobGroup) {
		LOGGER.info("Terminating jobs in the " + jobGroup + " group.");
		for (JobKey jobKey : getJobKeysInGroup(scheduler, jobGroup)) {
			terminateJob(scheduler, jobKey);
		}
	}
	
	public static final void terminateJob(Scheduler scheduler, JobKey jobKey) {
		try {
			LOGGER.info("Terminating the " + jobKey.getName() + " job.");
			scheduler.interrupt(jobKey);
		} catch (UnableToInterruptJobException e) {
			LOGGER.error("Unable to terminate the " + jobKey.getName() + " job.", e);
		}
	}
	
	public static final Set getJobKeysInGroup(Scheduler scheduler, String jobGroup) {
		Set jobKeysInGroup = new HashSet<>();
		try {
			jobKeysInGroup = scheduler.getJobKeys(jobGroupEquals(jobGroup));
		} catch (SchedulerException e) {
			LOGGER.error("Failed to retrieve jobs in the " + jobGroup + " group.", e);
		}
		return jobKeysInGroup;
	}
	
	// For testing
	public static final String composeCronForNowPlus(int seconds) {
		LocalDateTime now = LocalDateTime.now();
		now.plusSeconds(seconds);
		int hour = now.getHour();
		int minute = now.getMinute();
		int second = now.getSecond();
		StringBuilder cronStringBuilder = new StringBuilder();
		cronStringBuilder.append(String.format("%02d", second));
		cronStringBuilder.append(" ");
		cronStringBuilder.append(String.format("%02d", minute));
		cronStringBuilder.append(" ");
		cronStringBuilder.append(String.format("%02d", hour));
		cronStringBuilder.append("  1/1 * ? *");
		return cronStringBuilder.toString();
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy