View Javadoc

1   /*
2    *  File: HolidayEnumerator.java 
3    *  Copyright (c) 2004-2007  Peter Kliem (Peter.Kliem@jaret.de)
4    *  A commercial license is available, see http://www.jaret.de.
5    *
6    * All rights reserved. This program and the accompanying materials
7    * are made available under the terms of the Common Public License v1.0
8    * which accompanies this distribution, and is available at
9    * http://www.eclipse.org/legal/cpl-v10.html
10   */
11  package de.jaret.util.date.holidayenumerator;
12  
13  import java.util.Date;
14  import java.util.List;
15  import java.util.Locale;
16  
17  /**
18   * Interface for a class enumerating holidays and other specially named days for a given Locale and additional RegionID.
19   * A special day is a day with a given name but without a meaning to the working world (such as the 24.12. in germany:
20   * it is named "Heiligabend" but it is not a holiday by law). Those can be used for additional information in calendar
21   * tools.
22   * 
23   * @author Peter Kliem
24   * @version $Id: HolidayEnumerator.java 293 2007-03-11 17:50:57Z olk $
25   */
26  public interface HolidayEnumerator {
27      /**
28       * Check whether a given day denotes a special (named) day.
29       * 
30       * @param date The date to be checked
31       * @return true if the date denotes a named day.
32       */
33      boolean isSpecialDay(Date date);
34  
35      /**
36       * Check whether a given day denotes a holiday.
37       * 
38       * @param date date to be checked
39       * @return true if the date denotes a holiday
40       */
41      boolean isHoliday(Date date);
42  
43      /**
44       * Retrieve the name of a special day or holiday.
45       * 
46       * @param date date for which the name is to be retrieved
47       * @return the name of the day or <code>null</code> if no name is found.
48       */
49      String getDayName(Date date);
50  
51      /**
52       * Retrieve a list of named days for a given year.
53       * 
54       * @param year year to be questioned
55       * @param includeSpecialDays if true, special days are includes, otherwise the list will only contain holidays
56       * @return an ordered list of named dates
57       */
58      List<NamedDate> getNamedDays(int year, boolean includeSpecialDays);
59  
60      /**
61       * Retrieve a list of named days for a given year.
62       * 
63       * @param year year to be questioned
64       * @param month month to be questioned
65       * @param includeSpecialDays if true, special days are includes, otherwise the list will only contain holidays
66       * @return an ordered list of named dates
67       */
68      List<NamedDate> getNamedDays(int year, int month, boolean includeSpecialDays);
69  
70      /**
71       * Retrieve the Locale of this HolidayEnumerator.
72       * 
73       * @return configured Locale
74       */
75      Locale getLocale();
76  
77      /**
78       * Retrieve the RegionId of this HolidayEnumerator.
79       * 
80       * @return the regionid
81       */
82      String getRegionId();
83  
84      /**
85       * Retrieve the available region identifiers of the holiday enumerator.
86       * 
87       * @return the availbale ids or an empty array for no regions
88       */
89      String[] getAvailableRegionIds();
90  
91  }