Class CronCalendar

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, Calendar

    public class CronCalendar
    extends BaseCalendar
    This implementation of the Calendar excludes the set of times expressed by a given CronExpression. For example, you could use this calendar to exclude all but business hours (8AM - 5PM) every day using the expression "* * 0-7,18-23 ? * *".

    It is important to remember that the cron expression here describes a set of times to be excluded from firing. Whereas the cron expression in CronTrigger describes a set of times that can be included for firing. Thus, if a CronTrigger has a given cron expression and is associated with a CronCalendar with the same expression, the calendar will exclude all the times the trigger includes, and they will cancel each other out.

    Author:
    Aaron Craven
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      CronCalendar​(java.lang.String expression)
      Create a CronCalendar with the given cron expression and no baseCalendar.
      CronCalendar​(Calendar baseCalendar, java.lang.String expression)
      Create a CronCalendar with the given cron expression and baseCalendar.
      CronCalendar​(Calendar baseCalendar, java.lang.String expression, java.util.TimeZone timeZone)
      Create a CronCalendar with the given cron exprssion, baseCalendar, and TimeZone.
    • Constructor Detail

      • CronCalendar

        public CronCalendar​(java.lang.String expression)
                     throws java.text.ParseException
        Create a CronCalendar with the given cron expression and no baseCalendar.
        Parameters:
        expression - a String representation of the desired cron expression
        Throws:
        java.text.ParseException
      • CronCalendar

        public CronCalendar​(Calendar baseCalendar,
                            java.lang.String expression)
                     throws java.text.ParseException
        Create a CronCalendar with the given cron expression and baseCalendar.
        Parameters:
        baseCalendar - the base calendar for this calendar instance – see BaseCalendar for more information on base calendar functionality
        expression - a String representation of the desired cron expression
        Throws:
        java.text.ParseException
      • CronCalendar

        public CronCalendar​(Calendar baseCalendar,
                            java.lang.String expression,
                            java.util.TimeZone timeZone)
                     throws java.text.ParseException
        Create a CronCalendar with the given cron exprssion, baseCalendar, and TimeZone.
        Parameters:
        baseCalendar - the base calendar for this calendar instance – see BaseCalendar for more information on base calendar functionality
        expression - a String representation of the desired cron expression
        timeZone - Specifies for which time zone the expression should be interpreted, i.e. the expression 0 0 10 * * ?, is resolved to 10:00 am in this time zone. If timeZone is null then TimeZone.getDefault() will be used.
        Throws:
        java.text.ParseException
    • Method Detail

      • getTimeZone

        public java.util.TimeZone getTimeZone()
        Returns the time zone for which the CronExpression of this CronCalendar will be resolved.

        Overrides BaseCalendar.getTimeZone() to defer to its CronExpression.

        Overrides:
        getTimeZone in class BaseCalendar
        Returns:
        This Calendar's timezone, null if Calendar should use the TimeZone.getDefault()
      • setTimeZone

        public void setTimeZone​(java.util.TimeZone timeZone)
        Sets the time zone for which the CronExpression of this CronCalendar will be resolved. If timeZone is null then TimeZone.getDefault() will be used.

        Overrides BaseCalendar.setTimeZone(TimeZone) to defer to its CronExpression.

        Overrides:
        setTimeZone in class BaseCalendar
        Parameters:
        timeZone - The time zone to use for this Calendar, null if TimeZone.getDefault() should be used
      • isTimeIncluded

        public boolean isTimeIncluded​(long timeInMillis)
        Determines whether the given time (in milliseconds) is 'included' by the BaseCalendar
        Specified by:
        isTimeIncluded in interface Calendar
        Overrides:
        isTimeIncluded in class BaseCalendar
        Parameters:
        timeInMillis - the date/time to test
        Returns:
        a boolean indicating whether the specified time is 'included' by the CronCalendar
        See Also:
        Calendar.isTimeIncluded(long)
      • getNextIncludedTime

        public long getNextIncludedTime​(long timeInMillis)
        Determines the next time included by the CronCalendar after the specified time.
        Specified by:
        getNextIncludedTime in interface Calendar
        Overrides:
        getNextIncludedTime in class BaseCalendar
        Parameters:
        timeInMillis - the initial date/time after which to find an included time
        Returns:
        the time in milliseconds representing the next time included after the specified time.
        See Also:
        Calendar.getNextIncludedTime(long)
      • toString

        public java.lang.String toString()
        Returns a string representing the properties of the CronCalendar
        Overrides:
        toString in class java.lang.Object
        Returns:
        the properteis of the CronCalendar in a String format
      • getCronExpression

        public CronExpression getCronExpression()
        Returns the object representation of the cron expression that defines the dates and times this calendar excludes.
        Returns:
        the cron expression
        See Also:
        CronExpression
      • setCronExpression

        public void setCronExpression​(java.lang.String expression)
                               throws java.text.ParseException
        Sets the cron expression for the calendar to a new value
        Parameters:
        expression - the new string value to build a cron expression from
        Throws:
        java.text.ParseException - if the string expression cannot be parsed
      • setCronExpression

        public void setCronExpression​(CronExpression expression)
        Sets the cron expression for the calendar to a new value
        Parameters:
        expression - the new cron expression