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