org.jfree.date

## Class RelativeDayOfWeekRule

- java.lang.Object
- - org.jfree.date.AnnualDateRule
  - - org.jfree.date.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'.

  Author:
    David Gilbert

- - ### Constructor Summary

    Constructors
    Constructor and 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

    Methods
    Modifier and Type | Method and 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`

- - ### 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`).