return toNumber(sourceType, targetType, (Number)value); return toNumber(sourceType, targetType, ((Boolean)value).booleanValue() ? ONE : ZERO); return handleMissing(targetType); final NumberFormat format = getFormat(); number = parse(sourceType, targetType, stringValue, format); } else { if (log().isDebugEnabled()) { log().debug(" No NumberFormat, using default conversion"); number = toNumber(sourceType, targetType, stringValue); return toNumber(sourceType, targetType, number);
/** * Provide a String representation of this number converter. * * @return A String representation of this number converter */ @Override public String toString() { final StringBuilder buffer = new StringBuilder(); buffer.append(toString(getClass())); buffer.append("[UseDefault="); buffer.append(isUseDefault()); buffer.append(", UseLocaleFormat="); buffer.append(useLocaleFormat); if (pattern != null) { buffer.append(", Pattern="); buffer.append(pattern); } if (locale != null) { buffer.append(", Locale="); buffer.append(locale); } buffer.append(']'); return buffer.toString(); }
/** * Construct a <code>java.lang.Number</code> <i>Converter</i> that returns * a default value if an error occurs. * * @param allowDecimals Indicates whether decimals are allowed * @param defaultValue The default value to be returned */ public NumberConverter(final boolean allowDecimals, final Object defaultValue) { super(); this.allowDecimals = allowDecimals; setDefaultValue(defaultValue); }
/** * Convert an input Number object into a String. * * @param value The input value to be converted * @return the converted String value. * @throws Throwable if an error occurs converting to a String */ @Override protected String convertToString(final Object value) throws Throwable { String result = null; if (useLocaleFormat && value instanceof Number) { final NumberFormat format = getFormat(); format.setGroupingUsed(false); result = format.format(value); if (log().isDebugEnabled()) { log().debug(" Converted to String using format '" + result + "'"); } } else { result = value.toString(); if (log().isDebugEnabled()) { log().debug(" Converted to String using toString() '" + result + "'"); } } return result; }
/** * Convert a String into a <code>Number</code> object. * @param sourceType the source type of the conversion * @param targetType The type to convert the value to * @param value The String date value. * @param format The NumberFormat to parse the String value. * * @return The converted Number object. * @throws ConversionException if the String cannot be converted. */ private Number parse(final Class<?> sourceType, final Class<?> targetType, final String value, final NumberFormat format) { final ParsePosition pos = new ParsePosition(0); final Number parsedNumber = format.parse(value, pos); if (pos.getErrorIndex() >= 0 || pos.getIndex() != value.length() || parsedNumber == null) { String msg = "Error converting from '" + toString(sourceType) + "' to '" + toString(targetType) + "'"; if (format instanceof DecimalFormat) { msg += " using pattern '" + ((DecimalFormat)format).toPattern() + "'"; } if (locale != null) { msg += " for locale=[" + locale + "]"; } if (log().isDebugEnabled()) { log().debug(" " + msg); } throw new ConversionException(msg); } return parsedNumber; }
/** * Set the Locale for the <i>Converter</i>. * * @param locale The locale to use for conversion */ public void setLocale(final Locale locale) { this.locale = locale; setUseLocaleFormat(true); }
if (pattern != null) { if (locale == null) { if (log().isDebugEnabled()) { log().debug(" Using pattern '" + pattern + "'"); if (log().isDebugEnabled()) { log().debug(" Using pattern '" + pattern + "'" + " with Locale[" + locale + "]"); if (log().isDebugEnabled()) { log().debug(" Using default Locale format"); if (log().isDebugEnabled()) { log().debug(" Using Locale[" + locale + "] format");
/** * Convert a String into a <code>Number</code> object. * @param sourceType the source type of the conversion * @param targetType The type to convert the value to * @param value The String date value. * @param format The NumberFormat to parse the String value. * * @return The converted Number object. * @throws ConversionException if the String cannot be converted. */ private Number parse(final Class<?> sourceType, final Class<?> targetType, final String value, final NumberFormat format) { final ParsePosition pos = new ParsePosition(0); final Number parsedNumber = format.parse(value, pos); if (pos.getErrorIndex() >= 0 || pos.getIndex() != value.length() || parsedNumber == null) { String msg = "Error converting from '" + toString(sourceType) + "' to '" + toString(targetType) + "'"; if (format instanceof DecimalFormat) { msg += " using pattern '" + ((DecimalFormat)format).toPattern() + "'"; } if (locale != null) { msg += " for locale=[" + locale + "]"; } if (log().isDebugEnabled()) { log().debug(" " + msg); } throw new ConversionException(msg); } return parsedNumber; }
/** * Convert an input Number object into a String. * * @param value The input value to be converted * @return the converted String value. * @throws Throwable if an error occurs converting to a String */ @Override protected String convertToString(final Object value) throws Throwable { String result = null; if (useLocaleFormat && value instanceof Number) { final NumberFormat format = getFormat(); format.setGroupingUsed(false); result = format.format(value); if (log().isDebugEnabled()) { log().debug(" Converted to String using format '" + result + "'"); } } else { result = value.toString(); if (log().isDebugEnabled()) { log().debug(" Converted to String using toString() '" + result + "'"); } } return result; }
/** * Set a number format pattern to use to convert * Numbers to/from a <code>java.lang.String</code>. * <p> * See <code>java.text.DecimalFormat</code> for details * of how to specify the pattern. * * @param pattern The format pattern. */ public void setPattern(final String pattern) { this.pattern = pattern; setUseLocaleFormat(true); }
if (pattern != null) { if (locale == null) { if (log().isDebugEnabled()) { log().debug(" Using pattern '" + pattern + "'"); if (log().isDebugEnabled()) { log().debug(" Using pattern '" + pattern + "'" + " with Locale[" + locale + "]"); if (log().isDebugEnabled()) { log().debug(" Using default Locale format"); if (log().isDebugEnabled()) { log().debug(" Using Locale[" + locale + "] format");
return toNumber(sourceType, targetType, (Number)value); return toNumber(sourceType, targetType, ((Boolean)value).booleanValue() ? ONE : ZERO); return handleMissing(targetType); final NumberFormat format = getFormat(); number = parse(sourceType, targetType, stringValue, format); } else { if (log().isDebugEnabled()) { log().debug(" No NumberFormat, using default conversion"); number = toNumber(sourceType, targetType, stringValue); return toNumber(sourceType, targetType, number);
/** * Provide a String representation of this number converter. * * @return A String representation of this number converter */ @Override public String toString() { final StringBuilder buffer = new StringBuilder(); buffer.append(toString(getClass())); buffer.append("[UseDefault="); buffer.append(isUseDefault()); buffer.append(", UseLocaleFormat="); buffer.append(useLocaleFormat); if (pattern != null) { buffer.append(", Pattern="); buffer.append(pattern); } if (locale != null) { buffer.append(", Locale="); buffer.append(locale); } buffer.append(']'); return buffer.toString(); }
/** * Convert an input Number object into a String. * * @param value The input value to be converted * @return the converted String value. * @throws Throwable if an error occurs converting to a String */ protected String convertToString(Object value) throws Throwable { String result = null; if (useLocaleFormat && value instanceof Number) { NumberFormat format = getFormat(); format.setGroupingUsed(false); result = format.format(value); if (log().isDebugEnabled()) { log().debug(" Converted to String using format '" + result + "'"); } } else { result = value.toString(); if (log().isDebugEnabled()) { log().debug(" Converted to String using toString() '" + result + "'"); } } return result; }
/** * Set the Locale for the <i>Converter</i>. * * @param locale The locale to use for conversion */ public void setLocale(final Locale locale) { this.locale = locale; setUseLocaleFormat(true); }
/** * Construct a <code>java.lang.Number</code> <i>Converter</i> that returns * a default value if an error occurs. * * @param allowDecimals Indicates whether decimals are allowed * @param defaultValue The default value to be returned */ public NumberConverter(final boolean allowDecimals, final Object defaultValue) { super(); this.allowDecimals = allowDecimals; setDefaultValue(defaultValue); }
if (pattern != null) { if (locale == null) { if (log().isDebugEnabled()) { log().debug(" Using pattern '" + pattern + "'"); if (log().isDebugEnabled()) { log().debug(" Using pattern '" + pattern + "'" + " with Locale[" + locale + "]"); if (log().isDebugEnabled()) { log().debug(" Using default Locale format"); if (log().isDebugEnabled()) { log().debug(" Using Locale[" + locale + "] format");
return toNumber(sourceType, targetType, (Number)value); return toNumber(sourceType, targetType, ((Boolean)value).booleanValue() ? ONE : ZERO); return handleMissing(targetType); NumberFormat format = getFormat(); number = parse(sourceType, targetType, stringValue, format); } else { if (log().isDebugEnabled()) { log().debug(" No NumberFormat, using default conversion"); number = toNumber(sourceType, targetType, stringValue); return toNumber(sourceType, targetType, number);