1 /* GENERATED SOURCE. DO NOT MODIFY. */ 2 // © 2016 and later: Unicode, Inc. and others. 3 // License & terms of use: http://www.unicode.org/copyright.html 4 /* 5 ******************************************************************************* 6 * Copyright (C) 1996-2016, International Business Machines Corporation and * 7 * others. All Rights Reserved. * 8 ******************************************************************************* 9 */ 10 11 package android.icu.util; 12 13 import java.util.Date; 14 15 /** 16 * <b>Note:</b> The Holiday framework is a technology preview. 17 * Despite its age, is still draft API, and clients should treat it as such. 18 * 19 * A holiday whose date can be represented by a month, day, and optionally day of week 20 * in the Gregorian calendar. 21 * 22 * @hide Only a subset of ICU is exposed in Android 23 * @hide draft / provisional / internal are hidden on Android 24 */ 25 public class SimpleHoliday extends Holiday { 26 /** 27 * Construct an object representing a holiday 28 * 29 * @param month The month in which this holiday occurs (0-based) 30 * @param dayOfMonth The date within the month (1-based). 31 * 32 * @param name The name of this holiday. This string is used as a key 33 * to look up the holiday's name a resource bundle. 34 * If the name is not found in the resource bundle, 35 * getDisplayName will return this string instead. 36 * 37 * @see Holiday#getDisplayName(java.util.Locale) 38 * @hide draft / provisional / internal are hidden on Android 39 */ SimpleHoliday(int month, int dayOfMonth, String name)40 public SimpleHoliday(int month, int dayOfMonth, String name) 41 { 42 super(name, new SimpleDateRule(month, dayOfMonth)); 43 } 44 45 /** 46 * Construct an object representing a holiday 47 * 48 * @param month The month in which this holiday occurs (0-based) 49 * @param dayOfMonth The date within the month (1-based). 50 * 51 * @param name The name of this holiday. This string is used as a key 52 * to look up the holiday's name a resource bundle. 53 * If the name is not found in the resource bundle, 54 * getDisplayName will return this string instead. 55 * 56 * @see Holiday#getDisplayName(java.util.Locale) 57 * @hide draft / provisional / internal are hidden on Android 58 */ SimpleHoliday(int month, int dayOfMonth, String name, int startYear)59 public SimpleHoliday(int month, int dayOfMonth, String name, 60 int startYear) 61 { 62 super(name, rangeRule(startYear, 0, new SimpleDateRule(month, dayOfMonth))); 63 } 64 65 /** 66 * Construct an object representing a holiday 67 * 68 * @param month The month in which this holiday occurs (0-based) 69 * @param dayOfMonth The date within the month (1-based). 70 * 71 * @param name The name of this holiday. This string is used as a key 72 * to look up the holiday's name a resource bundle. 73 * If the name is not found in the resource bundle, 74 * getDisplayName will return this string instead. 75 * 76 * @see Holiday#getDisplayName(java.util.Locale) 77 * @hide draft / provisional / internal are hidden on Android 78 */ SimpleHoliday(int month, int dayOfMonth, String name, int startYear, int endYear)79 public SimpleHoliday(int month, int dayOfMonth, String name, 80 int startYear, int endYear) 81 { 82 super(name, rangeRule(startYear, endYear, new SimpleDateRule(month, dayOfMonth))); 83 } 84 85 /** // TODO: remove 86 * Construct an object representing a holiday 87 * 88 * @param month The month in which this holiday occurs (0-based) 89 * 90 * @param dayOfMonth A date within the month (1-based). The 91 * interpretation of this parameter depends on the value of 92 * <code>dayOfWeek</code>. 93 * 94 * @param dayOfWeek The day of the week on which this holiday occurs. 95 * The following values are legal: <ul> 96 * <li>dayOfWeek == 0 - use dayOfMonth only 97 * <li>dayOfWeek < 0 - use last -dayOfWeek before or on dayOfMonth 98 * <li>dayOfWeek > 0 - use first dayOfWeek after or on dayOfMonth 99 * </ul> 100 * 101 * @param name The name of this holiday. This string is used as a key 102 * to look up the holiday's name a resource bundle. 103 * If the name is not found in the resource bundle, 104 * getDisplayName will return this string instead. 105 * 106 * @see Holiday#getDisplayName(java.util.Locale) 107 * @hide draft / provisional / internal are hidden on Android 108 */ SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name)109 public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name) 110 { 111 super(name, new SimpleDateRule(month, dayOfMonth, 112 dayOfWeek > 0 ? dayOfWeek : - dayOfWeek, 113 dayOfWeek > 0)); 114 } 115 116 /** 117 * @hide draft / provisional / internal are hidden on Android 118 */ SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name, int startYear)119 public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name, 120 int startYear) 121 { 122 super(name, rangeRule(startYear, 0, 123 new SimpleDateRule(month, dayOfMonth, 124 dayOfWeek > 0 ? dayOfWeek : - dayOfWeek, 125 dayOfWeek > 0))); 126 } 127 128 129 /** 130 * @hide draft / provisional / internal are hidden on Android 131 */ SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name, int startYear, int endYear)132 public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name, 133 int startYear, int endYear) 134 { 135 super(name, rangeRule(startYear, endYear, 136 new SimpleDateRule(month, dayOfMonth, 137 dayOfWeek > 0 ? dayOfWeek : - dayOfWeek, 138 dayOfWeek > 0))); 139 } 140 rangeRule(int startYear, int endYear, DateRule rule)141 private static DateRule rangeRule(int startYear, int endYear, DateRule rule) 142 { 143 if (startYear == 0 && endYear == 0) { 144 return rule; 145 } 146 147 RangeDateRule rangeRule = new RangeDateRule(); 148 149 if (startYear != 0) { 150 Calendar start = new GregorianCalendar(startYear, Calendar.JANUARY, 1); 151 rangeRule.add(start.getTime(), rule); 152 } else { 153 rangeRule.add(rule); 154 } 155 if (endYear != 0) { 156 Date end = new GregorianCalendar(endYear, Calendar.DECEMBER, 31).getTime(); 157 rangeRule.add(end, null); 158 } 159 160 return rangeRule; 161 } 162 163 /* Constants for holidays that are common throughout the Western 164 * and Christian worlds.... */ 165 166 /** 167 * New Year's Day - January 1st 168 * @hide draft / provisional / internal are hidden on Android 169 */ 170 public static final SimpleHoliday NEW_YEARS_DAY = 171 new SimpleHoliday(Calendar.JANUARY, 1, "New Year's Day"); 172 173 /** 174 * Epiphany, January 6th 175 * @hide draft / provisional / internal are hidden on Android 176 */ 177 public static final SimpleHoliday EPIPHANY = 178 new SimpleHoliday(Calendar.JANUARY, 6, "Epiphany"); 179 180 /** 181 * May Day, May 1st 182 * @hide draft / provisional / internal are hidden on Android 183 */ 184 public static final SimpleHoliday MAY_DAY = 185 new SimpleHoliday(Calendar.MAY, 1, "May Day"); 186 187 /** 188 * Assumption, August 15th 189 * @hide draft / provisional / internal are hidden on Android 190 */ 191 public static final SimpleHoliday ASSUMPTION = 192 new SimpleHoliday(Calendar.AUGUST, 15, "Assumption"); 193 194 /** 195 * All Saints' Day, November 1st 196 * @hide draft / provisional / internal are hidden on Android 197 */ 198 public static final SimpleHoliday ALL_SAINTS_DAY = 199 new SimpleHoliday(Calendar.NOVEMBER, 1, "All Saints' Day"); 200 201 /** 202 * All Souls' Day, November 1st 203 * @hide draft / provisional / internal are hidden on Android 204 */ 205 public static final SimpleHoliday ALL_SOULS_DAY = 206 new SimpleHoliday(Calendar.NOVEMBER, 2, "All Souls' Day"); 207 208 /** 209 * Immaculate Conception, December 8th 210 * @hide draft / provisional / internal are hidden on Android 211 */ 212 public static final SimpleHoliday IMMACULATE_CONCEPTION = 213 new SimpleHoliday(Calendar.DECEMBER, 8, "Immaculate Conception"); 214 215 /** 216 * Christmas Eve, December 24th 217 * @hide draft / provisional / internal are hidden on Android 218 */ 219 public static final SimpleHoliday CHRISTMAS_EVE = 220 new SimpleHoliday(Calendar.DECEMBER, 24, "Christmas Eve"); 221 222 /** 223 * Christmas, December 25th 224 * @hide draft / provisional / internal are hidden on Android 225 */ 226 public static final SimpleHoliday CHRISTMAS = 227 new SimpleHoliday(Calendar.DECEMBER, 25, "Christmas"); 228 229 /** 230 * Boxing Day, December 26th 231 * @hide draft / provisional / internal are hidden on Android 232 */ 233 public static final SimpleHoliday BOXING_DAY = 234 new SimpleHoliday(Calendar.DECEMBER, 26, "Boxing Day"); 235 236 /** 237 * Saint Stephen's Day, December 26th 238 * @hide draft / provisional / internal are hidden on Android 239 */ 240 public static final SimpleHoliday ST_STEPHENS_DAY = 241 new SimpleHoliday(Calendar.DECEMBER, 26, "St. Stephen's Day"); 242 243 /** 244 * New Year's Eve, December 31st 245 * @hide draft / provisional / internal are hidden on Android 246 */ 247 public static final SimpleHoliday NEW_YEARS_EVE = 248 new SimpleHoliday(Calendar.DECEMBER, 31, "New Year's Eve"); 249 250 } 251