Class RelativeDayOfWeekRule

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class RelativeDayOfWeekRule
    extends AnnualDateRule
    An annual date rule that returns a date for each year based on (a) a reference rule; (b) a day of the week; and (c) a selection parameter (SerialDate.PRECEDING, SerialDate.NEAREST, SerialDate.FOLLOWING).

    For example, Good Friday can be specified as 'the Friday PRECEDING Easter Sunday'.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int dayOfWeek
      The day of the week (SerialDate.MONDAY, SerialDate.TUESDAY, and so on).
      private int relative
      Specifies which day of the week (PRECEDING, NEAREST or FOLLOWING).
      private AnnualDateRule subrule
      A reference to the annual date rule on which this rule is based.
    • Constructor Summary

      Constructors 
      Constructor Description
      RelativeDayOfWeekRule()
      Default constructor - builds a rule for the Monday following 1 January.
      RelativeDayOfWeekRule​(AnnualDateRule subrule, int dayOfWeek, int relative)
      Standard constructor - builds rule based on the supplied sub-rule.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Object clone()
      Creates a clone of this rule.
      SerialDate getDate​(int year)
      Returns the date generated by this rule, for the specified year.
      int getDayOfWeek()
      Returns the day-of-the-week for this rule.
      int getRelative()
      Returns the 'relative' attribute, that determines *which* day-of-the-week we are interested in (SerialDate.PRECEDING, SerialDate.NEAREST or SerialDate.FOLLOWING).
      AnnualDateRule getSubrule()
      Returns the sub-rule (also called the reference rule).
      void setDayOfWeek​(int dayOfWeek)
      Sets the day-of-the-week for this rule.
      void setRelative​(int relative)
      Sets the 'relative' attribute (SerialDate.PRECEDING, SerialDate.NEAREST, SerialDate.FOLLOWING).
      void setSubrule​(AnnualDateRule subrule)
      Sets the sub-rule.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • subrule

        private AnnualDateRule subrule
        A reference to the annual date rule on which this rule is based.
      • dayOfWeek

        private int dayOfWeek
        The day of the week (SerialDate.MONDAY, SerialDate.TUESDAY, and so on).
      • relative

        private int relative
        Specifies which day of the week (PRECEDING, NEAREST or FOLLOWING).
    • Constructor Detail

      • RelativeDayOfWeekRule

        public RelativeDayOfWeekRule()
        Default constructor - builds a rule for the Monday following 1 January.
      • RelativeDayOfWeekRule

        public RelativeDayOfWeekRule​(AnnualDateRule subrule,
                                     int dayOfWeek,
                                     int relative)
        Standard constructor - builds rule based on the supplied sub-rule.
        Parameters:
        subrule - the rule that determines the reference date.
        dayOfWeek - the day-of-the-week relative to the reference date.
        relative - indicates *which* day-of-the-week (preceding, nearest or following).
    • Method Detail

      • getSubrule

        public AnnualDateRule getSubrule()
        Returns the sub-rule (also called the reference rule).
        Returns:
        The annual date rule that determines the reference date for this rule.
      • setSubrule

        public void setSubrule​(AnnualDateRule subrule)
        Sets the sub-rule.
        Parameters:
        subrule - the annual date rule that determines the reference date for this rule.
      • getDayOfWeek

        public int getDayOfWeek()
        Returns the day-of-the-week for this rule.
        Returns:
        the day-of-the-week for this rule.
      • setDayOfWeek

        public void setDayOfWeek​(int dayOfWeek)
        Sets the day-of-the-week for this rule.
        Parameters:
        dayOfWeek - the day-of-the-week (SerialDate.MONDAY, SerialDate.TUESDAY, and so on).
      • getRelative

        public int getRelative()
        Returns the 'relative' attribute, that determines *which* day-of-the-week we are interested in (SerialDate.PRECEDING, SerialDate.NEAREST or SerialDate.FOLLOWING).
        Returns:
        The 'relative' attribute.
      • setRelative

        public void setRelative​(int relative)
        Sets the 'relative' attribute (SerialDate.PRECEDING, SerialDate.NEAREST, SerialDate.FOLLOWING).
        Parameters:
        relative - determines *which* day-of-the-week is selected by this rule.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Creates a clone of this rule.
        Overrides:
        clone in class AnnualDateRule
        Returns:
        a clone of this rule.
        Throws:
        java.lang.CloneNotSupportedException - this should never happen.
      • getDate

        public SerialDate getDate​(int year)
        Returns the date generated by this rule, for the specified year.
        Specified by:
        getDate in class AnnualDateRule
        Parameters:
        year - the year (1900 <= year <= 9999).
        Returns:
        The date generated by the rule for the given year (possibly null).