| // © 2016 and later: Unicode, Inc. and others. |
| // License & terms of use: http://www.unicode.org/copyright.html |
| /* |
| ****************************************************************************** |
| * Copyright (C) 2007-2009, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ****************************************************************************** |
| */ |
| |
| package com.ibm.icu.impl.duration; |
| |
| import java.util.TimeZone; |
| |
| /** |
| */ |
| public interface PeriodBuilderFactory { |
| |
| /** |
| * Sets the time units available for use. Default is all units. |
| * @param minUnit the smallest time unit available for use |
| * @param maxUnit the largest time unit available for use |
| * @return this factory |
| */ |
| PeriodBuilderFactory setAvailableUnitRange(TimeUnit minUnit, |
| TimeUnit maxUnit); |
| |
| /** |
| * Sets whether the time unit is available for use. |
| * @param unit the time unit |
| * @param available true if the unit is available for use |
| * @return this factory |
| */ |
| PeriodBuilderFactory setUnitIsAvailable(TimeUnit unit, boolean available); |
| |
| /** |
| * Sets the maximum value for the largest available time unit (as |
| * set in setUnits). Periods that represent a longer duration than |
| * this will be pinned to this value of that time unit and return |
| * true for 'isMoreThan'. Default is no limit. Setting a value of |
| * zero restores the default. |
| */ |
| PeriodBuilderFactory setMaxLimit(float maxLimit); |
| |
| /** |
| * Sets the minimum value for the smallest available time unit (as |
| * set in setUnits). Periods that represent a shorter duration than |
| * this will be pinned to this value of that time unit and return |
| * true for 'isLessThan'. Default is no limit. Setting a value of |
| * zero restores the default. |
| */ |
| PeriodBuilderFactory setMinLimit(float minLimit); |
| |
| /** |
| * Sets whether units with a value of zero are represented in a |
| * period when 'gaps' appear between time units, e.g. |
| * '2 hours, 0 minutes, and 33 seconds'. Default is to |
| * not represent these explicitly ('2 hours and 33 seconds'). |
| */ |
| PeriodBuilderFactory setAllowZero(boolean allow); |
| |
| /** |
| * Sets whether weeks are used with other units, or only when |
| * weeks are the only unit. For example '3 weeks and 2 days' |
| * versus '23 days'. Default is to use them alone only. |
| */ |
| PeriodBuilderFactory setWeeksAloneOnly(boolean aloneOnly); |
| |
| /** |
| * Sets whether milliseconds are allowed. This is only examined |
| * when milliseconds are an available field. The default is to allow |
| * milliseconds to display normally. |
| * <p> |
| * This is intended to be used to set locale-specific behavior. Typically clients will |
| * not call this API and instead call {@link #setLocale}. |
| * |
| * @param allow whether milliseconds should be allowed. |
| * @return a builder |
| */ |
| PeriodBuilderFactory setAllowMilliseconds(boolean allow); |
| |
| /** |
| * Sets the locale for the factory. Setting the locale can adjust |
| * the values for some or all of the other properties to reflect |
| * language or cultural conventions. Default is to use |
| * the default locale. |
| */ |
| PeriodBuilderFactory setLocale(String localeName); |
| |
| /** |
| * Sets the time zone for the factory. This can affect the timezone |
| * used for date computations. |
| * @param timeZone the timeZone |
| * @return a builder |
| */ |
| PeriodBuilderFactory setTimeZone(TimeZone timeZone); |
| /** |
| * Returns a builder that represents durations in terms of the single |
| * given TimeUnit. If the factory settings don't make the given unit |
| * available, this will return null. |
| * |
| * @param unit the single TimeUnit with which to represent times |
| * @return a builder |
| */ |
| PeriodBuilder getFixedUnitBuilder(TimeUnit unit); |
| |
| /** |
| * Returns a builder that represents durations in terms of the |
| * single largest period less than or equal to the duration. |
| * |
| * @return a builder |
| */ |
| PeriodBuilder getSingleUnitBuilder(); |
| |
| /** |
| * Returns a builder that formats the largest one or two time units, |
| * starting with the largest period less than or equal to the duration. |
| * It formats two periods if the first period has a count < 2 |
| * and the next period has a count >= 1. |
| * |
| * @return a builder |
| */ |
| PeriodBuilder getOneOrTwoUnitBuilder(); |
| |
| /** |
| * Returns a builder that formats up to the given number of time units, |
| * starting with the largest unit less than or equal to the |
| * duration. |
| * |
| * @return a builder |
| */ |
| PeriodBuilder getMultiUnitBuilder(int unitCount); |
| } |
| |