/* | |
****************************************************************************** | |
* Copyright (C) 2007-2008, International Business Machines Corporation and * | |
* others. All Rights Reserved. * | |
****************************************************************************** | |
*/ | |
package com.ibm.icu.impl.duration; | |
/** | |
*/ | |
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); | |
/** | |
* Set 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 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); | |
/** | |
* 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); | |
} | |