LongFormatter.java
package org.xandercat.pmdb.util.format;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.text.ParseException;
/**
* Data formatter for Long values.
*
* @author Scott Arnold
*/
public class LongFormatter extends AbstractDataFormatter<Long> {
private NumberFormat basicLongFormat = NumberFormat.getNumberInstance();
private char decimalSeparator = DecimalFormatSymbols.getInstance().getDecimalSeparator();
public LongFormatter() {
basicLongFormat.setMaximumFractionDigits(0);
}
@Override
protected Long parse(String value) throws ParseException {
int decimalSeparatorIndex = value.indexOf(decimalSeparator);
if (decimalSeparatorIndex >= 0) {
// this helps ensure any floating point formatter will take precedence for numbers with decimals
throw new ParseException("LongFormatter will not parse number with a decimal separator: " + value, decimalSeparatorIndex);
}
return basicLongFormat.parse(value).longValue();
}
@Override
protected String getDisplayValue(Long value) {
return basicLongFormat.format(value.longValue());
}
@Override
protected String getSortValue(Long value) {
return value.toString();
}
}