org.quartz
Class CronTrigger

java.lang.Object
  extended byorg.quartz.Trigger
      extended byorg.quartz.CronTrigger
All Implemented Interfaces:
java.lang.Cloneable, java.lang.Comparable, java.io.Serializable

public class CronTrigger
extends Trigger

A concrete Trigger that is used to fire a JobDetail at given moments in time, defined with Unix 'cron-like' definitions.

For those unfamiliar with "cron", this means being able to create a firing schedule such as: "At 8:00am every Monday through Friday" or "At 1:30am every last Friday of the month".

A "Cron-Expression" is a string comprised of 6 or 7 fields separated by white space. The 6 mandatory and 1 optional fields are as follows:

Field Name   Allowed Values   Allowed Special Characters
Seconds   0-59   , - * /
Minutes   0-59   , - * /
Hours   0-23   , - * /
Day-of-month   1-31   , - * ? / L W C
Month   1-12 or JAN-DEC   , - * /
Day-of-Week   1-7 or SUN-SAT   , - * ? / L C #
Year (Optional)   empty, 1970-2099   , - * /

The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".

The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.

The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".

The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".

The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". You can also specify '/' after the '*' character - in this case '*' is equivalent to having '0' before the '/'.

The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.

The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days.

The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month".

The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.

The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday".

The legal characters and the names of months and days of the week are not case sensitive.

Here are some full examples:

Expression   Meaning
"0 0 12 * * ?"   Fire at 12pm (noon) every day
"0 15 10 ? * *"   Fire at 10:15am every day
"0 15 10 * * ?"   Fire at 10:15am every day
"0 15 10 * * ? *"   Fire at 10:15am every day
"0 15 10 * * ? 2005"   Fire at 10:15am every day during the year 2005
"0 * 14 * * ?"   Fire every minute starting at 2pm and ending at 2:59pm, every day
"0 0/5 14 * * ?"   Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day
"0 0/5 14,18 * * ?"   Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day
"0 0-5 14 * * ?"   Fire every minute starting at 2pm and ending at 2:05pm, every day
"0 10,44 14 ? 3 WED"   Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.
"0 15 10 ? * MON-FRI"   Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday
"0 15 10 15 * ?"   Fire at 10:15am on the 15th day of every month
"0 15 10 L * ?"   Fire at 10:15am on the last day of every month
"0 15 10 ? * 6L"   Fire at 10:15am on the last Friday of every month
"0 15 10 ? * 6L"   Fire at 10:15am on the last Friday of every month
"0 15 10 ? * 6L 2002-2005"   Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005
"0 15 10 ? * 6#3"   Fire at 10:15am on the third Friday of every month

Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields!

NOTES:

Author:
Sharada Jambula, James House, Contributions from Mads Henderson
See Also:
Trigger, SimpleTrigger, Serialized Form

Field Summary
protected static java.lang.Integer ALL_SPEC
           
protected static int ALL_SPEC_INT
           
protected  boolean calendardayOfMonth
           
protected  boolean calendardayOfWeek
           
protected static int DAY_OF_MONTH
           
protected static int DAY_OF_WEEK
           
protected static java.util.Map dayMap
           
protected  java.util.TreeSet daysOfMonth
           
protected  java.util.TreeSet daysOfWeek
           
protected  boolean expressionParsed
           
protected static int HOUR
           
protected  java.util.TreeSet hours
           
protected  boolean lastdayOfMonth
           
protected  boolean lastdayOfWeek
           
protected static int MINUTE
           
protected  java.util.TreeSet minutes
           
static int MISFIRE_INSTRUCTION_DO_NOTHING
           Instructs the Scheduler that upon a mis-fire situation, the CronTrigger wants to have it's next-fire-time updated to the next time in the schedule after the current time (taking into account any associated Calendar, but it does not want to be fired now.
static int MISFIRE_INSTRUCTION_FIRE_ONCE_NOW
           Instructs the Scheduler that upon a mis-fire situation, the CronTrigger wants to be fired now by Scheduler.
protected static int MONTH
           
protected static java.util.Map monthMap
           
protected  java.util.TreeSet months
           
protected  boolean nearestWeekday
           
protected static java.lang.Integer NO_SPEC
           
protected static int NO_SPEC_INT
           
protected  int nthdayOfWeek
           
protected static int SECOND
           
protected  java.util.TreeSet seconds
           
protected static int YEAR
           
protected  java.util.TreeSet years
           
 
Fields inherited from class org.quartz.Trigger
INSTRUCTION_DELETE_TRIGGER, INSTRUCTION_NOOP, INSTRUCTION_RE_EXECUTE_JOB, INSTRUCTION_SET_ALL_JOB_TRIGGERS_COMPLETE, INSTRUCTION_SET_TRIGGER_COMPLETE, MISFIRE_INSTRUCTION_SMART_POLICY, STATE_BLOCKED, STATE_COMPLETE, STATE_ERROR, STATE_NONE, STATE_NORMAL, STATE_PAUSED
 
Constructor Summary
CronTrigger()
           Create a CronTrigger with no settings.
CronTrigger(java.lang.String name, java.lang.String group)
           Create a CronTrigger with the given name and group.
CronTrigger(java.lang.String name, java.lang.String group, java.lang.String cronExpression)
           Create a CronTrigger with the given name, group and expression.
CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup)
           Create a CronTrigger with the given name and group, and associated with the identified JobDetail.
CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup, java.util.Date startTime, java.util.Date endTime, java.lang.String cronExpression)
           Create a CronTrigger that will occur at the given time, until the given end time.
CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup, java.util.Date startTime, java.util.Date endTime, java.lang.String cronExpression, java.util.TimeZone timeZone)
           Create a CronTrigger with fire time dictated by the cronExpression resolved with respect to the specified timeZone occuring from the startTime until the given endTime.
CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup, java.lang.String cronExpression)
           Create a CronTrigger with the given name and group, associated with the identified JobDetail, and with the given "cron" expression.
CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup, java.lang.String cronExpression, java.util.TimeZone timeZone)
           Create a CronTrigger with the given name and group, associated with the identified JobDetail, and with the given "cron" expression resolved with respect to the TimeZone.
 
Method Summary
protected  void addToSet(int val, int end, int incr, int type)
           
protected  void buildExpression(java.lang.String expression)
           
protected  int checkNext(int pos, java.lang.String s, int val, int type)
           
 java.util.Date computeFirstFireTime(Calendar calendar)
           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.
 int executionComplete(JobExecutionContext context, JobExecutionException result)
           Called after the Scheduler has executed the JobDetail associated with the Trigger in order to get the final instruction code from the trigger.
protected  int findNextWhiteSpace(int i, java.lang.String s)
           
 java.lang.String getCronExpression()
           
protected  int getDayOfWeekNumber(java.lang.String s)
           
 java.util.Date getEndTime()
           Get the time at which the CronTrigger should quit repeating - even if repeastCount isn't yet satisfied.
protected  java.lang.String getExpressionSetSummary(java.util.ArrayList list)
           
protected  java.lang.String getExpressionSetSummary(java.util.Set set)
           
 java.lang.String getExpressionSummary()
           
 java.util.Date getFinalFireTime()
           Returns the final time at which the CronTrigger will fire.
 java.util.Date getFireTimeAfter(java.util.Date afterTime)
           Returns the next time at which the CronTrigger will fire, after the given time.
 int getLastDayOfMonth(int monthNum, int year)
           
protected  int getMonthNumber(java.lang.String s)
           
 java.util.Date getNextFireTime()
           Returns the next time at which the CronTrigger will fire.
protected  int getNumericValue(java.lang.String s, int i)
           
 java.util.Date getPreviousFireTime()
           Returns the previous time at which the CronTrigger will fire.
protected  java.util.TreeSet getSet(int type)
           
 java.util.Date getStartTime()
           Get the time at which the CronTrigger should occur.
protected  java.util.Date getTime(int sc, int mn, int hr, int dayofmn, int mon)
           
protected  java.util.Date getTimeAfter(java.util.Date afterTime)
           
protected  java.util.Date getTimeBefore(java.util.Date endTime)
           
 java.util.TimeZone getTimeZone()
           Returns the time zone for which the cronExpression of this CronTrigger will be resolved.
protected  org.quartz.ValueSet getValue(int v, java.lang.String s, int i)
           
protected  boolean isLeapYear(int year)
           
static void main(java.lang.String[] args)
           
 boolean mayFireAgain()
           Determines whether or not the CronTrigger will occur again.
protected  void setCalendarHour(java.util.Calendar cal, int hour)
          Advance the calendar to the particular hour paying particular attention to daylight saving problems.
 void setCronExpression(java.lang.String cronExpression)
           
 void setEndTime(java.util.Date endTime)
           
 void setNextFireTime(java.util.Date nextFireTime)
           Sets the next time at which the CronTrigger will fire.
 void setPreviousFireTime(java.util.Date previousFireTime)
           Set the previous time at which the SimpleTrigger fired.
 void setStartTime(java.util.Date startTime)
           
 void setTimeZone(java.util.TimeZone timeZone)
           Sets the time zone for which the cronExpression of this CronTrigger will be resolved.
protected  int skipWhiteSpace(int i, java.lang.String s)
           
protected  int storeExpressionVals(int pos, java.lang.String s, int type)
           
 void triggered(Calendar calendar)
           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).
 void updateAfterMisfire(Calendar cal)
           Updates the CronTrigger's state based on the MISFIRE_INSTRUCTION_XXX that was selected when the SimpleTrigger was created.
 void updateWithNewCalendar(Calendar calendar, long misfireThreshold)
           This method should not be used by the Quartz client.
protected  boolean validateMisfireInstruction(int misfireInstruction)
           
 boolean willFireOn(java.util.Calendar test)
           Determines whether the date and (optionally) time of the given Calendar instance falls on a scheduled fire-time of this trigger.
 boolean willFireOn(java.util.Calendar test, boolean dayOnly)
           Determines whether the date and (optionally) time of the given Calendar instance falls on a scheduled fire-time of this trigger.
 
Methods inherited from class org.quartz.Trigger
addTriggerListener, clone, compareTo, equals, getCalendarName, getDescription, getFireInstanceId, getFullJobName, getFullName, getGroup, getJobGroup, getJobName, getMisfireInstruction, getName, getTriggerListenerNames, hashCode, isVolatile, removeTriggerListener, setCalendarName, setDescription, setFireInstanceId, setGroup, setJobGroup, setJobName, setMisfireInstruction, setName, setVolatility, toString, validate
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

MISFIRE_INSTRUCTION_FIRE_ONCE_NOW

public static final int MISFIRE_INSTRUCTION_FIRE_ONCE_NOW

Instructs the Scheduler that upon a mis-fire situation, the CronTrigger wants to be fired now by Scheduler.

See Also:
Constant Field Values

MISFIRE_INSTRUCTION_DO_NOTHING

public static final int MISFIRE_INSTRUCTION_DO_NOTHING

Instructs the Scheduler that upon a mis-fire situation, the CronTrigger wants to have it's next-fire-time updated to the next time in the schedule after the current time (taking into account any associated Calendar, but it does not want to be fired now.

See Also:
Constant Field Values

SECOND

protected static final int SECOND
See Also:
Constant Field Values

MINUTE

protected static final int MINUTE
See Also:
Constant Field Values

HOUR

protected static final int HOUR
See Also:
Constant Field Values

DAY_OF_MONTH

protected static final int DAY_OF_MONTH
See Also:
Constant Field Values

MONTH

protected static final int MONTH
See Also:
Constant Field Values

DAY_OF_WEEK

protected static final int DAY_OF_WEEK
See Also:
Constant Field Values

YEAR

protected static final int YEAR
See Also:
Constant Field Values

ALL_SPEC_INT

protected static final int ALL_SPEC_INT
See Also:
Constant Field Values

NO_SPEC_INT

protected static final int NO_SPEC_INT
See Also:
Constant Field Values

ALL_SPEC

protected static final java.lang.Integer ALL_SPEC

NO_SPEC

protected static final java.lang.Integer NO_SPEC

monthMap

protected static java.util.Map monthMap

dayMap

protected static java.util.Map dayMap

seconds

protected transient java.util.TreeSet seconds

minutes

protected transient java.util.TreeSet minutes

hours

protected transient java.util.TreeSet hours

daysOfMonth

protected transient java.util.TreeSet daysOfMonth

months

protected transient java.util.TreeSet months

daysOfWeek

protected transient java.util.TreeSet daysOfWeek

years

protected transient java.util.TreeSet years

lastdayOfWeek

protected transient boolean lastdayOfWeek

nthdayOfWeek

protected transient int nthdayOfWeek

lastdayOfMonth

protected transient boolean lastdayOfMonth

nearestWeekday

protected transient boolean nearestWeekday

calendardayOfWeek

protected transient boolean calendardayOfWeek

calendardayOfMonth

protected transient boolean calendardayOfMonth

expressionParsed

protected transient boolean expressionParsed
Constructor Detail

CronTrigger

public CronTrigger()

Create a CronTrigger with no settings.


CronTrigger

public CronTrigger(java.lang.String name,
                   java.lang.String group)

Create a CronTrigger with the given name and group.

The start-time will also be set to the current time, and the time zone will be set the the system's default time zone.


CronTrigger

public CronTrigger(java.lang.String name,
                   java.lang.String group,
                   java.lang.String cronExpression)
            throws java.text.ParseException

Create a CronTrigger with the given name, group and expression.

The start-time will also be set to the current time, and the time zone will be set the the system's default time zone.


CronTrigger

public CronTrigger(java.lang.String name,
                   java.lang.String group,
                   java.lang.String jobName,
                   java.lang.String jobGroup)

Create a CronTrigger with the given name and group, and associated with the identified JobDetail.

The start-time will also be set to the current time, and the time zone will be set the the system's default time zone.


CronTrigger

public CronTrigger(java.lang.String name,
                   java.lang.String group,
                   java.lang.String jobName,
                   java.lang.String jobGroup,
                   java.lang.String cronExpression)
            throws java.text.ParseException

Create a CronTrigger with the given name and group, associated with the identified JobDetail, and with the given "cron" expression.

The start-time will also be set to the current time, and the time zone will be set the the system's default time zone.


CronTrigger

public CronTrigger(java.lang.String name,
                   java.lang.String group,
                   java.lang.String jobName,
                   java.lang.String jobGroup,
                   java.lang.String cronExpression,
                   java.util.TimeZone timeZone)
            throws java.text.ParseException

Create a CronTrigger with the given name and group, associated with the identified JobDetail, and with the given "cron" expression resolved with respect to the TimeZone.


CronTrigger

public CronTrigger(java.lang.String name,
                   java.lang.String group,
                   java.lang.String jobName,
                   java.lang.String jobGroup,
                   java.util.Date startTime,
                   java.util.Date endTime,
                   java.lang.String cronExpression)
            throws java.text.ParseException

Create a CronTrigger that will occur at the given time, until the given end time.

If null, the start-time will also be set to the current time, the time zone will be set the the system's default.

Parameters:
startTime - A Date set to the time for the Trigger to fire.
endTime - A Date set to the time for the Trigger to quit repeat firing.

CronTrigger

public CronTrigger(java.lang.String name,
                   java.lang.String group,
                   java.lang.String jobName,
                   java.lang.String jobGroup,
                   java.util.Date startTime,
                   java.util.Date endTime,
                   java.lang.String cronExpression,
                   java.util.TimeZone timeZone)
            throws java.text.ParseException

Create a CronTrigger with fire time dictated by the cronExpression resolved with respect to the specified timeZone occuring from the startTime until the given endTime.

If null, the start-time will also be set to the current time. If null, the time zone will be set to the system's default.

Parameters:
name - of the Trigger
group - of the Trigger
startTime - A Date set to the earliest time for the Trigger to start firing.
endTime - A Date set to the time for the Trigger to quit repeat firing.
Throws:
java.text.ParseException - if the cronExpression is invalid.
Method Detail

setCronExpression

public void setCronExpression(java.lang.String cronExpression)
                       throws java.text.ParseException
Throws:
java.text.ParseException

getCronExpression

public java.lang.String getCronExpression()

getStartTime

public java.util.Date getStartTime()

Get the time at which the CronTrigger should occur.

Specified by:
getStartTime in class Trigger

setStartTime

public void setStartTime(java.util.Date startTime)
Specified by:
setStartTime in class Trigger

getEndTime

public java.util.Date getEndTime()

Get the time at which the CronTrigger should quit repeating - even if repeastCount isn't yet satisfied.

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

setEndTime

public void setEndTime(java.util.Date endTime)
Specified by:
setEndTime in class Trigger

getNextFireTime

public java.util.Date getNextFireTime()

Returns the next time at which the CronTrigger will fire. If the trigger will not fire again, null will be returned. The value returned is not guaranteed to be valid until after the Trigger has been added to the scheduler.

Specified by:
getNextFireTime in class Trigger

getPreviousFireTime

public java.util.Date getPreviousFireTime()

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

Specified by:
getPreviousFireTime in class Trigger

setNextFireTime

public void setNextFireTime(java.util.Date nextFireTime)

Sets the next time at which the CronTrigger will fire. This method should not be invoked by client code.


setPreviousFireTime

public void setPreviousFireTime(java.util.Date previousFireTime)

Set the previous time at which the SimpleTrigger fired.

This method should not be invoked by client code.


getTimeZone

public java.util.TimeZone getTimeZone()

Returns the time zone for which the cronExpression of this CronTrigger will be resolved.


setTimeZone

public void setTimeZone(java.util.TimeZone timeZone)

Sets the time zone for which the cronExpression of this CronTrigger will be resolved.


getFireTimeAfter

public java.util.Date getFireTimeAfter(java.util.Date afterTime)

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

Note that the date returned is NOT validated against the related org.quartz.Calendar (if any)

Specified by:
getFireTimeAfter in class Trigger

getFinalFireTime

public java.util.Date getFinalFireTime()

Returns the final time at which the CronTrigger will fire.

Note that the return time *may* be in the past. and the date returned is not validated against org.quartz.calendar

Specified by:
getFinalFireTime in class Trigger

mayFireAgain

public boolean mayFireAgain()

Determines whether or not the CronTrigger will occur again.

Specified by:
mayFireAgain in class Trigger

validateMisfireInstruction

protected boolean validateMisfireInstruction(int misfireInstruction)
Specified by:
validateMisfireInstruction in class Trigger

updateAfterMisfire

public void updateAfterMisfire(Calendar cal)

Updates the CronTrigger's state based on the MISFIRE_INSTRUCTION_XXX that was selected when the SimpleTrigger was created.

If the misfire instruction is set to MISFIRE_INSTRUCTION_SMART_POLICY, then the following scheme will be used:

Specified by:
updateAfterMisfire in class Trigger

willFireOn

public boolean willFireOn(java.util.Calendar test)

Determines whether the date and (optionally) time of the given Calendar instance falls on a scheduled fire-time of this trigger.

Equivalent to calling willFireOn(cal, false).

Parameters:
test - the date to compare
See Also:
willFireOn(Calendar, boolean)

willFireOn

public boolean willFireOn(java.util.Calendar test,
                          boolean dayOnly)

Determines whether the date and (optionally) time of the given Calendar instance falls on a scheduled fire-time of this trigger.

Note that the value returned is NOT validated against the related org.quartz.Calendar (if any)

Parameters:
test - the date to compare
dayOnly - if set to true, the method will only determine if the trigger will fire during the day represented by the given Calendar (hours, minutes and seconds will be ignored).
See Also:
willFireOn(Calendar)

executionComplete

public int executionComplete(JobExecutionContext context,
                             JobExecutionException result)

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 class Trigger
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 Trigger.INSTRUCTION_XXX constants.
See Also:
Trigger.INSTRUCTION_NOOP, Trigger.INSTRUCTION_RE_EXECUTE_JOB, Trigger.INSTRUCTION_DELETE_TRIGGER, Trigger.INSTRUCTION_SET_TRIGGER_COMPLETE, triggered(Calendar)

triggered

public void triggered(Calendar calendar)

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 class Trigger
See Also:
executionComplete(JobExecutionContext, JobExecutionException)

updateWithNewCalendar

public void updateWithNewCalendar(Calendar calendar,
                                  long misfireThreshold)
Description copied from class: Trigger

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 class Trigger
Parameters:
calendar -
See Also:
Trigger.updateWithNewCalendar(org.quartz.Calendar, long)

computeFirstFireTime

public java.util.Date computeFirstFireTime(Calendar calendar)

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 class Trigger
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).


buildExpression

protected void buildExpression(java.lang.String expression)
                        throws java.text.ParseException
Throws:
java.text.ParseException

storeExpressionVals

protected int storeExpressionVals(int pos,
                                  java.lang.String s,
                                  int type)
                           throws java.text.ParseException
Throws:
java.text.ParseException

checkNext

protected int checkNext(int pos,
                        java.lang.String s,
                        int val,
                        int type)
                 throws java.text.ParseException
Throws:
java.text.ParseException

getExpressionSummary

public java.lang.String getExpressionSummary()

getExpressionSetSummary

protected java.lang.String getExpressionSetSummary(java.util.Set set)

getExpressionSetSummary

protected java.lang.String getExpressionSetSummary(java.util.ArrayList list)

skipWhiteSpace

protected int skipWhiteSpace(int i,
                             java.lang.String s)

findNextWhiteSpace

protected int findNextWhiteSpace(int i,
                                 java.lang.String s)

addToSet

protected void addToSet(int val,
                        int end,
                        int incr,
                        int type)
                 throws java.text.ParseException
Throws:
java.text.ParseException

getSet

protected java.util.TreeSet getSet(int type)

getValue

protected org.quartz.ValueSet getValue(int v,
                                       java.lang.String s,
                                       int i)

getNumericValue

protected int getNumericValue(java.lang.String s,
                              int i)

getMonthNumber

protected int getMonthNumber(java.lang.String s)

getDayOfWeekNumber

protected int getDayOfWeekNumber(java.lang.String s)

getTime

protected java.util.Date getTime(int sc,
                                 int mn,
                                 int hr,
                                 int dayofmn,
                                 int mon)

getTimeAfter

protected java.util.Date getTimeAfter(java.util.Date afterTime)

setCalendarHour

protected void setCalendarHour(java.util.Calendar cal,
                               int hour)
Advance the calendar to the particular hour paying particular attention to daylight saving problems.

Parameters:
cal -
hour -

getTimeBefore

protected java.util.Date getTimeBefore(java.util.Date endTime)

isLeapYear

protected boolean isLeapYear(int year)

getLastDayOfMonth

public int getLastDayOfMonth(int monthNum,
                             int year)

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Throws:
java.lang.Exception

Quartz Project Page