12ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* GENERATED SOURCE. DO NOT MODIFY. */ 22ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* 32ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller****************************************************************************** 42ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller* Copyright (C) 2007-2009, International Business Machines Corporation and * 52ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller* others. All Rights Reserved. * 62ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller****************************************************************************** 72ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller*/ 82ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 92ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpackage android.icu.impl.duration; 102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.Locale; 122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport java.util.TimeZone; 132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/** 152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Abstract factory object used to create DurationFormatters. 162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * DurationFormatters are immutable once created. 172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p> 182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Setters on the factory mutate the factory and return it, 192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * for chaining. 202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * <p> 212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Subclasses override getFormatter to return a custom 222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * DurationFormatter. 232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerclass BasicDurationFormatterFactory implements DurationFormatterFactory { 252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private BasicPeriodFormatterService ps; 262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private PeriodFormatter formatter; 272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private PeriodBuilder builder; 282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private DateFormatter fallback; 292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private long fallbackLimit; 302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private String localeName; 312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private TimeZone timeZone; 322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller private BasicDurationFormatter f; // cache 332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Create a default formatter for the current locale and time zone. 362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller BasicDurationFormatterFactory(BasicPeriodFormatterService ps) { 382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.ps = ps; 392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.localeName = Locale.getDefault().toString(); 402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.timeZone = TimeZone.getDefault(); 412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Set the period formatter used by the factory. New formatters created 452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * with this factory will use the given period formatter. 462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return this BasicDurationFormatterFactory 482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public DurationFormatterFactory setPeriodFormatter( 502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller PeriodFormatter formatter) { 512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (formatter != this.formatter) { 522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.formatter = formatter; 532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller reset(); 542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return this; 562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Set the builder used by the factory. New formatters created 602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * with this factory will use the given locale. 612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @param builder the builder to use 632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return this BasicDurationFormatterFactory 642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public DurationFormatterFactory setPeriodBuilder(PeriodBuilder builder) { 662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (builder != this.builder) { 672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.builder = builder; 682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller reset(); 692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return this; 712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Set a fallback formatter for durations over a given limit. 752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @param fallback the fallback formatter to use, or null 772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return this BasicDurationFormatterFactory 782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public DurationFormatterFactory setFallback(DateFormatter fallback) { 802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller boolean doReset = fallback == null 812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller ? this.fallback != null 822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller : !fallback.equals(this.fallback); 832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (doReset) { 842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.fallback = fallback; 852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller reset(); 862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return this; 882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Set a fallback limit for durations over a given limit. 922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @param fallbackLimit the fallback limit to use, or 0 if none is desired. 942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return this BasicDurationFormatterFactory 952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public DurationFormatterFactory setFallbackLimit(long fallbackLimit) { 972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (fallbackLimit < 0) { 982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller fallbackLimit = 0; 992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (fallbackLimit != this.fallbackLimit) { 1012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.fallbackLimit = fallbackLimit; 1022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller reset(); 1032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return this; 1052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Set the name of the locale that will be used when 1092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * creating new formatters. 1102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 1112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @param localeName the name of the Locale 1122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return this BasicDurationFormatterFactory 1132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public DurationFormatterFactory setLocale(String localeName) { 1152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (!localeName.equals(this.localeName)) { 1162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.localeName = localeName; 1172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (builder != null) { 1182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller builder = builder.withLocale(localeName); 1192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (formatter != null) { 1212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller formatter = formatter.withLocale(localeName); 1222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller reset(); 1242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return this; 1262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Set the name of the locale that will be used when 1302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * creating new formatters. 1312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 1322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @param timeZone The time zone to use. 1332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return this BasicDurationFormatterFactory 1342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public DurationFormatterFactory setTimeZone(TimeZone timeZone) { 1362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (!timeZone.equals(this.timeZone)) { 1372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller this.timeZone = timeZone; 1382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (builder != null) { 1392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller builder = builder.withTimeZone(timeZone); 1402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller reset(); 1422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return this; 1442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Return a formatter based on this factory's current settings. 1482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 1492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return a BasicDurationFormatter 1502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public DurationFormatter getFormatter() { 1522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (f == null) { 1532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (fallback != null) { 1542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller fallback = fallback.withLocale(localeName).withTimeZone(timeZone); 1552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller formatter = getPeriodFormatter(); 1572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller builder = getPeriodBuilder(); 1582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller f = createFormatter(); 1602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return f; 1622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Return the current period formatter. 1662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 1672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return the current period formatter 1682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public PeriodFormatter getPeriodFormatter() { 1702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (formatter == null) { 1712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller formatter = ps.newPeriodFormatterFactory() 1722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller .setLocale(localeName) 1732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller .getFormatter(); 1742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return formatter; 1762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Return the current builder. 1802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 1812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return the current builder 1822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public PeriodBuilder getPeriodBuilder() { 1842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller if (builder == null) { 1852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller builder = ps.newPeriodBuilderFactory() 1862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller .setLocale(localeName) 1872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller .setTimeZone(timeZone) 1882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller .getSingleUnitBuilder(); 1892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return builder; 1912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 1922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 1932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 1942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Return the current fallback formatter. 1952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 1962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return the fallback formatter, or null if there is no fallback 1972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * formatter 1982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 1992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public DateFormatter getFallback() { 2002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return fallback; 2012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 2022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 2032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 2042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Return the current fallback formatter limit 2052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 2062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return the limit, or 0 if there is no fallback. 2072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 2082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public long getFallbackLimit() { 2092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return fallback == null ? 0 : fallbackLimit; 2102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 2112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 2122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 2132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Return the current locale name. 2142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 2152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return the current locale name 2162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 2172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public String getLocaleName() { 2182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return localeName; 2192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 2202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 2212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 2222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Return the current locale name. 2232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * 2242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * @return the current locale name 2252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 2262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller public TimeZone getTimeZone() { 2272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return timeZone; 2282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 2292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 2302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 2312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Create the formatter. All local fields are already initialized. 2322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 2332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller protected BasicDurationFormatter createFormatter() { 2342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller return new BasicDurationFormatter(formatter, builder, fallback, 2352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller fallbackLimit, localeName, 2362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller timeZone); 2372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 2382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller 2392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller /** 2402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Clear the cached formatter. Subclasses must call this if their 2412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * state has changed. This is automatically invoked by setBuilder, 2422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * setFormatter, setFallback, setLocaleName, and setTimeZone 2432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */ 2442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller protected void reset() { 2452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller f = null; 2462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller } 2472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller} 248