in freemarker-core/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java [61:212]
static {
HashMap<String, ParameterHandler> m = new HashMap<>();
m.put(PARAM_ROUNDING_MODE, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
RoundingMode parsedValue;
if (value.equals(PARAM_VALUE_RND_UP)) {
parsedValue = RoundingMode.UP;
} else if (value.equals(PARAM_VALUE_RND_DOWN)) {
parsedValue = RoundingMode.DOWN;
} else if (value.equals(PARAM_VALUE_RND_CEILING)) {
parsedValue = RoundingMode.CEILING;
} else if (value.equals(PARAM_VALUE_RND_FLOOR)) {
parsedValue = RoundingMode.FLOOR;
} else if (value.equals(PARAM_VALUE_RND_HALF_DOWN)) {
parsedValue = RoundingMode.HALF_DOWN;
} else if (value.equals(PARAM_VALUE_RND_HALF_EVEN)) {
parsedValue = RoundingMode.HALF_EVEN;
} else if (value.equals(PARAM_VALUE_RND_HALF_UP)) {
parsedValue = RoundingMode.HALF_UP;
} else if (value.equals(PARAM_VALUE_RND_UNNECESSARY)) {
parsedValue = RoundingMode.UNNECESSARY;
} else {
throw new InvalidParameterValueException("Should be one of: "
+ PARAM_VALUE_RND_UP + ", " + PARAM_VALUE_RND_DOWN + ", " + PARAM_VALUE_RND_CEILING + ", "
+ PARAM_VALUE_RND_FLOOR + ", " + PARAM_VALUE_RND_HALF_DOWN + ", "
+ PARAM_VALUE_RND_HALF_EVEN + ", " + PARAM_VALUE_RND_UNNECESSARY);
}
parser.roundingMode = parsedValue;
}
});
ParameterHandler multiplierParamHandler = new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
try {
parser.multiplier = Integer.valueOf(value);
} catch (NumberFormatException e) {
throw new InvalidParameterValueException("Malformed integer.");
}
}
};
m.put(PARAM_MULTIPLIER, multiplierParamHandler);
m.put(PARAM_MULTIPIER, multiplierParamHandler);
m.put(PARAM_DECIMAL_SEPARATOR, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
throw new InvalidParameterValueException("Must contain exactly 1 character.");
}
parser.symbols.setDecimalSeparator(value.charAt(0));
}
});
m.put(PARAM_MONETARY_DECIMAL_SEPARATOR, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
throw new InvalidParameterValueException("Must contain exactly 1 character.");
}
parser.symbols.setMonetaryDecimalSeparator(value.charAt(0));
}
});
m.put(PARAM_GROUP_SEPARATOR, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
throw new InvalidParameterValueException("Must contain exactly 1 character.");
}
parser.symbols.setGroupingSeparator(value.charAt(0));
}
});
m.put(PARAM_EXPONENT_SEPARATOR, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
parser.symbols.setExponentSeparator(value);
}
});
m.put(PARAM_MINUS_SIGN, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
throw new InvalidParameterValueException("Must contain exactly 1 character.");
}
parser.symbols.setMinusSign(value.charAt(0));
}
});
m.put(PARAM_INFINITY, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
parser.symbols.setInfinity(value);
}
});
m.put(PARAM_NAN, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
parser.symbols.setNaN(value);
}
});
m.put(PARAM_PERCENT, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
throw new InvalidParameterValueException("Must contain exactly 1 character.");
}
parser.symbols.setPercent(value.charAt(0));
}
});
m.put(PARAM_PER_MILL, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
throw new InvalidParameterValueException("Must contain exactly 1 character.");
}
parser.symbols.setPerMill(value.charAt(0));
}
});
m.put(PARAM_ZERO_DIGIT, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
throw new InvalidParameterValueException("Must contain exactly 1 character.");
}
parser.symbols.setZeroDigit(value.charAt(0));
}
});
m.put(PARAM_CURRENCY_CODE, new ParameterHandler() {
@Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
Currency currency;
try {
currency = Currency.getInstance(value);
} catch (IllegalArgumentException e) {
throw new InvalidParameterValueException("Not a known ISO 4217 code.");
}
parser.symbols.setCurrency(currency);
}
});
PARAM_HANDLERS = m;
}