public class CalendarSchedule extends java.lang.Object implements Schedule, java.io.Serializable
A CalendarSchedule expresses a repeating job in terms of months, days, hours, and minutes. For example, a CalendarSchedule might specify that a job take place on the 15th and 30th of every month, at 3:05am. A CalendarSchedule may also express a day in terms of day of the week, so that a job could take place every Monday in February at 2:30pm.
A CalendarSchedule is built by constructing a blank CalendarSchedule, then adding months, dates, days of the week, occurrences of days of the week in the month, hours, and minutes. Any times matching some combination of the added times will trigger the job. Specifically, the job will be triggered if:
The numerical values for the months, days, days of the week, hours, and minutes correspond to the same values used by the java.util.Calendar class fields MONTH, DATE, DAY_OF_WEEK, HOUR_OF_DAY, and MINUTE. The numerical values 1-4 for the occurrence of day of the week in the month similarly correspond to the values used by the Calendar field DAY_OF_WEEK_IN_MONTH; the special value of "last" is used to indicate the last occurrence in the month (e.g., last Monday of the month).
A CalendarSchedule may also be specified through a String, which the CalendarSchedule will parse. The String is of the form:
"<months> <dates> <days of week> <occurrences in month> <hours of day> <minutes>"
Each of the above elements, such as <dates>, is specified as one of the following:
For example, the following String specifies a job that will occur at 3:05pm on the 1st and 15th of every month:
"* 1,15 . . 15 5"
The following String specifies a job that will occur at midnight every Monday in the summer and winter:
"11-2,5-7 . 2 * 0 0"
And the following String specifies a job that will occur every hour on the hour on the first and last Wednesdays of every month:
"* . 4 1,last * 0"
See java.util.Calendar for more information.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string
|
static int |
LAST
Represents the last occurrence of day of the week in the month
|
static java.lang.String |
LAST_STRING
The string corresponding to the LAST value
|
static java.lang.String |
MAP_KEY_DAYS_OF_MONTH
Map key for the days of month specifier: "daysOfMonth"
|
static java.lang.String |
MAP_KEY_DAYS_OF_WEEK
Map key for the days of week specifier: "daysOfWeek"
|
static java.lang.String |
MAP_KEY_HOURS
Map key for the hours of day specifier: "hours"
|
static java.lang.String |
MAP_KEY_LOCALE
Map key for the locale: "locale"
|
static java.lang.String |
MAP_KEY_MINUTES
Map key for the minutes specifier: "minutes"
|
static java.lang.String |
MAP_KEY_MONTHS
Map key for the months specifier: "months"
|
static java.lang.String |
MAP_KEY_OCCURRENCES_IN_MONTHS
Map key for the occurrences specifier: "occurrences"
|
static java.lang.String |
MAP_KEY_PARSE_STRING
Map key for entire parse string: "parseString"
|
static java.lang.String |
MAP_KEY_TIMEZONE
Map key for timezone as per TimeZone.getTimeZone(): "timeZone"
|
Constructor and Description |
---|
CalendarSchedule()
Constructs a blank new CalendarSchedule using the US locale and
the default TimeZone of the JVM.
|
CalendarSchedule(java.lang.String pSchedule)
Constructs a new CalendarSchedule parsed from the given String
|
CalendarSchedule(java.lang.String pSchedule,
java.util.Locale pLocale)
Constructs a new CalendarSchedule parsed from the given String
|
CalendarSchedule(java.lang.String pSchedule,
java.util.Locale pLocale,
java.util.TimeZone pTimeZone)
Constructs a new CalendarSchedule parsed from the given String
|
CalendarSchedule(java.lang.String pSchedule,
java.util.Locale pLocale,
java.util.TimeZone pTimeZone,
boolean pDisableDatesInMonthsCheck)
Constructs a new CalendarSchedule parsed from the given String
|
Modifier and Type | Method and Description |
---|---|
CalendarSchedule |
addAllDates()
Adds all dates to the schedule, so that the job will occur in
every date of the month.
|
CalendarSchedule |
addAllDaysOfTheWeek()
Adds all days of the week to the schedule, so that the job will
occur in every day of the week.
|
CalendarSchedule |
addAllHours()
Adds all hours to the schedule, so that the job will occur in
every hour.
|
CalendarSchedule |
addAllMinutes()
Adds all minutes to the schedule, so that the job will occur in
every minute.
|
CalendarSchedule |
addAllMonths()
Adds all months to the schedule, so that the job will occur in
every month.
|
CalendarSchedule |
addAllOccurrencesInTheMonth()
Adds all occurrences of day of the week in the month to the
schedule, so that the job will occur at every occurrence of day
of the week in the month.
|
CalendarSchedule |
addDate(int pDate)
Adds the specified day of the month to the schedule (1-31).
|
CalendarSchedule |
addDayOfTheWeek(int pDayOfTheWeek)
Adds the specified day of the week to the schedule (1=Sunday,
7=Saturday)
|
CalendarSchedule |
addHour(int pHour)
Adds the specified hour to the schedule (0-23, 0=midnight).
|
CalendarSchedule |
addMinute(int pMinute)
Adds the specified minute to the schedule (0-59).
|
CalendarSchedule |
addMonth(int pMonth)
Adds the specified month to the schedule (0=January, 11=December)
|
CalendarSchedule |
addOccurrenceInTheMonth(int pOccurrence)
Adds the specified occurrence of day of the week in the month to
the schedule (1=first, 4=fourth, LAST=last)
|
protected java.lang.StringBuilder |
appendRangeString(java.lang.StringBuilder pBuffer,
boolean[] pValues) |
boolean |
equals(java.lang.Object pObject)
Returns true if the given object is a CalendarSchedule with all
the same settings as this schedule.
|
java.lang.String |
generateParseString(java.util.Locale pLocale)
called by scheduleString to generate a new schedule string when the user modifes our properties on the fly.
|
java.lang.String |
generateParseString(java.util.Locale pLocale,
boolean pAllowRangeSyntax)
called by scheduleString to generate a new schedule string when the user modifes our properties on the fly.
|
java.lang.String |
generateParseStringFromMap(java.util.Map<java.lang.String,java.lang.Object> pMap)
Generate a parse string from the component entries of the specified
map.
|
java.lang.String |
generateStringRepresentation(boolean[] pArray,
int startIndex)
represents the array as a string object to be embedded in the scheduleString.
|
java.lang.String |
generateStringRepresentation(boolean[] pArray,
int startIndex,
boolean pAllowRangeSyntax)
represents the array as a string object to be embedded in the scheduleString.
|
boolean[] |
getAllDates()
gets all dates of the month to the schedule will occur in.
|
boolean[] |
getAllDaysOfTheWeek()
gets all days of the the week the schedule will occur in
the zero'th entry can be ignored as counting starts at 1
|
boolean[] |
getAllHours()
gets all hours the schedule will occur in
|
boolean[] |
getAllMinutes()
gets all minutes schedule will occur in
|
boolean[] |
getAllMonths()
gets all months to the schedule will occur in
|
boolean[] |
getAllOccurencesInTheMonth()
Deprecated.
Use the correctly spelled getAllOccurrencesInTheMonth(), instead.
|
boolean[] |
getAllOccurrencesInTheMonth()
gets all occurrences in the month the schedule will occur in
the zero'th entry can be ignored as counting starts at 1
|
java.util.Map<java.lang.String,java.lang.Object> |
getMapRepresentation(java.util.Locale pLocale)
Generate a map representation.
|
long |
getNextJobTime()
Return the next job time.
|
long |
getNextJobTime(long pLastOccurrenceTime)
Returns the next time that the job Scheduled by this will take
place, or -1 if the job's next time could not be calculated.
|
java.util.Date |
getNextJobTimeAsDate()
Return the next job time as a date.
|
static java.util.ResourceBundle |
getResources(java.util.Locale pLocale) |
java.lang.String |
getSchedule()
Return the schedule string.
|
java.util.TimeZone |
getTimeZone()
Return the TimeZone used by this scheduler.
|
int |
hashCode()
Returns a hash code value for this object.
|
boolean |
isDisableDatesInMonthsCheck()
Returns property disableDatesInMonthsCheck.
|
boolean |
isEveryMinute()
Return true if the schedule specifies every minute.
|
boolean |
isRepeating()
Returns true if this is a repeating job, false if this is a
one-shot job.
|
boolean |
jobOccursAtTime(java.util.Date pTime)
Returns true if the given time is one of the times that the job
Scheduled by this may take place.
|
static void |
main(java.lang.String[] pArgs)
Testing method
|
boolean |
mustKnowFirstTime()
If true, then the first time getNextJobTime is called it will be
called with -1.
|
void |
parse(java.lang.String pSchedule)
Parses a CalendarSchedule from the specified String, adding all
the elements specified by that String.
|
void |
parse(java.lang.String pSchedule,
java.util.Locale pLocale)
Parses a CalendarSchedule from the specified String, adding all
the elements specified by that String.
|
protected void |
reset(boolean[] pValues)
Set all values in pValues to false.
|
void |
resetAll()
Reset the occurences in calendar to none.
|
java.lang.String |
scheduleString()
Returns a Parseable representation of this Schedule.
|
java.lang.String |
scheduleString(java.util.Locale pLocale)
Returns a Parseable representation of this Schedule.
|
void |
setDisableDatesInMonthsCheck(boolean pDisableDatesInMonthsCheck)
Sets property disableDatesInMonthsCheck.
|
void |
setFromMapRepresentation(java.util.Map<java.lang.String,java.lang.Object> pMap)
Set from a map representation (as returned by getMapRepresentation).
|
void |
setMonthNames() |
void |
setSchedule(java.lang.String pSchedule)
Set the schedule
|
void |
setTimeZone(java.util.TimeZone pTimeZone)
Set the TimeZone used by this scheduler.
|
void |
setWeekdayNames() |
java.lang.String |
toString() |
java.lang.String |
toString(java.util.Locale pLocale)
Returns a String representation of this
|
public static java.lang.String CLASS_VERSION
public static final java.lang.String MAP_KEY_TIMEZONE
public static final java.lang.String MAP_KEY_LOCALE
public static final java.lang.String MAP_KEY_MONTHS
public static final java.lang.String MAP_KEY_DAYS_OF_MONTH
public static final java.lang.String MAP_KEY_OCCURRENCES_IN_MONTHS
public static final java.lang.String MAP_KEY_DAYS_OF_WEEK
public static final java.lang.String MAP_KEY_HOURS
public static final java.lang.String MAP_KEY_MINUTES
public static final java.lang.String MAP_KEY_PARSE_STRING
public static final int LAST
public static final java.lang.String LAST_STRING
public CalendarSchedule()
public CalendarSchedule(java.lang.String pSchedule)
pSchedule
- the schedule in crontab-ish formatjava.lang.IllegalArgumentException
- if the string can not be
parsed as a CalendarSchedulepublic CalendarSchedule(java.lang.String pSchedule, java.util.Locale pLocale)
pSchedule
- the schedule in crontab-ish formatpLocale
- the locale to use. A null value defaults to Locale.US.java.lang.IllegalArgumentException
- if the string can not be
parsed as a CalendarSchedulepublic CalendarSchedule(java.lang.String pSchedule, java.util.Locale pLocale, java.util.TimeZone pTimeZone)
pSchedule
- the schedule in crontab-ish formatpLocale
- the locale to use. A null value defaults to Locale.US.pTimeZone
- the TimeZone to use. A null value means use
the default TimeZone of the JVM.java.lang.IllegalArgumentException
- if the string can not be
parsed as a CalendarSchedulepublic CalendarSchedule(java.lang.String pSchedule, java.util.Locale pLocale, java.util.TimeZone pTimeZone, boolean pDisableDatesInMonthsCheck)
pSchedule
- the schedule in crontab-ish formatpLocale
- the locale to use. A null value defaults to Locale.US.pTimeZone
- the TimeZone to use. A null value means use
the default TimeZone of the JVM.pDisableDatesInMonthsCheck
- whether to disable the dates in months check.java.lang.IllegalArgumentException
- if the string can not be
parsed as a CalendarSchedulepublic static java.util.ResourceBundle getResources(java.util.Locale pLocale)
public void setMonthNames()
public void setWeekdayNames()
public java.util.TimeZone getTimeZone()
public void setTimeZone(java.util.TimeZone pTimeZone)
the
- TimeZone to be used.public CalendarSchedule addMonth(int pMonth)
pMonth
- the month to addpublic CalendarSchedule addAllMonths()
public boolean[] getAllMonths()
public CalendarSchedule addDate(int pDate)
pDate
- the date to addpublic CalendarSchedule addAllDates()
public boolean[] getAllDates()
public CalendarSchedule addDayOfTheWeek(int pDayOfTheWeek)
pDayOfTheWeek
- the day of the week to addpublic CalendarSchedule addAllDaysOfTheWeek()
public boolean[] getAllDaysOfTheWeek()
public CalendarSchedule addOccurrenceInTheMonth(int pOccurrence)
pOccurrence
- the occurrence in the month to addpublic CalendarSchedule addAllOccurrencesInTheMonth()
@Deprecated public boolean[] getAllOccurencesInTheMonth()
public boolean[] getAllOccurrencesInTheMonth()
public CalendarSchedule addHour(int pHour)
pHour
- the hour to addpublic CalendarSchedule addAllHours()
public boolean[] getAllHours()
public CalendarSchedule addMinute(int pMinute)
pMinute
- the minute to addpublic CalendarSchedule addAllMinutes()
public boolean[] getAllMinutes()
public boolean isEveryMinute()
public boolean jobOccursAtTime(java.util.Date pTime)
pTime
- the time to check (to the nearest minute)public long getNextJobTime(long pLastOccurrenceTime)
getNextJobTime
in interface Schedule
pLastOccurrenceTime
- the last time the job occurred,
or -1 if it has not yet occurred.public boolean mustKnowFirstTime()
mustKnowFirstTime
in interface Schedule
public boolean isRepeating()
isRepeating
in interface Schedule
public void parse(java.lang.String pSchedule)
pSchedule
- the schedule string to parsejava.lang.IllegalArgumentException
- if the string can not be
parsed as a CalendarSchedulepublic void parse(java.lang.String pSchedule, java.util.Locale pLocale)
pSchedule
- the schedule string to parsepLocale
- the locale in which to parse the string.java.lang.IllegalArgumentException
- if the string can not be
parsed as a CalendarSchedulepublic java.lang.String scheduleString()
Schedule
scheduleString
in interface Schedule
public java.lang.String scheduleString(java.util.Locale pLocale)
scheduleString
in interface Schedule
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String generateParseString(java.util.Locale pLocale)
pLocale
- the locale to usepublic java.lang.String generateParseString(java.util.Locale pLocale, boolean pAllowRangeSyntax)
pLocale
- the locale to usepublic java.lang.String generateStringRepresentation(boolean[] pArray, int startIndex)
pArray
- the source array of booleansstartIndex
- the index at which to startpublic java.lang.String generateStringRepresentation(boolean[] pArray, int startIndex, boolean pAllowRangeSyntax)
pArray
- the source array of booleansstartIndex
- the index at which to startpublic java.lang.String toString(java.util.Locale pLocale)
pLocale
- the locale to useprotected java.lang.StringBuilder appendRangeString(java.lang.StringBuilder pBuffer, boolean[] pValues)
public boolean equals(java.lang.Object pObject)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public static void main(java.lang.String[] pArgs)
pArgs
- the command line argumentspublic void setFromMapRepresentation(java.util.Map<java.lang.String,java.lang.Object> pMap)
For a complete list of avialable map keys, see the MAP_KEY_* constants on this class.
pMap
- the source map.public java.lang.String generateParseStringFromMap(java.util.Map<java.lang.String,java.lang.Object> pMap)
pMap
- the map from which to geneerate a parse string.public java.util.Map<java.lang.String,java.lang.Object> getMapRepresentation(java.util.Locale pLocale)
pLocale
- the locale in which to generate a map implementationpublic void resetAll()
protected void reset(boolean[] pValues)
pValues
- the values the set to null.public void setDisableDatesInMonthsCheck(boolean pDisableDatesInMonthsCheck)
public boolean isDisableDatesInMonthsCheck()
public java.lang.String getSchedule()
public void setSchedule(java.lang.String pSchedule)
public long getNextJobTime()
public java.util.Date getNextJobTimeAsDate()