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