grails-app/services/grails/plugins/quartz/JobManagerService.groovy (63 lines of code) (raw):

/* * Copyright (c) 2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package grails.plugins.quartz import org.quartz.JobKey import org.quartz.Scheduler import org.quartz.TriggerKey import org.quartz.impl.matchers.GroupMatcher /** * JobManagerService simplifies interaction with the Quartz Scheduler from Grails application. * * @author Marco Mornati (mmornati@byte-code.com) * @author Sergey Nebolsin (nebolsin@gmail.com) * * @since 0.4 */ class JobManagerService { Scheduler quartzScheduler /** * Returns all the jobs, registered in the Quartz Scheduler, grouped bu their corresponding job groups. * * @return Map <String , List<JobDescriptor>> with job group names as keys */ Map <String , List<JobDescriptor>> getAllJobs() { quartzScheduler.jobGroupNames.collectEntries([:]) { group -> [(group):getJobs(group)]} } /** * Returns all the jobs, registered in the Quartz Scheduler, which belong to the specified group. * * @param group — the jobs group name * @return a list of corresponding JobDescriptor objects */ List<JobDescriptor> getJobs(String group) { List<JobDescriptor> list = new ArrayList<JobDescriptor>() quartzScheduler.getJobKeys(GroupMatcher.groupEquals(group)).each { jobKey -> def jobDetail = quartzScheduler.getJobDetail(jobKey) if(jobDetail!=null){ list.add(JobDescriptor.build(jobDetail, quartzScheduler)) } } return list } /** * Returns a list of all currently executing jobs. * * @return a List<JobExecutionContext>, containing all currently executing jobs. */ def getRunningJobs() { quartzScheduler.getCurrentlyExecutingJobs() } def pauseJob(String group, String name) { quartzScheduler.pauseJob(new JobKey(name, group)) } def resumeJob(String group, String name) { quartzScheduler.resumeJob(new JobKey(name, group)) } def pauseTrigger(String group, String name) { quartzScheduler.pauseTrigger(new TriggerKey(name, group)) } def resumeTrigger(String group, String name) { quartzScheduler.resumeTrigger(new TriggerKey(name, group)) } def pauseTriggerGroup(String group) { quartzScheduler.pauseTriggers(GroupMatcher.groupEquals(group)) } def resumeTriggerGroup(String group) { quartzScheduler.resumeTriggers(GroupMatcher.groupEquals(group)) } def pauseJobGroup(String group) { quartzScheduler.pauseJobs(GroupMatcher.groupEquals(group)) } def resumeJobGroup(String group) { quartzScheduler.resumeJobs(GroupMatcher.groupEquals(group)) } def pauseAll(){ quartzScheduler.pauseAll() } def resumeAll(){ quartzScheduler.resumeAll() } def removeJob(String group, String name) { quartzScheduler.deleteJob(new JobKey(name, group)) } def unscheduleJob(String group, String name) { quartzScheduler.unscheduleJobs(quartzScheduler.getTriggersOfJob(new JobKey(name, group))*.key) } def interruptJob(String group, String name) { quartzScheduler.interrupt(new JobKey(name, group)) } }