View Javadoc

1   /*
2    *  File: HolidayEnumerator_en_US.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.Calendar;
14  import java.util.Locale;
15  
16  /**
17   * Implementation of a HolidayEnumerator for the US. Information obtained from wikipedia
18   * (http://en.wikipedia.org/wiki/List_of_holidays_by_country#United_States) <b>No warranty! No regions supported! Only
19   * federal holidays!</b>
20   * <p>
21   * Corrections to peter.kliem@jaret.de
22   * </p>
23   * 
24   * @author Peter Kliem
25   * @version $Id: HolidayEnumerator_en_US.java 297 2007-03-12 21:38:00Z olk $
26   */
27  public class HolidayEnumerator_en_US extends HolidayEnumeratorBase {
28  
29      
30      public HolidayEnumerator_en_US() {
31          _locale = Locale.US;
32      }
33      
34      /**
35       * {@inheritDoc}
36       */
37      protected void fillMap(int year) {
38          EasyDate ed = new EasyDate(year, 0, 1);
39          addNamedDate(ed, true, "New Year's Day");
40          ed = fridayOrMonday(ed);
41          if (ed != null) {
42              addNamedDate(ed, true, "New Year's Day (observed)");
43          }
44  
45          ed = new EasyDate(year, 6, 4);
46          addNamedDate(ed, true, "Independence Day");
47          ed = fridayOrMonday(ed);
48          if (ed != null) {
49              addNamedDate(ed, true, "Independence Day (observed)");
50          }
51  
52          ed = new EasyDate(year, 10, 11);
53          addNamedDate(ed, true, "Veteran's Day");
54          ed = fridayOrMonday(ed);
55          if (ed != null) {
56              addNamedDate(ed, true, "Veteran's Day (observed)");
57          }
58  
59          // Martin Luther King day: third monday in january
60          addNamedDate(nThWeekdayInMonth(year, 0, Calendar.MONDAY, 3), true, "Martin Luther King Day");
61  
62          // Presidents's Day: third monday in february
63          addNamedDate(nThWeekdayInMonth(year, 1, Calendar.MONDAY, 3), true, "President's Day");
64  
65          // Memorial Day: last monday in may
66          addNamedDate(lastWeekdayInMonth(year, 4, Calendar.MONDAY), true, "Memorial Day");
67  
68          // labor day: first monday in september
69          addNamedDate(nThWeekdayInMonth(year, 8, Calendar.MONDAY, 1), true, "Labor Day");
70  
71          // Columbus Day: second Monday in october
72          addNamedDate(nThWeekdayInMonth(year, 9, Calendar.MONDAY, 2), true, "Columbus Day");
73  
74          // Thanksgiving Day: forth thursday in november
75          addNamedDate(nThWeekdayInMonth(year, 10, Calendar.THURSDAY, 4), true, "Thanksgiving Day");
76  
77          addNamedDate(year, 11, 24, false, "Christmas eve");
78          addNamedDate(year, 11, 26, false, "Boxing day");
79  
80          // shifted christmas day may overwrite christmas eve or boxibg day
81          ed = new EasyDate(year, 11, 25);
82          addNamedDate(ed, true, "Christmas Day");
83          ed = fridayOrMonday(ed);
84          if (ed != null) {
85              addNamedDate(ed, true, "Christmas Day (observed)");
86          }
87  
88          addNamedDate(year, 11, 31, false, "New year's eve");
89  
90          // if new year's eve is a friday it will be a holiday (oberved new year's day)
91          // this will overwrite new years eve
92          ed = new EasyDate(year, 11, 31);
93          if (getWeekday(ed.date) == Calendar.FRIDAY) {
94              addNamedDate(ed, true, "New Year's Day (observed)");
95          }
96  
97      }
98  }