12ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* GENERATED SOURCE. DO NOT MODIFY. */
2f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// © 2016 and later: Unicode, Inc. and others.
3f86f25d102340da66b9c7cb6b2d5ecdc0de43ecfFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License
42ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/*
52ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *******************************************************************************
62ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Copyright (C) 1996-2014, International Business Machines Corporation and    *
72ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * others. All Rights Reserved.                                                *
82ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *******************************************************************************
92ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpackage android.icu.util;
112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Date;
122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Locale;
132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/**
152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <code>JapaneseCalendar</code> is a subclass of <code>GregorianCalendar</code>
162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * that numbers years and eras based on the reigns of the Japanese emperors.
172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * The Japanese calendar is identical to the Gregorian calendar in all respects
182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * except for the year and era.  The ascension of each  emperor to the throne
192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * begins a new era, and the years of that era are numbered starting with the
202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * year of ascension as year 1.
212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Note that in the year of an imperial ascension, there are two possible sets
232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * of year and era values: that for the old era and for the new.  For example, a
242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * new era began on January 7, 1989 AD.  Strictly speaking, the first six days
252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * of that year were in the Showa era, e.g. "January 6, 64 Showa", while the rest
262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * of the year was in the Heisei era, e.g. "January 7, 1 Heisei".  This class
272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * handles this distinction correctly when computing dates.  However, in lenient
282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * mode either form of date is acceptable as input.
292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * In modern times, eras have started on January 8, 1868 AD, Gregorian (Meiji),
312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei).  Constants
322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * for these eras, suitable for use in the <code>ERA</code> field, are provided
332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * in this class.  Note that the <em>number</em> used for each era is more or
342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * less arbitrary.  Currently, the era starting in 1053 AD is era #0; however this
352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * may change in the future as we add more historical data.  Use the predefined
362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * constants rather than using actual, absolute numbers.
372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * This class should not be subclassed.</p>
392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p>
402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * JapaneseCalendar usually should be instantiated using
412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * {@link android.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * with the tag <code>"@calendar=japanese"</code>.</p>
432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @see android.icu.util.GregorianCalendar
452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @see android.icu.util.Calendar
462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller *
472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @author Laura Werner
482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @author Alan Liu
492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpublic class JapaneseCalendar extends GregorianCalendar {
512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // jdk1.4.2 serialver
522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final long serialVersionUID = -2977189902603704691L;
532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //-------------------------------------------------------------------------
552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // Constructors...
562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //-------------------------------------------------------------------------
572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a default <code>JapaneseCalendar</code> using the current time
602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the default time zone with the default locale.
612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar() {
632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super();
642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> based on the current time
682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the given time zone with the default locale.
692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param zone the given time zone.
702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(TimeZone zone) {
722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super(zone);
732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> based on the current time
772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the default time zone with the given locale.
782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param aLocale the given locale.
792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(Locale aLocale) {
812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super(aLocale);
822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> based on the current time
862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the default time zone with the given locale.
872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale the given ulocale.
882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(ULocale locale) {
902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super(locale);
912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> based on the current time
952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the given time zone with the given locale.
962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param zone the given time zone.
982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param aLocale the given locale.
1002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
1012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(TimeZone zone, Locale aLocale) {
1022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super(zone, aLocale);
1032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
1062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> based on the current time
1072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the given time zone with the given locale.
1082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param zone the given time zone.
1102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param locale the given ulocale.
1122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
1132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(TimeZone zone, ULocale locale) {
1142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super(zone, locale);
1152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
1182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> with the given date set
1192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the default time zone with the default locale.
1202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param date      The date to which the new calendar is set.
1222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
1232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(Date date) {
1242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        this();
1252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        setTime(date);
1262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
1292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> with the given date set
1302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the default time zone with the default locale.
1312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param era       The imperial era used to set the calendar's {@link #ERA ERA} field.
1332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  Eras are numbered starting with the Tenki era, which
1342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  began in 1053 AD Gregorian, as era zero.  Recent
1352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  eras can be specified using the constants
1362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  {@link #MEIJI} (which started in 1868 AD),
1372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  {@link #TAISHO} (1912 AD),
1382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  {@link #SHOWA} (1926 AD), and
1392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  {@link #HEISEI} (1989 AD).
1402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
1422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  in terms of the era.
1432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
1452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  The value is 0-based. e.g., 0 for January.
1462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param date      The value used to set the calendar's DATE field.
1482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
1492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(int era, int year, int month, int date) {
1502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super(year, month, date);
1512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        set(ERA, era);
1522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
1552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> with the given date set
1562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * in the default time zone with the default locale.
1572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
1592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  in the era Heisei, the most current at the time this
1602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  class was last updated.
1612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
1632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  The value is 0-based. e.g., 0 for January.
1642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param date      The value used to set the calendar's {@link #DATE DATE} field.
1662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
1672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(int year, int month, int date) {
1682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super(year, month, date);
1692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        set(ERA, CURRENT_ERA);
1702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
1732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constructs a <code>JapaneseCalendar</code> with the given date
1742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * and time set for the default time zone with the default locale.
1752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field,
1772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  in the era Heisei, the most current at the time of this
1782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  writing.
1792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
1812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *                  The value is 0-based. e.g., 0 for January.
1822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
1842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
1862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
1882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     *
1892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
1902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
1912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public JapaneseCalendar(int year, int month, int date, int hour,
1922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                             int minute, int second)
1932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
1942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super(year, month, date, hour, minute, second);
1952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        set(ERA, CURRENT_ERA);
1962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //-------------------------------------------------------------------------
1992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // Use 1970 as the default value of EXTENDED_YEAR
2012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int GREGORIAN_EPOCH = 1970;
2022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
2042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
2052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected int handleGetExtendedYear() {
2062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // EXTENDED_YEAR in JapaneseCalendar is a Gregorian year
2072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // The default value of EXTENDED_YEAR is 1970 (Showa 45)
2082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int year;
2092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR &&
2102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            newerField(EXTENDED_YEAR, ERA) == EXTENDED_YEAR) {
2112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            year = internalGet(EXTENDED_YEAR, GREGORIAN_EPOCH);
2122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } else {
2132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // extended year is a gregorian year, where 1 = 1AD,  0 = 1BC, -1 = 2BC, etc
2142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            year = internalGet(YEAR, 1)                       // pin to minimum of year 1 (first year)
2152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    + ERAS[internalGet(ERA, CURRENT_ERA) * 3] // add gregorian starting year
2162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    - 1;                                      // Subtract one because year starts at 1
2172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
2182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return year;
2192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
2202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
2222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Called by handleComputeJulianDay.  Returns the default month (0-based) for the year,
2232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * taking year and era into account.  Defaults to 0 (JANUARY) for Gregorian.
2242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
2252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the default month
2262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #MONTH
227836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
2282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
2292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected int getDefaultMonthInYear(int extendedYear)
2302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    {
2312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      int era = internalGet(ERA, CURRENT_ERA);
2322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      //computeFields(status); // No need to compute fields here - expect the caller already did so.
2332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      // Find out if we are at the edge of an era
2352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      if(extendedYear == ERAS[era*3]) {
2362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return ERAS[(era*3)+1] // month..
2372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            -1; // return 0-based month
2382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      } else {
2392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return super.getDefaultMonthInYear(extendedYear);
2402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      }
2412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
2422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
2442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Called by handleComputeJulianDay.  Returns the default day (1-based) for the month,
2452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * taking currently-set year and era into account.  Defaults to 1 for Gregorian.
2462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
2472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @param month the month, as returned by getDefaultMonthInYear
2482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @return the default day of the month
2492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @see #DAY_OF_MONTH
250836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
2512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
2522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected int getDefaultDayInMonth(int extendedYear, int month) {
2532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      int era = internalGet(ERA, CURRENT_ERA);
2542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      if(extendedYear == ERAS[era*3]) { // if it is year 1..
2562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if(month == ((ERAS[(era*3)+1])-1)) { // if it is the emperor's first month..
2572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller          return ERAS[(era*3)+2]; // return the D_O_M of acession
2582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
2592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      }
2602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller      return super.getDefaultDayInMonth(extendedYear, month);
2622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
2632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
2652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
2662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected void handleComputeFields(int julianDay) {
2672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        super.handleComputeFields(julianDay);
2682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int year = internalGet(EXTENDED_YEAR);
2692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int low = 0;
2712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // Short circuit for recent years.  Most modern computations will
2732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // occur in the current era and won't require the binary search.
2742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // Note that if the year is == the current era year, then we use
2752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // the binary search to handle the month/dom comparison.
2762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (year > ERAS[ERAS.length - 3]) {
2772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            low = CURRENT_ERA;
2782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } else {
2792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            // Binary search
2802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int high = ERAS.length / 3;
2812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            while (low < high - 1) {
2832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                int i = (low + high) / 2;
2842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                int diff = year - ERAS[i*3];
2852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
2862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                // If years are the same, then compare the months, and if those
2872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                // are the same, compare days of month.  In the ERAS array
2882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                // months are 1-based for easier maintenance.
2892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (diff == 0) {
2902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    diff = internalGet(MONTH) - (ERAS[i*3 + 1] - 1);
2912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    if (diff == 0) {
2922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                        diff = internalGet(DAY_OF_MONTH) - ERAS[i*3 + 2];
2932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    }
2942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
2952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (diff >= 0) {
2962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    low = i;
2972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                } else {
2982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    high = i;
2992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
3002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
3012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
3022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
3032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // Now we've found the last era that starts before this date, so
3042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // adjust the year to count from the start of that era.  Note that
3052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // all dates before the first era will fall into the first era by
3062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        // the algorithm.
3072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        internalSet(ERA, low);
3082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        internalSet(YEAR, year - ERAS[low*3] + 1);
3092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
3102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
3112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    private static final int[] ERAS = {
3122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //  Gregorian date of each emperor's ascension
3132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //  Years are AD, months are 1-based.
3142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //  Year  Month Day
3152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         645,    6, 19,     // Taika
3162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         650,    2, 15,     // Hakuchi
3172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         672,    1,  1,     // Hakuho
3182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         686,    7, 20,     // Shucho
3192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         701,    3, 21,     // Taiho
3202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         704,    5, 10,     // Keiun
3212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         708,    1, 11,     // Wado
3222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         715,    9,  2,     // Reiki
3232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         717,   11, 17,     // Yoro
3242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         724,    2,  4,     // Jinki
3252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         729,    8,  5,     // Tempyo
3262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         749,    4, 14,     // Tempyo-kampo
3272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         749,    7,  2,     // Tempyo-shoho
3282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         757,    8, 18,     // Tempyo-hoji
3292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         765,    1,  7,     // Tempho-jingo
3302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         767,    8, 16,     // Jingo-keiun
3312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         770,   10,  1,     // Hoki
3322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         781,    1,  1,     // Ten-o
3332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         782,    8, 19,     // Enryaku
3342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         806,    5, 18,     // Daido
3352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         810,    9, 19,     // Konin
3362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         824,    1,  5,     // Tencho
3372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         834,    1,  3,     // Showa
3382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         848,    6, 13,     // Kajo
3392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         851,    4, 28,     // Ninju
3402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         854,   11, 30,     // Saiko
3412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         857,    2, 21,     // Tennan
3422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         859,    4, 15,     // Jogan
3432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         877,    4, 16,     // Genkei
3442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         885,    2, 21,     // Ninna
3452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         889,    4, 27,     // Kampyo
3462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         898,    4, 26,     // Shotai
3472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         901,    7, 15,     // Engi
3482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         923,    4, 11,     // Encho
3492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         931,    4, 26,     // Shohei
3502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         938,    5, 22,     // Tengyo
3512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         947,    4, 22,     // Tenryaku
3522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         957,   10, 27,     // Tentoku
3532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         961,    2, 16,     // Owa
3542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         964,    7, 10,     // Koho
3552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         968,    8, 13,     // Anna
3562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         970,    3, 25,     // Tenroku
3572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         973,   12, 20,     // Ten-en
3582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         976,    7, 13,     // Jogen
3592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         978,   11, 29,     // Tengen
3602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         983,    4, 15,     // Eikan
3612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         985,    4, 27,     // Kanna
3622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         987,    4,  5,     // Ei-en
3632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         989,    8,  8,     // Eiso
3642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         990,   11,  7,     // Shoryaku
3652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         995,    2, 22,     // Chotoku
3662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller         999,    1, 13,     // Choho
3672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1004,    7, 20,     // Kanko
3682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1012,   12, 25,     // Chowa
3692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1017,    4, 23,     // Kannin
3702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1021,    2,  2,     // Jian
3712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1024,    7, 13,     // Manju
3722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1028,    7, 25,     // Chogen
3732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1037,    4, 21,     // Choryaku
3742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1040,   11, 10,     // Chokyu
3752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1044,   11, 24,     // Kantoku
3762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1046,    4, 14,     // Eisho
3772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1053,    1, 11,     // Tengi
3782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1058,    8, 29,     // Kohei
3792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1065,    8,  2,     // Jiryaku
3802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1069,    4, 13,     // Enkyu
3812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1074,    8, 23,     // Shoho
3822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1077,   11, 17,     // Shoryaku
3832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1081,    2, 10,     // Eiho
3842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1084,    2,  7,     // Otoku
3852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1087,    4,  7,     // Kanji
3862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1094,   12, 15,     // Kaho
3872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1096,   12, 17,     // Eicho
3882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1097,   11, 21,     // Shotoku
3892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1099,    8, 28,     // Kowa
3902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1104,    2, 10,     // Choji
3912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1106,    4,  9,     // Kasho
3922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1108,    8,  3,     // Tennin
3932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1110,    7, 13,     // Ten-ei
3942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1113,    7, 13,     // Eikyu
3952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1118,    4,  3,     // Gen-ei
3962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1120,    4, 10,     // Hoan
3972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1124,    4,  3,     // Tenji
3982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1126,    1, 22,     // Daiji
3992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1131,    1, 29,     // Tensho
4002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1132,    8, 11,     // Chosho
4012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1135,    4, 27,     // Hoen
4022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1141,    7, 10,     // Eiji
4032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1142,    4, 28,     // Koji
4042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1144,    2, 23,     // Tenyo
4052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1145,    7, 22,     // Kyuan
4062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1151,    1, 26,     // Ninpei
4072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1154,   10, 28,     // Kyuju
4082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1156,    4, 27,     // Hogen
4092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1159,    4, 20,     // Heiji
4102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1160,    1, 10,     // Eiryaku
4112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1161,    9,  4,     // Oho
4122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1163,    3, 29,     // Chokan
4132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1165,    6,  5,     // Eiman
4142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1166,    8, 27,     // Nin-an
4152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1169,    4,  8,     // Kao
4162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1171,    4, 21,     // Shoan
4172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1175,    7, 28,     // Angen
4182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1177,    8,  4,     // Jisho
4192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1181,    7, 14,     // Yowa
4202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1182,    5, 27,     // Juei
4212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1184,    4, 16,     // Genryuku
4222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1185,    8, 14,     // Bunji
4232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1190,    4, 11,     // Kenkyu
4242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1199,    4, 27,     // Shoji
4252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1201,    2, 13,     // Kennin
4262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1204,    2, 20,     // Genkyu
4272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1206,    4, 27,     // Ken-ei
4282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1207,   10, 25,     // Shogen
4292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1211,    3,  9,     // Kenryaku
4302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1213,   12,  6,     // Kenpo
4312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1219,    4, 12,     // Shokyu
4322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1222,    4, 13,     // Joo
4332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1224,   11, 20,     // Gennin
4342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1225,    4, 20,     // Karoku
4352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1227,   12, 10,     // Antei
4362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1229,    3,  5,     // Kanki
4372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1232,    4,  2,     // Joei
4382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1233,    4, 15,     // Tempuku
4392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1234,   11,  5,     // Bunryaku
4402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1235,    9, 19,     // Katei
4412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1238,   11, 23,     // Ryakunin
4422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1239,    2,  7,     // En-o
4432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1240,    7, 16,     // Ninji
4442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1243,    2, 26,     // Kangen
4452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1247,    2, 28,     // Hoji
4462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1249,    3, 18,     // Kencho
4472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1256,   10,  5,     // Kogen
4482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1257,    3, 14,     // Shoka
4492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1259,    3, 26,     // Shogen
4502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1260,    4, 13,     // Bun-o
4512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1261,    2, 20,     // Kocho
4522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1264,    2, 28,     // Bun-ei
4532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1275,    4, 25,     // Kenji
4542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1278,    2, 29,     // Koan
4552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1288,    4, 28,     // Shoo
4562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1293,    8, 55,     // Einin
4572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1299,    4, 25,     // Shoan
4582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1302,   11, 21,     // Kengen
4592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1303,    8,  5,     // Kagen
4602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1306,   12, 14,     // Tokuji
4612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1308,   10,  9,     // Enkei
4622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1311,    4, 28,     // Ocho
4632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1312,    3, 20,     // Showa
4642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1317,    2,  3,     // Bunpo
4652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1319,    4, 28,     // Geno
4662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1321,    2, 23,     // Genkyo
4672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1324,   12,  9,     // Shochu
4682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1326,    4, 26,     // Kareki
4692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1329,    8, 29,     // Gentoku
4702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1331,    8,  9,     // Genko
4712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1334,    1, 29,     // Kemmu
4722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1336,    2, 29,     // Engen
4732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1340,    4, 28,     // Kokoku
4742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1346,   12,  8,     // Shohei
4752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1370,    7, 24,     // Kentoku
4762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1372,    4,  1,     // Bunch\u0169
4772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1375,    5, 27,     // Tenju
4782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1379,    3, 22,     // Koryaku
4792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1381,    2, 10,     // Kowa
4802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1384,    4, 28,     // Gench\u0169
4812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1384,    2, 27,     // Meitoku
4822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1387,    8, 23,     // Kakei
4832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1389,    2,  9,     // Koo
4842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1390,    3, 26,     // Meitoku
4852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1394,    7,  5,     // Oei
4862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1428,    4, 27,     // Shocho
4872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1429,    9,  5,     // Eikyo
4882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1441,    2, 17,     // Kakitsu
4892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1444,    2,  5,     // Bun-an
4902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1449,    7, 28,     // Hotoku
4912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1452,    7, 25,     // Kyotoku
4922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1455,    7, 25,     // Kosho
4932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1457,    9, 28,     // Choroku
4942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1460,   12, 21,     // Kansho
4952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1466,    2, 28,     // Bunsho
4962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1467,    3,  3,     // Onin
4972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1469,    4, 28,     // Bunmei
4982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1487,    7, 29,     // Chokyo
4992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1489,    8, 21,     // Entoku
5002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1492,    7, 19,     // Meio
5012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1501,    2, 29,     // Bunki
5022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1504,    2, 30,     // Eisho
5032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1521,    8, 23,     // Taiei
5042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1528,    8, 20,     // Kyoroku
5052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1532,    7, 29,     // Tenmon
5062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1555,   10, 23,     // Koji
5072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1558,    2, 28,     // Eiroku
5082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1570,    4, 23,     // Genki
5092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1573,    7, 28,     // Tensho
5102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1592,   12,  8,     // Bunroku
5112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1596,   10, 27,     // Keicho
5122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1615,    7, 13,     // Genwa
5132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1624,    2, 30,     // Kan-ei
5142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1644,   12, 16,     // Shoho
5152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1648,    2, 15,     // Keian
5162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1652,    9, 18,     // Shoo
5172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1655,    4, 13,     // Meiryaku
5182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1658,    7, 23,     // Manji
5192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1661,    4, 25,     // Kanbun
5202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1673,    9, 21,     // Enpo
5212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1681,    9, 29,     // Tenwa
5222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1684,    2, 21,     // Jokyo
5232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1688,    9, 30,     // Genroku
5242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1704,    3, 13,     // Hoei
5252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1711,    4, 25,     // Shotoku
5262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1716,    6, 22,     // Kyoho
5272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1736,    4, 28,     // Genbun
5282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1741,    2, 27,     // Kanpo
5292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1744,    2, 21,     // Enkyo
5302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1748,    7, 12,     // Kan-en
5312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1751,   10, 27,     // Horyaku
5322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1764,    6,  2,     // Meiwa
5332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1772,   11, 16,     // An-ei
5342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1781,    4,  2,     // Tenmei
5352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1789,    1, 25,     // Kansei
5362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1801,    2,  5,     // Kyowa
5372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1804,    2, 11,     // Bunka
5382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1818,    4, 22,     // Bunsei
5392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1830,   12, 10,     // Tenpo
5402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1844,   12,  2,     // Koka
5412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1848,    2, 28,     // Kaei
5422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1854,   11, 27,     // Ansei
5432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1860,    3, 18,     // Man-en
5442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1861,    2, 19,     // Bunkyu
5452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1864,    2, 20,     // Genji
5462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1865,    4,  7,     // Keio
5472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1868,    9,  8,     // Meiji
5482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1912,    7, 30,     // Taisho
5492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1926,   12, 25,     // Showa
5502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        1989,    1,  8,     // Heisei
5512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    };
5522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //-------------------------------------------------------------------------
5542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // Public constants for some of the recent eras that folks might use...
5552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    //-------------------------------------------------------------------------
5562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    // Constant for the current era.  This must be regularly updated.
5582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
5592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
5602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    static public final int CURRENT_ERA = (ERAS.length / 3) - 1;
5612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
5632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant for the era starting on Sept. 8, 1868 AD.
5642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
5652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    static public final int MEIJI = CURRENT_ERA - 3;
5662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
5682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant for the era starting on July 30, 1912 AD.
5692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
5702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    static public final int TAISHO = CURRENT_ERA - 2;
5712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
5732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant for the era starting on Dec. 25, 1926 AD.
5742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
5752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    static public final int SHOWA = CURRENT_ERA - 1;
5762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
5782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Constant for the era starting on Jan. 7, 1989 AD.
5792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
5802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    static public final int HEISEI = CURRENT_ERA;
5812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
5822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
5832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Override GregorianCalendar.  We should really handle YEAR_WOY and
5842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * EXTENDED_YEAR here too to implement the 1..5000000 range, but it's
5852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * not critical.
5862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
5872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @SuppressWarnings("fallthrough")
5882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected int handleGetLimit(int field, int limitType) {
5892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        switch (field) {
5902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case ERA:
5912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (limitType == MINIMUM || limitType == GREATEST_MINIMUM) {
5922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return 0;
5932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
5942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return CURRENT_ERA;
5952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        case YEAR:
5962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        {
5972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            switch (limitType) {
5982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            case MINIMUM:
5992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            case GREATEST_MINIMUM:
6002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return 1;
6012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            case LEAST_MAXIMUM:
6022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return 1;
6032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            case MAXIMUM:
6042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return super.handleGetLimit(field, MAXIMUM) - ERAS[CURRENT_ERA*3];
6052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
6062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            //Fall through to the default if not handled above
6072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
6082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        default:
6092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return super.handleGetLimit(field, limitType);
6102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
6112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
6122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
6142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * {@inheritDoc}
6152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
6162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public String getType() {
6172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return "japanese";
6182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
6192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
6212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * {@inheritDoc}
6222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * @deprecated This API is ICU internal only.
62393cf604e9dd0525f15bc0a7450b2a35f3884c298Neil Fuller     * @hide original deprecated declaration
624836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller     * @hide draft / provisional / internal are hidden on Android
6252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
6262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    @Deprecated
6272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public boolean haveDefaultCentury() {
6282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return false;
6292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
6302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
6322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * {@inheritDoc}
6332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
6342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public int getActualMaximum(int field) {
6352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (field == YEAR) {
6362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int era = get(Calendar.ERA);
6372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (era == CURRENT_ERA) {
6382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                // TODO: Investigate what value should be used here - revisit after 4.0.
6392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return handleGetLimit(YEAR, MAXIMUM);
6402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
6412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                int nextEraYear = ERAS[(era+1)*3];
6422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                int nextEraMonth = ERAS[(era+1)*3 + 1];
6432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                int nextEraDate = ERAS[(era+1)*3 + 2];
6442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                int maxYear = nextEraYear - ERAS[era*3] + 1; // 1-base
6462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (nextEraMonth == 1 && nextEraDate == 1) {
6472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    // Substract 1, because the next era starts at Jan 1
6482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    maxYear--;
6492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
6502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return maxYear;
6512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
6522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
6532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return super.getActualMaximum(field);
6542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
6552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
6562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller}
657