package org.ovirt.engine.core.utils.timer;
import org.quartz.Trigger;
import org.quartz.Scheduler;
import javax.ejb.Local;
import java.util.concurrent.TimeUnit;
@Local
public interface SchedulerUtil {
/**
* schedules a fixed-delay job to run the method with the given name on the
* given instance.
*
* @param instance
* - the instance to activate a method on upon timeout
* @param methodName
* - the name of the method to activate on the instance
* @param inputTypes
* - the method input types
* @param inputParams
* - the method input parameters
* @param initialDelay
* - the initial delay before the first activation
* @param taskDelay
* - the delay between jobs
* @param timeUnit
* - the unit of time used for initialDelay and taskDelay.
* @return the scheduled job id
*/
@SuppressWarnings("unchecked")
public String scheduleAFixedDelayJob(Object instance,
String methodName,
Class[] inputTypes,
Object[] inputParams,
long initialDelay,
long taskDelay,
TimeUnit timeUnit);
/**
* schedules a one time job.
*
* @param instance
* - the instance to activate the method on timeout
* @param methodName
* - the name of the method to activate on the instance
* @param inputTypes
* - the method input types
* @param inputParams
* - the method input parameters
* @param initialDelay
* - the initial delay before the job activation
* @param timeUnit
* - the unit of time used for initialDelay and taskDelay.
* @return the scheduled job id
*/
@SuppressWarnings("unchecked")
public String scheduleAOneTimeJob(Object instance,
String methodName,
Class[] inputTypes,
Object[] inputParams,
long initialDelay,
TimeUnit timeUnit);
/**
* reschedule the job associated with the given old trigger with the new
* trigger.
*
* @param oldTriggerName
* - the name of the trigger to remove.
* @param oldTriggerGroup
* - the group of the trigger to remove.
* @param newTrigger
* - the new Trigger to associate the job with
*/
void rescheduleAJob(String oldTriggerName, String oldTriggerGroup, Trigger newTrigger);
/**
* pauses the job with the given jobId
*
* @param jobId
* - the id of the job to be paused
*/
public void pauseJob(String jobId);
/**
* Delete the identified Job from the Scheduler
*
* @param jobId
* - the id of the job to delete
*/
public void deleteJob(String jobId);
/**
* resumes the job with the given jobId
*
* @param jobId
* - the id of the job to be resumed
*/
public void resumeJob(String jobId);
/**
* Halts the Scheduler, and cleans up all resources associated with the
* Scheduler. The scheduler cannot be re-started.
*/
public void shutDown();
/**
* Starts the scheduler
*/
public void create();
/**
* @return the quartz scheduler wrapped by this SchedulerUtil
*/
Scheduler getRawScheduler();
/**
* schedules a cron job.
*
* @param instance
* - the instance to activate the method on timeout
* @param methodName
* - the name of the method to activate on the instance
* @param inputTypes
* - the method input types
* @param inputParams
* - the method input parameters
* @param cronExpression
* - cron expression to run this job
* @return the scheduled job id
*/
@SuppressWarnings("unchecked")
String scheduleACronJob(Object instance,
String methodName,
Class[] inputTypes,
Object[] inputParams,
String cronExpression);
}