/** * in order to transform the number "1234567.89" to string 123,456.89 */ public static String formatNumber(String s, Character thousandsSeparator, Character decimalSeparator) { if (s == null) { return null; } String result = s; int decimalIndex = s.indexOf("."); //$NON-NLS-1$ if (decimalIndex == -1) { if (thousandsSeparator != null) { return formatNumber(result, thousandsSeparator); } else { return result; } } if (thousandsSeparator != null) { result = formatNumber(s.substring(0, decimalIndex), thousandsSeparator); } else { result = s.substring(0, decimalIndex); } if (decimalSeparator != null) { result += (s.substring(decimalIndex)).replace('.', decimalSeparator); } else { result += s.substring(decimalIndex); } return result; }
/** * in order to transform the number "1234567.89" to string 123,456.89 */ public static String formatNumber(String s, Character thousandsSeparator, Character decimalSeparator) { if (s == null) { return null; } String result = s; int decimalIndex = s.indexOf("."); //$NON-NLS-1$ if (decimalIndex == -1) { if (thousandsSeparator != null) { return formatNumber(result, thousandsSeparator); } else { return result; } } if (thousandsSeparator != null) { result = formatNumber(s.substring(0, decimalIndex), thousandsSeparator); } else { result = s.substring(0, decimalIndex); } if (decimalSeparator != null) { result += (s.substring(decimalIndex)).replace('.', decimalSeparator); } else { result += s.substring(decimalIndex); } return result; }
@Override public String convertToDatum(T value) { if (value == null) { return null; } if (thousandsSepChar != null || decimalSepChar != null) { return FormatterUtils.formatNumber(new BigDecimal(String.valueOf(value)).toPlainString(), thousandsSepChar, decimalSepChar); } else { if (value instanceof BigDecimal) { String precision = field.getProp(SchemaConstants.TALEND_COLUMN_PRECISION); if (precision != null) { return ((BigDecimal) value).setScale(Integer.valueOf(precision), RoundingMode.HALF_UP).toPlainString(); } else { return ((BigDecimal) value).toPlainString(); } } else if (AvroUtils.isSameType(AvroUtils._decimal(), AvroUtils.unwrapIfNullable(field.schema()))) { String precision = field.getProp(SchemaConstants.TALEND_COLUMN_PRECISION); if (precision != null) { return new BigDecimal(String.valueOf(value)).setScale(Integer.valueOf(precision), RoundingMode.HALF_UP) .toPlainString(); } } return String.valueOf(value); } }