105 lines
4.1 KiB
Java
105 lines
4.1 KiB
Java
![]() |
/* GENERATED SOURCE. DO NOT MODIFY. */
|
||
|
// © 2018 and later: Unicode, Inc. and others.
|
||
|
// License & terms of use: http://www.unicode.org/copyright.html
|
||
|
package android.icu.number;
|
||
|
|
||
|
import android.icu.impl.number.DecimalQuantity;
|
||
|
import android.icu.impl.number.DecimalQuantity_DualStorageBCD;
|
||
|
|
||
|
/**
|
||
|
* A NumberRangeFormatter that has a locale associated with it; this means .formatRange() methods are available.
|
||
|
*
|
||
|
* Instances of this class are immutable and thread-safe.
|
||
|
*
|
||
|
* @author sffc
|
||
|
* @see NumberRangeFormatter
|
||
|
*/
|
||
|
public class LocalizedNumberRangeFormatter extends NumberRangeFormatterSettings<LocalizedNumberRangeFormatter> {
|
||
|
|
||
|
private volatile NumberRangeFormatterImpl fImpl;
|
||
|
|
||
|
LocalizedNumberRangeFormatter(NumberRangeFormatterSettings<?> parent, int key, Object value) {
|
||
|
super(parent, key, value);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Format the given integers to a string using the settings specified in the NumberRangeFormatter fluent setting
|
||
|
* chain.
|
||
|
*
|
||
|
* @param first
|
||
|
* The first number in the range, usually to the left in LTR locales.
|
||
|
* @param second
|
||
|
* The second number in the range, usually to the right in LTR locales.
|
||
|
* @return A FormattedNumberRange object; call .toString() to get the string.
|
||
|
* @see NumberRangeFormatter
|
||
|
*/
|
||
|
public FormattedNumberRange formatRange(int first, int second) {
|
||
|
DecimalQuantity dq1 = new DecimalQuantity_DualStorageBCD(first);
|
||
|
DecimalQuantity dq2 = new DecimalQuantity_DualStorageBCD(second);
|
||
|
return formatImpl(dq1, dq2, first == second);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Format the given doubles to a string using the settings specified in the NumberRangeFormatter fluent setting
|
||
|
* chain.
|
||
|
*
|
||
|
* @param first
|
||
|
* The first number in the range, usually to the left in LTR locales.
|
||
|
* @param second
|
||
|
* The second number in the range, usually to the right in LTR locales.
|
||
|
* @return A FormattedNumberRange object; call .toString() to get the string.
|
||
|
* @see NumberRangeFormatter
|
||
|
*/
|
||
|
public FormattedNumberRange formatRange(double first, double second) {
|
||
|
DecimalQuantity dq1 = new DecimalQuantity_DualStorageBCD(first);
|
||
|
DecimalQuantity dq2 = new DecimalQuantity_DualStorageBCD(second);
|
||
|
// Note: double equality could be changed to epsilon equality later if there is demand.
|
||
|
// The epsilon should be set via an API method.
|
||
|
return formatImpl(dq1, dq2, first == second);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Format the given Numbers to a string using the settings specified in the NumberRangeFormatter fluent setting
|
||
|
* chain.
|
||
|
*
|
||
|
* @param first
|
||
|
* The first number in the range, usually to the left in LTR locales.
|
||
|
* @param second
|
||
|
* The second number in the range, usually to the right in LTR locales.
|
||
|
* @return A FormattedNumberRange object; call .toString() to get the string.
|
||
|
* @throws IllegalArgumentException if first or second is null
|
||
|
* @see NumberRangeFormatter
|
||
|
*/
|
||
|
public FormattedNumberRange formatRange(Number first, Number second) {
|
||
|
if (first == null || second == null) {
|
||
|
throw new IllegalArgumentException("Cannot format null values in range");
|
||
|
}
|
||
|
DecimalQuantity dq1 = new DecimalQuantity_DualStorageBCD(first);
|
||
|
DecimalQuantity dq2 = new DecimalQuantity_DualStorageBCD(second);
|
||
|
return formatImpl(dq1, dq2, first.equals(second));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Disassociate the locale from this formatter.
|
||
|
*
|
||
|
* @return The fluent chain.
|
||
|
* @hide draft / provisional / internal are hidden on Android
|
||
|
*/
|
||
|
public UnlocalizedNumberRangeFormatter withoutLocale() {
|
||
|
return new UnlocalizedNumberRangeFormatter(this, KEY_LOCALE, null);
|
||
|
}
|
||
|
|
||
|
FormattedNumberRange formatImpl(DecimalQuantity first, DecimalQuantity second, boolean equalBeforeRounding) {
|
||
|
if (fImpl == null) {
|
||
|
fImpl = new NumberRangeFormatterImpl(resolve());
|
||
|
}
|
||
|
return fImpl.format(first, second, equalBeforeRounding);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
LocalizedNumberRangeFormatter create(int key, Object value) {
|
||
|
return new LocalizedNumberRangeFormatter(this, key, value);
|
||
|
}
|
||
|
|
||
|
}
|