summaryrefslogtreecommitdiff
path: root/icu4j/main/classes
diff options
context:
space:
mode:
authorShane Carr <sffc@google.com>2017-05-18 21:57:13 +0000
committerFredrik Roubert <roubert@google.com>2017-07-06 14:36:53 +0200
commit1340c55a2129fc8a17728ee03711e678ad7f31d7 (patch)
treed1cc7abd2dbab47d89ef8bcf07a20a75f6886b04 /icu4j/main/classes
parent6ecdcbc7386b1554409c5957c5252983e0e61bbd (diff)
downloadicu-1340c55a2129fc8a17728ee03711e678ad7f31d7.tar.gz
Cherry-pick: ticket:13073 Exposing PluralRules as a setter on the number format property bag.
http://bugs.icu-project.org/trac/changeset/40122 Change-Id: I8dfc2b6b9f2d9fe733196f78752a3d8ab8eb027f
Diffstat (limited to 'icu4j/main/classes')
-rw-r--r--icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java16
-rw-r--r--icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java21
2 files changed, 34 insertions, 3 deletions
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java
index ef603bc6b..abf832425 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java
@@ -45,6 +45,14 @@ public class Endpoint {
// return format;
// }
+ public static interface IProperties {
+ static PluralRules DEFAULT_PLURAL_RULES = null;
+
+ public PluralRules getPluralRules();
+
+ public IProperties setPluralRules(PluralRules pluralRules);
+ }
+
public static Format fromBTA(Properties properties) {
return fromBTA(properties, getSymbols());
}
@@ -102,8 +110,8 @@ public class Endpoint {
if (CompactDecimalFormat.useCompactDecimalFormat(properties)) {
format.addBeforeFormat(CompactDecimalFormat.getInstance(symbols, properties));
} else if (ScientificFormat.useScientificNotation(properties)) {
- // TODO: Should the currency rounder or scientific rounder be used in this case?
- // For now, default to using the scientific rounder.
+ // TODO: Should the currency rounder or scientific rounder be used in this case?
+ // For now, default to using the scientific rounder.
format.addBeforeFormat(PositiveNegativeAffixFormat.getInstance(symbols, properties));
format.addBeforeFormat(ScientificFormat.getInstance(symbols, properties));
} else {
@@ -270,6 +278,10 @@ public class Endpoint {
};
private static PluralRules getPluralRules(ULocale uLocale, Properties properties) {
+ if (properties.getPluralRules() != null) {
+ return properties.getPluralRules();
+ }
+
// Backwards compatibility: CurrencyPluralInfo wraps its own copy of PluralRules
if (properties.getCurrencyPluralInfo() != null) {
return properties.getCurrencyPluralInfo().getPluralRules();
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java
index 948fc8eb5..49d3b16fd 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java
@@ -34,6 +34,7 @@ import com.ibm.icu.text.CompactDecimalFormat.CompactStyle;
import com.ibm.icu.text.CurrencyPluralInfo;
import com.ibm.icu.text.DecimalFormat.SignificantDigitsMode;
import com.ibm.icu.text.MeasureFormat.FormatWidth;
+import com.ibm.icu.text.PluralRules;
import com.ibm.icu.util.Currency;
import com.ibm.icu.util.Currency.CurrencyUsage;
import com.ibm.icu.util.MeasureUnit;
@@ -53,7 +54,8 @@ public class Properties
Parse.IProperties,
IncrementRounder.IProperties,
MagnitudeRounder.IProperties,
- SignificantDigitsRounder.IProperties {
+ SignificantDigitsRounder.IProperties,
+ Endpoint.IProperties {
private static final Properties DEFAULT = new Properties();
@@ -110,6 +112,7 @@ public class Properties
private transient ParseMode parseMode;
private transient boolean parseNoExponent;
private transient boolean parseToBigDecimal;
+ private transient PluralRules pluralRules;
private transient String positivePrefix;
private transient String positivePrefixPattern;
private transient String positiveSuffix;
@@ -170,6 +173,7 @@ public class Properties
parseMode = DEFAULT_PARSE_MODE;
parseNoExponent = DEFAULT_PARSE_NO_EXPONENT;
parseToBigDecimal = DEFAULT_PARSE_TO_BIG_DECIMAL;
+ pluralRules = DEFAULT_PLURAL_RULES;
positivePrefix = DEFAULT_POSITIVE_PREFIX;
positivePrefixPattern = DEFAULT_POSITIVE_PREFIX_PATTERN;
positiveSuffix = DEFAULT_POSITIVE_SUFFIX;
@@ -219,6 +223,7 @@ public class Properties
parseMode = other.parseMode;
parseNoExponent = other.parseNoExponent;
parseToBigDecimal = other.parseToBigDecimal;
+ pluralRules = other.pluralRules;
positivePrefix = other.positivePrefix;
positivePrefixPattern = other.positivePrefixPattern;
positiveSuffix = other.positiveSuffix;
@@ -269,6 +274,7 @@ public class Properties
eq = eq && _equalsHelper(parseMode, other.parseMode);
eq = eq && _equalsHelper(parseNoExponent, other.parseNoExponent);
eq = eq && _equalsHelper(parseToBigDecimal, other.parseToBigDecimal);
+ eq = eq && _equalsHelper(pluralRules, other.pluralRules);
eq = eq && _equalsHelper(positivePrefix, other.positivePrefix);
eq = eq && _equalsHelper(positivePrefixPattern, other.positivePrefixPattern);
eq = eq && _equalsHelper(positiveSuffix, other.positiveSuffix);
@@ -333,6 +339,7 @@ public class Properties
hashCode ^= _hashCodeHelper(parseMode);
hashCode ^= _hashCodeHelper(parseNoExponent);
hashCode ^= _hashCodeHelper(parseToBigDecimal);
+ hashCode ^= _hashCodeHelper(pluralRules);
hashCode ^= _hashCodeHelper(positivePrefix);
hashCode ^= _hashCodeHelper(positivePrefixPattern);
hashCode ^= _hashCodeHelper(positiveSuffix);
@@ -576,6 +583,11 @@ public class Properties
}
@Override
+ public PluralRules getPluralRules() {
+ return pluralRules;
+ }
+
+ @Override
public String getPositivePrefix() {
return positivePrefix;
}
@@ -673,6 +685,7 @@ public class Properties
@Override
public Properties setCompactCustomData(Map<String, Map<String, String>> compactCustomData) {
+ // TODO: compactCustomData is not immutable.
this.compactCustomData = compactCustomData;
return this;
}
@@ -894,6 +907,12 @@ public class Properties
}
@Override
+ public Properties setPluralRules(PluralRules pluralRules) {
+ this.pluralRules = pluralRules;
+ return this;
+ }
+
+ @Override
public Properties setPositivePrefix(String positivePrefix) {
this.positivePrefix = positivePrefix;
return this;