27 * --------------------------
28 * RelativeDayOfWeekRule.java
29 * --------------------------
30 * (C) Copyright 2000–2003, by Object Refinery Limited and Contributors.
31 *
32 * Автор: Дэвид Гилберт (для Object Refinery Limited);
33 * Участники: -;
34 *
35 * $Id: RelativeDayOfWeekRule.java,v 1.6 2005/11/16 15:58:40 taqua Exp $
36 *
37 * Изменения (начиная с 26 октября 2001)
38 * --------------------------
39 * 26-Oct-2001 : Пакет изменен на com.jrefinery.date.*;
40 * 03-Oct-2002 : Исправлены ошибки по информации Checkstyle (DG);
41 *
42 */
43
44 package org.jfree.date;
45
46 /**
47 * Правило ежегодной даты, возвращающее дату для каждого года на основании
48 * (a) эталонного правила; (б) дня недели; и (в) параметра выбора.
49 * (SerialDate.PRECEDING, SerialDate.NEAREST, SerialDate.FOLLOWING).
50 *
51 * Например, Страстная пятница может задаваться как 'пятница, ПРЕДШЕСТВУЮЩАЯ
52 * Пасхе'.
53 *
54 * @author Дэвид Гилберт
55 */
56 public class RelativeDayOfWeekRule extends AnnualDateRule {
57
58 /** Ссылка на правило ежегодной даты, на котором основано данное правило. */
59 private AnnualDateRule subrule;
60
61 /**
62 * День недели (SerialDate.MONDAY, SerialDate.TUESDAY и т.д.).
63 */
64 private int dayOfWeek;
65
66 /** Признак выбора дня недели (PRECEDING, NEAREST или FOLLOWING). */
67 private int relative;
68
69 /**
70 * Конструктор по умолчанию - строит правило для понедельника после
1 января.
71 */
72 public RelativeDayOfWeekRule() {
73 this(new DayAndMonthRule(), SerialDate.MONDAY, SerialDate.FOLLOWING);
74 }
75
76 /**
77 * Стандартный конструктор - строит правило на основании субправила.
78 *
79 * @param subrule правило, определяющее эталонную дату.
80 * @param dayOfWeek день недели по отношению к эталонной дате.
81 * @param relative признак выбора дня недели (preceding, nearest
82 * или following).
83 */
84 public RelativeDayOfWeekRule(final AnnualDateRule subrule,
85 final int dayOfWeek, final int relative) {
86 this.subrule = subrule;
87 this.dayOfWeek = dayOfWeek;
88 this.relative = relative;
89 }
90
91 /**
92 * Возвращает субправило (также называемое эталонным правилом).
93 *
94 * @return Правило ежегодной даты, определяющее эталонную дату
95 * для текущего правила.
96 */
97 public AnnualDateRule getSubrule() {
98 return this.subrule;
99 }
100
101 /**