org.quartz.impl.triggers
Class AbstractTrigger<T extends Trigger>

java.lang.Object
  extended by org.quartz.impl.triggers.AbstractTrigger<T>
All Implemented Interfaces:
Serializable, Cloneable, Comparable<Trigger>, org.quartz.spi.MutableTrigger, org.quartz.spi.OperableTrigger, Trigger
Direct Known Subclasses:
CalendarIntervalTriggerImpl, CronTriggerImpl, DailyTimeIntervalTriggerImpl, SimpleTriggerImpl

public abstract class AbstractTrigger<T extends Trigger>
extends Object
implements org.quartz.spi.OperableTrigger

The base abstract class to be extended by all Triggers.

Triggers s have a name and group associated with them, which should uniquely identify them within a single Scheduler.

Triggers are the 'mechanism' by which Job s are scheduled. Many Trigger s can point to the same Job, but a single Trigger can only point to one Job.

Triggers can 'send' parameters/data to Jobs by placing contents into the JobDataMap on the Trigger.

Author:
James House, Sharada Jambula
See Also:
SimpleTrigger, CronTrigger, NthIncludedDayTrigger, TriggerUtils, JobDataMap, JobExecutionContext, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.quartz.Trigger
Trigger.CompletedExecutionInstruction, Trigger.TriggerState, Trigger.TriggerTimeComparator
 
Field Summary
 
Fields inherited from interface org.quartz.Trigger
DEFAULT_PRIORITY, MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY, MISFIRE_INSTRUCTION_SMART_POLICY
 
Constructor Summary
AbstractTrigger()
           Create a Trigger with no specified name, group, or JobDetail.
AbstractTrigger(String name)
           Create a Trigger with the given name, and default group.
AbstractTrigger(String name, String group)
           Create a Trigger with the given name, and group.
AbstractTrigger(String name, String group, String jobName, String jobGroup)
           Create a Trigger with the given name, and group.
 
Method Summary
 Object clone()
           
 int compareTo(Trigger other)
           Compare the next fire time of this Trigger to that of another by comparing their keys, or in other words, sorts them according to the natural (i.e.
abstract  Date computeFirstFireTime(Calendar calendar)
           This method should not be used by the Quartz client.
 boolean equals(Object o)
          Trigger equality is based upon the equality of the TriggerKey.
 Trigger.CompletedExecutionInstruction executionComplete(JobExecutionContext context, JobExecutionException result)
           This method should not be used by the Quartz client.
 String getCalendarName()
           Get the name of the Calendar associated with this Trigger.
 String getDescription()
           Return the description given to the Trigger instance by its creator (if any).
abstract  Date getEndTime()
           Get the time at which the Trigger should quit repeating - regardless of any remaining repeats (based on the trigger's particular repeat settings).
abstract  Date getFinalFireTime()
           Returns the last time at which the Trigger will fire, if the Trigger will repeat indefinitely, null will be returned.
 String getFireInstanceId()
           This method should not be used by the Quartz client.
abstract  Date getFireTimeAfter(Date afterTime)
           Returns the next time at which the Trigger will fire, after the given time.
 String getFullJobName()
           Returns the 'full name' of the Job that the Trigger points to, in the format "group.name".
 String getFullName()
           Returns the 'full name' of the Trigger in the format "group.name".
 String getGroup()
           Get the group of this Trigger.
 JobDataMap getJobDataMap()
           Get the JobDataMap that is associated with the Trigger.
 String getJobGroup()
           Get the name of the associated JobDetail's group.
 JobKey getJobKey()
           
 String getJobName()
           Get the name of the associated JobDetail.
 TriggerKey getKey()
           
 int getMisfireInstruction()
           Get the instruction the Scheduler should be given for handling misfire situations for this Trigger- the concrete Trigger type that you are using will have defined a set of additional MISFIRE_INSTRUCTION_XXX constants that may be passed to this method.
 String getName()
           Get the name of this Trigger.
abstract  Date getNextFireTime()
           Returns the next time at which the Trigger is scheduled to fire.
abstract  Date getPreviousFireTime()
           Returns the previous time at which the Trigger fired.
 int getPriority()
          The priority of a Trigger acts as a tiebreaker such that if two Triggers have the same scheduled fire time, then the one with the higher priority will get first access to a worker thread.
abstract  ScheduleBuilder<T> getScheduleBuilder()
          Get a ScheduleBuilder that is configured to produce a schedule identical to this trigger's schedule.
abstract  Date getStartTime()
           Get the time at which the Trigger should occur.
 TriggerBuilder<T> getTriggerBuilder()
          Get a TriggerBuilder that is configured to produce a Trigger identical to this one.
 int hashCode()
           
abstract  boolean mayFireAgain()
           Used by the Scheduler to determine whether or not it is possible for this Trigger to fire again.
 void setCalendarName(String calendarName)
           Associate the Calendar with the given name with this Trigger.
 void setDescription(String description)
           Set a description for the Trigger instance - may be useful for remembering/displaying the purpose of the trigger, though the description has no meaning to Quartz.
abstract  void setEndTime(Date endTime)
           Set the time at which the Trigger should quit repeating - regardless of any remaining repeats (based on the trigger's particular repeat settings).
 void setFireInstanceId(String id)
           This method should not be used by the Quartz client.
 void setGroup(String group)
           Set the name of this Trigger.
 void setJobDataMap(JobDataMap jobDataMap)
           Set the JobDataMap to be associated with the Trigger.
 void setJobGroup(String jobGroup)
           Set the name of the associated JobDetail's group.
 void setJobKey(JobKey key)
           
 void setJobName(String jobName)
           Set the name of the associated JobDetail.
 void setKey(TriggerKey key)
           
 void setMisfireInstruction(int misfireInstruction)
           Set the instruction the Scheduler should be given for handling misfire situations for this Trigger- the concrete Trigger type that you are using will have defined a set of additional MISFIRE_INSTRUCTION_XXX constants that may be passed to this method.
 void setName(String name)
           Set the name of this Trigger.
 void setPriority(int priority)
          The priority of a Trigger acts as a tie breaker such that if two Triggers have the same scheduled fire time, then Quartz will do its best to give the one with the higher priority first access to a worker thread.
abstract  void setStartTime(Date startTime)
           The time at which the trigger's scheduling should start.
 String toString()
           Return a simple string representation of this object.
abstract  void triggered(Calendar calendar)
           This method should not be used by the Quartz client.
abstract  void updateAfterMisfire(Calendar cal)
           This method should not be used by the Quartz client.
abstract  void updateWithNewCalendar(Calendar cal, long misfireThreshold)
           This method should not be used by the Quartz client.
 void validate()
           Validates whether the properties of the JobDetail are valid for submission into a Scheduler.
protected abstract  boolean validateMisfireInstruction(int candidateMisfireInstruction)
           
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.quartz.spi.OperableTrigger
setNextFireTime, setPreviousFireTime
 

Constructor Detail

AbstractTrigger

public AbstractTrigger()

Create a Trigger with no specified name, group, or JobDetail.

Note that the setName(String),setGroup(String)and the setJobName(String)and setJobGroup(String)methods must be called before the Trigger can be placed into a Scheduler.


AbstractTrigger

public AbstractTrigger(String name)

Create a Trigger with the given name, and default group.

Note that the setJobName(String)and setJobGroup(String)methods must be called before the Trigger can be placed into a Scheduler.

Parameters:
group - if null, Scheduler.DEFAULT_GROUP will be used.
Throws:
IllegalArgumentException - if name is null or empty, or the group is an empty string.

AbstractTrigger

public AbstractTrigger(String name,
                       String group)

Create a Trigger with the given name, and group.

Note that the setJobName(String)and setJobGroup(String)methods must be called before the Trigger can be placed into a Scheduler.

Parameters:
group - if null, Scheduler.DEFAULT_GROUP will be used.
Throws:
IllegalArgumentException - if name is null or empty, or the group is an empty string.

AbstractTrigger

public AbstractTrigger(String name,
                       String group,
                       String jobName,
                       String jobGroup)

Create a Trigger with the given name, and group.

Parameters:
group - if null, Scheduler.DEFAULT_GROUP will be used.
Throws:
IllegalArgumentException - if name is null or empty, or the group is an empty string.
Method Detail

getName

public String getName()

Get the name of this Trigger.


setName

public void setName(String name)

Set the name of this Trigger.

Throws:
IllegalArgumentException - if name is null or empty.

getGroup

public String getGroup()

Get the group of this Trigger.


setGroup

public void setGroup(String group)

Set the name of this Trigger.

Parameters:
group - if null, Scheduler.DEFAULT_GROUP will be used.
Throws:
IllegalArgumentException - if group is an empty string.

setKey

public void setKey(TriggerKey key)
Specified by:
setKey in interface org.quartz.spi.MutableTrigger

getJobName

public String getJobName()

Get the name of the associated JobDetail.


setJobName

public void setJobName(String jobName)

Set the name of the associated JobDetail.

Throws:
IllegalArgumentException - if jobName is null or empty.

getJobGroup

public String getJobGroup()

Get the name of the associated JobDetail's group.


setJobGroup

public void setJobGroup(String jobGroup)

Set the name of the associated JobDetail's group.

Parameters:
jobGroup - if null, Scheduler.DEFAULT_GROUP will be used.
Throws:
IllegalArgumentException - if group is an empty string.

setJobKey

public void setJobKey(JobKey key)
Specified by:
setJobKey in interface org.quartz.spi.MutableTrigger

getFullName

public String getFullName()

Returns the 'full name' of the Trigger in the format "group.name".


getKey

public TriggerKey getKey()
Specified by:
getKey in interface Trigger

getJobKey

public JobKey getJobKey()
Specified by:
getJobKey in interface Trigger

getFullJobName

public String getFullJobName()

Returns the 'full name' of the Job that the Trigger points to, in the format "group.name".


getDescription

public String getDescription()

Return the description given to the Trigger instance by its creator (if any).

Specified by:
getDescription in interface Trigger
Returns:
null if no description was set.

setDescription

public void setDescription(String description)

Set a description for the Trigger instance - may be useful for remembering/displaying the purpose of the trigger, though the description has no meaning to Quartz.

Specified by:
setDescription in interface org.quartz.spi.MutableTrigger

setCalendarName

public void setCalendarName(String calendarName)

Associate the Calendar with the given name with this Trigger.

Specified by:
setCalendarName in interface org.quartz.spi.MutableTrigger
Parameters:
calendarName - use null to dis-associate a Calendar.

getCalendarName

public String getCalendarName()

Get the name of the Calendar associated with this Trigger.

Specified by:
getCalendarName in interface Trigger
Returns:
null if there is no associated Calendar.

getJobDataMap

public JobDataMap getJobDataMap()

Get the JobDataMap that is associated with the Trigger.

Changes made to this map during job execution are not re-persisted, and in fact typically result in an IllegalStateException.

Specified by:
getJobDataMap in interface Trigger

setJobDataMap

public void setJobDataMap(JobDataMap jobDataMap)

Set the JobDataMap to be associated with the Trigger.

Specified by:
setJobDataMap in interface org.quartz.spi.MutableTrigger

getPriority

public int getPriority()
The priority of a Trigger acts as a tiebreaker such that if two Triggers have the same scheduled fire time, then the one with the higher priority will get first access to a worker thread.

If not explicitly set, the default value is 5.

Specified by:
getPriority in interface Trigger
See Also:
Trigger.DEFAULT_PRIORITY

setPriority

public void setPriority(int priority)
The priority of a Trigger acts as a tie breaker such that if two Triggers have the same scheduled fire time, then Quartz will do its best to give the one with the higher priority first access to a worker thread.

If not explicitly set, the default value is 5.

Specified by:
setPriority in interface org.quartz.spi.MutableTrigger
See Also:
Trigger.DEFAULT_PRIORITY

triggered

public abstract void triggered(Calendar calendar)

This method should not be used by the Quartz client.

Called when the Scheduler has decided to 'fire' the trigger (execute the associated Job), in order to give the Trigger a chance to update itself for its next triggering (if any).

Specified by:
triggered in interface org.quartz.spi.OperableTrigger
See Also:
executionComplete(JobExecutionContext, JobExecutionException)

computeFirstFireTime

public abstract Date computeFirstFireTime(Calendar calendar)

This method should not be used by the Quartz client.

Called by the scheduler at the time a Trigger is first added to the scheduler, in order to have the Trigger compute its first fire time, based on any associated calendar.

After this method has been called, getNextFireTime() should return a valid answer.

Specified by:
computeFirstFireTime in interface org.quartz.spi.OperableTrigger
Returns:
the first time at which the Trigger will be fired by the scheduler, which is also the same value getNextFireTime() will return (until after the first firing of the Trigger).


executionComplete

public Trigger.CompletedExecutionInstruction executionComplete(JobExecutionContext context,
                                                               JobExecutionException result)

This method should not be used by the Quartz client.

Called after the Scheduler has executed the JobDetail associated with the Trigger in order to get the final instruction code from the trigger.

Specified by:
executionComplete in interface org.quartz.spi.OperableTrigger
Parameters:
context - is the JobExecutionContext that was used by the Job'sexecute(xx) method.
result - is the JobExecutionException thrown by the Job, if any (may be null).
Returns:
one of the CompletedExecutionInstruction constants.
See Also:
CompletedExecutionInstruction, triggered(Calendar)

mayFireAgain

public abstract boolean mayFireAgain()

Used by the Scheduler to determine whether or not it is possible for this Trigger to fire again.

If the returned value is false then the Scheduler may remove the Trigger from the JobStore.

Specified by:
mayFireAgain in interface Trigger

getStartTime

public abstract Date getStartTime()

Get the time at which the Trigger should occur.

Specified by:
getStartTime in interface Trigger

setStartTime

public abstract void setStartTime(Date startTime)

The time at which the trigger's scheduling should start. May or may not be the first actual fire time of the trigger, depending upon the type of trigger and the settings of the other properties of the trigger. However the first actual first time will not be before this date.

Setting a value in the past may cause a new trigger to compute a first fire time that is in the past, which may cause an immediate misfire of the trigger.

Specified by:
setStartTime in interface org.quartz.spi.MutableTrigger

setEndTime

public abstract void setEndTime(Date endTime)

Set the time at which the Trigger should quit repeating - regardless of any remaining repeats (based on the trigger's particular repeat settings).

Specified by:
setEndTime in interface org.quartz.spi.MutableTrigger
See Also:
TriggerUtils#computeEndTimeToAllowParticularNumberOfFirings(AbstractTrigger, Calendar, int)

getEndTime

public abstract Date getEndTime()

Get the time at which the Trigger should quit repeating - regardless of any remaining repeats (based on the trigger's particular repeat settings).

Specified by:
getEndTime in interface Trigger
See Also:
getFinalFireTime()

getNextFireTime

public abstract Date getNextFireTime()

Returns the next time at which the Trigger is scheduled to fire. If the trigger will not fire again, null will be returned. Note that the time returned can possibly be in the past, if the time that was computed for the trigger to next fire has already arrived, but the scheduler has not yet been able to fire the trigger (which would likely be due to lack of resources e.g. threads).

The value returned is not guaranteed to be valid until after the Trigger has been added to the scheduler.

Specified by:
getNextFireTime in interface Trigger
See Also:
TriggerUtils#computeFireTimesBetween(AbstractTrigger, Calendar, Date, Date)

getPreviousFireTime

public abstract Date getPreviousFireTime()

Returns the previous time at which the Trigger fired. If the trigger has not yet fired, null will be returned.

Specified by:
getPreviousFireTime in interface Trigger

getFireTimeAfter

public abstract Date getFireTimeAfter(Date afterTime)

Returns the next time at which the Trigger will fire, after the given time. If the trigger will not fire after the given time, null will be returned.

Specified by:
getFireTimeAfter in interface Trigger

getFinalFireTime

public abstract Date getFinalFireTime()

Returns the last time at which the Trigger will fire, if the Trigger will repeat indefinitely, null will be returned.

Note that the return time *may* be in the past.

Specified by:
getFinalFireTime in interface Trigger

setMisfireInstruction

public void setMisfireInstruction(int misfireInstruction)

Set the instruction the Scheduler should be given for handling misfire situations for this Trigger- the concrete Trigger type that you are using will have defined a set of additional MISFIRE_INSTRUCTION_XXX constants that may be passed to this method.

If not explicitly set, the default value is MISFIRE_INSTRUCTION_SMART_POLICY.

Specified by:
setMisfireInstruction in interface org.quartz.spi.MutableTrigger
See Also:
Trigger.MISFIRE_INSTRUCTION_SMART_POLICY, updateAfterMisfire(Calendar), SimpleTrigger, CronTrigger

validateMisfireInstruction

protected abstract boolean validateMisfireInstruction(int candidateMisfireInstruction)

getMisfireInstruction

public int getMisfireInstruction()

Get the instruction the Scheduler should be given for handling misfire situations for this Trigger- the concrete Trigger type that you are using will have defined a set of additional MISFIRE_INSTRUCTION_XXX constants that may be passed to this method.

If not explicitly set, the default value is MISFIRE_INSTRUCTION_SMART_POLICY.

Specified by:
getMisfireInstruction in interface Trigger
See Also:
Trigger.MISFIRE_INSTRUCTION_SMART_POLICY, updateAfterMisfire(Calendar), SimpleTrigger, CronTrigger

updateAfterMisfire

public abstract void updateAfterMisfire(Calendar cal)

This method should not be used by the Quartz client.

To be implemented by the concrete classes that extend this class.

The implementation should update the Trigger's state based on the MISFIRE_INSTRUCTION_XXX that was selected when the Trigger was created.

Specified by:
updateAfterMisfire in interface org.quartz.spi.OperableTrigger

updateWithNewCalendar

public abstract void updateWithNewCalendar(Calendar cal,
                                           long misfireThreshold)

This method should not be used by the Quartz client.

To be implemented by the concrete class.

The implementation should update the Trigger's state based on the given new version of the associated Calendar (the state should be updated so that it's next fire time is appropriate given the Calendar's new settings).

Specified by:
updateWithNewCalendar in interface org.quartz.spi.OperableTrigger
Parameters:
cal -

validate

public void validate()
              throws SchedulerException

Validates whether the properties of the JobDetail are valid for submission into a Scheduler.

Specified by:
validate in interface org.quartz.spi.OperableTrigger
Throws:
IllegalStateException - if a required property (such as Name, Group, Class) is not set.
SchedulerException

setFireInstanceId

public void setFireInstanceId(String id)

This method should not be used by the Quartz client.

Usable by JobStore implementations, in order to facilitate 'recognizing' instances of fired Trigger s as their jobs complete execution.

Specified by:
setFireInstanceId in interface org.quartz.spi.OperableTrigger

getFireInstanceId

public String getFireInstanceId()

This method should not be used by the Quartz client.

Specified by:
getFireInstanceId in interface org.quartz.spi.OperableTrigger

toString

public String toString()

Return a simple string representation of this object.

Overrides:
toString in class Object

compareTo

public int compareTo(Trigger other)

Compare the next fire time of this Trigger to that of another by comparing their keys, or in other words, sorts them according to the natural (i.e. alphabetical) order of their keys.

Specified by:
compareTo in interface Comparable<Trigger>
Specified by:
compareTo in interface Trigger

equals

public boolean equals(Object o)
Trigger equality is based upon the equality of the TriggerKey.

Specified by:
equals in interface Trigger
Overrides:
equals in class Object
Returns:
true if the key of this Trigger equals that of the given Trigger.

hashCode

public int hashCode()
Overrides:
hashCode in class Object

clone

public Object clone()
Specified by:
clone in interface org.quartz.spi.MutableTrigger
Overrides:
clone in class Object

getTriggerBuilder

public TriggerBuilder<T> getTriggerBuilder()
Description copied from interface: Trigger
Get a TriggerBuilder that is configured to produce a Trigger identical to this one.

Specified by:
getTriggerBuilder in interface Trigger
See Also:
Trigger.getScheduleBuilder()

getScheduleBuilder

public abstract ScheduleBuilder<T> getScheduleBuilder()
Description copied from interface: Trigger
Get a ScheduleBuilder that is configured to produce a schedule identical to this trigger's schedule.

Specified by:
getScheduleBuilder in interface Trigger
See Also:
Trigger.getTriggerBuilder()


Copyright 2001-2013, Terracotta, Inc.