com.ibm.icu.util.SimpleHoliday Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of virtdata-lib-realer Show documentation
Show all versions of virtdata-lib-realer Show documentation
With inspiration from other libraries
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
/*
*******************************************************************************
* Copyright (C) 1996-2016, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.util;
import java.util.Date;
/**
* Note: The Holiday framework is a technology preview.
* Despite its age, is still draft API, and clients should treat it as such.
*
* A holiday whose date can be represented by a month, day, and optionally day of week
* in the Gregorian calendar.
*
* @draft ICU 2.8 (retainAll)
* @provisional This API might change or be removed in a future release.
*/
public class SimpleHoliday extends Holiday {
/**
* Construct an object representing a holiday
*
* @param month The month in which this holiday occurs (0-based)
* @param dayOfMonth The date within the month (1-based).
*
* @param name The name of this holiday. This string is used as a key
* to look up the holiday's name a resource bundle.
* If the name is not found in the resource bundle,
* getDisplayName will return this string instead.
*
* @see Holiday#getDisplayName(java.util.Locale)
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public SimpleHoliday(int month, int dayOfMonth, String name)
{
super(name, new SimpleDateRule(month, dayOfMonth));
}
/**
* Construct an object representing a holiday
*
* @param month The month in which this holiday occurs (0-based)
* @param dayOfMonth The date within the month (1-based).
*
* @param name The name of this holiday. This string is used as a key
* to look up the holiday's name a resource bundle.
* If the name is not found in the resource bundle,
* getDisplayName will return this string instead.
*
* @see Holiday#getDisplayName(java.util.Locale)
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public SimpleHoliday(int month, int dayOfMonth, String name,
int startYear)
{
super(name, rangeRule(startYear, 0, new SimpleDateRule(month, dayOfMonth)));
}
/**
* Construct an object representing a holiday
*
* @param month The month in which this holiday occurs (0-based)
* @param dayOfMonth The date within the month (1-based).
*
* @param name The name of this holiday. This string is used as a key
* to look up the holiday's name a resource bundle.
* If the name is not found in the resource bundle,
* getDisplayName will return this string instead.
*
* @see Holiday#getDisplayName(java.util.Locale)
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public SimpleHoliday(int month, int dayOfMonth, String name,
int startYear, int endYear)
{
super(name, rangeRule(startYear, endYear, new SimpleDateRule(month, dayOfMonth)));
}
/** // TODO: remove
* Construct an object representing a holiday
*
* @param month The month in which this holiday occurs (0-based)
*
* @param dayOfMonth A date within the month (1-based). The
* interpretation of this parameter depends on the value of
* dayOfWeek
.
*
* @param dayOfWeek The day of the week on which this holiday occurs.
* The following values are legal:
* - dayOfWeek == 0 - use dayOfMonth only
*
- dayOfWeek < 0 - use last -dayOfWeek before or on dayOfMonth
*
- dayOfWeek > 0 - use first dayOfWeek after or on dayOfMonth
*
*
* @param name The name of this holiday. This string is used as a key
* to look up the holiday's name a resource bundle.
* If the name is not found in the resource bundle,
* getDisplayName will return this string instead.
*
* @see Holiday#getDisplayName(java.util.Locale)
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name)
{
super(name, new SimpleDateRule(month, dayOfMonth,
dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
dayOfWeek > 0));
}
/**
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
int startYear)
{
super(name, rangeRule(startYear, 0,
new SimpleDateRule(month, dayOfMonth,
dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
dayOfWeek > 0)));
}
/**
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
int startYear, int endYear)
{
super(name, rangeRule(startYear, endYear,
new SimpleDateRule(month, dayOfMonth,
dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
dayOfWeek > 0)));
}
private static DateRule rangeRule(int startYear, int endYear, DateRule rule)
{
if (startYear == 0 && endYear == 0) {
return rule;
}
RangeDateRule rangeRule = new RangeDateRule();
if (startYear != 0) {
Calendar start = new GregorianCalendar(startYear, Calendar.JANUARY, 1);
rangeRule.add(start.getTime(), rule);
} else {
rangeRule.add(rule);
}
if (endYear != 0) {
Date end = new GregorianCalendar(endYear, Calendar.DECEMBER, 31).getTime();
rangeRule.add(end, null);
}
return rangeRule;
}
/* Constants for holidays that are common throughout the Western
* and Christian worlds.... */
/**
* New Year's Day - January 1st
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday NEW_YEARS_DAY =
new SimpleHoliday(Calendar.JANUARY, 1, "New Year's Day");
/**
* Epiphany, January 6th
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday EPIPHANY =
new SimpleHoliday(Calendar.JANUARY, 6, "Epiphany");
/**
* May Day, May 1st
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday MAY_DAY =
new SimpleHoliday(Calendar.MAY, 1, "May Day");
/**
* Assumption, August 15th
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday ASSUMPTION =
new SimpleHoliday(Calendar.AUGUST, 15, "Assumption");
/**
* All Saints' Day, November 1st
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday ALL_SAINTS_DAY =
new SimpleHoliday(Calendar.NOVEMBER, 1, "All Saints' Day");
/**
* All Souls' Day, November 1st
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday ALL_SOULS_DAY =
new SimpleHoliday(Calendar.NOVEMBER, 2, "All Souls' Day");
/**
* Immaculate Conception, December 8th
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday IMMACULATE_CONCEPTION =
new SimpleHoliday(Calendar.DECEMBER, 8, "Immaculate Conception");
/**
* Christmas Eve, December 24th
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday CHRISTMAS_EVE =
new SimpleHoliday(Calendar.DECEMBER, 24, "Christmas Eve");
/**
* Christmas, December 25th
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday CHRISTMAS =
new SimpleHoliday(Calendar.DECEMBER, 25, "Christmas");
/**
* Boxing Day, December 26th
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday BOXING_DAY =
new SimpleHoliday(Calendar.DECEMBER, 26, "Boxing Day");
/**
* Saint Stephen's Day, December 26th
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday ST_STEPHENS_DAY =
new SimpleHoliday(Calendar.DECEMBER, 26, "St. Stephen's Day");
/**
* New Year's Eve, December 31st
* @draft ICU 2.8
* @provisional This API might change or be removed in a future release.
*/
public static final SimpleHoliday NEW_YEARS_EVE =
new SimpleHoliday(Calendar.DECEMBER, 31, "New Year's Eve");
}