Convert to numbers
/* * Copyright Javelin Software, All rights reserved. */ import java.math.*; /** * The NumberUtil is used as a Utility Class for Numbers * classes such as Integers and Doubles etc. * * @author Robin Sharp */ public class NumberUtil { /** * Returns the BigDecimal value n with trailing * zeroes removed. */ public static BigDecimal trim(BigDecimal n) { try { while (true) { n = n.setScale(n.scale()-1); } } catch (ArithmeticException e) { // no more trailing zeroes so exit. } return n; } /** * Returns the BigDecimal value n with exactly * 'prec' decimal places. * Zeroes are padded to the right of the decimal * point if necessary. */ public static BigDecimal format(BigDecimal n, int prec) { return n.setScale(prec, BigDecimal.ROUND_HALF_UP); } /** * Convert an Object of type Class to a Number. */ public static Object toObject( Class clazz, Object value ) { if( value == null ) return null; if( clazz == null ) return value; if( Boolean.class.isAssignableFrom( clazz ) ) return toBoolean( value ); if( Byte.class.isAssignableFrom( clazz ) ) return toByte( value ); if( Short.class.isAssignableFrom( clazz ) ) return toShort( value ); if( Integer.class.isAssignableFrom( clazz ) ) return toInteger( value ); if( Long.class.isAssignableFrom( clazz ) ) return toLong( value ); if( Float.class.isAssignableFrom( clazz ) ) return toFloat( value ); if( Double.class.isAssignableFrom( clazz ) ) return toDouble( value ); if( BigInteger.class.isAssignableFrom( clazz ) ) return toBigInteger( value ); if( BigDecimal.class.isAssignableFrom( clazz ) ) return toBigDecimal( value ); return value; } /** * Convert a Sting 'TRUE' to 1, otherwise 0. */ public static int valueOfBoolean( String string ) { return string != null && "TRUE".equalsIgnoreCase( string ) ? 1 : 0; } /** * Optimisation Code */ public static Boolean getBoolean( boolean bool ) { return bool ? Boolean.TRUE : Boolean.FALSE; } /** * Convert an Object to a Boolean. */ public static Boolean toBoolean( Object value ) { if( value == null ) return null; if( value instanceof Boolean ) return (Boolean)value; if( "TRUE".equalsIgnoreCase( value.toString() ) ) return Boolean.TRUE; if( "".equals( value.toString() ) ) return null; return Boolean.FALSE; } /** * Convert an Object to an Integer. */ public static Integer toInteger( Object value ) { if( value == null ) return null; if( value instanceof Integer ) return (Integer)value; if( value instanceof String ) { if( "".equals( (String)value ) ) return null; return new Integer( (String)value ); } if( value instanceof Number ) return new Integer( ((Number)value).intValue() ); return new Integer( value.toString() ); } /** * Convert an Object to a Long. */ public static Long toLong( Object value ) { if( value == null ) return null; if( value instanceof Long ) return (Long)value; if( value instanceof String ) { if( "".equals( (String)value ) ) return null; return new Long( (String)value ); } if( value instanceof Number ) return new Long( ((Number)value).shortValue() ); return new Long( value.toString() ); } /** * Convert an Object to a Short. */ public static Short toShort( Object value ) { if( value == null ) return null; if( value instanceof Short ) return (Short)value; if( value instanceof String ) { if( "".equals( (String)value ) ) return null; return new Short( (String)value ); } if( value instanceof Number ) return new Short( ((Number)value).shortValue() ); return new Short( value.toString() ); } /** * Convert an Object to a Byte. */ public static Byte toByte( Object value ) { if( value == null ) return null; if( value instanceof Byte ) return (Byte)value; if( value instanceof String ) { if( "".equals( (String)value ) ) return null; return new Byte( (String)value ); } if( value instanceof Number ) return new Byte( ((Number)value).byteValue() ); return new Byte( value.toString() ); } /** * Convert an Object to a Float. */ public static Float toFloat( Object value ) { if( value == null ) return null; if( value instanceof Float ) return (Float)value; if( value instanceof String ) { if( "".equals( (String)value ) ) return null; return new Float( (String)value ); } if( value instanceof Number ) return new Float( ((Number)value).floatValue() ); return new Float( value.toString() ); } /** * Convert an Object to a Double. */ public static Double toDouble( Object value ) { if( value == null ) return null; if( value instanceof Double ) return (Double)value; if( value instanceof String ) { if( "".equals( (String)value ) ) return null; return new Double( (String)value ); } if( value instanceof Number ) return new Double( ((Number)value).doubleValue() ); return new Double( value.toString() ); } /** * Convert an Object to a BigInteger. */ public static BigInteger toBigInteger( Object value ) { if( value == null ) return null; if( value instanceof BigInteger ) return (BigInteger)value; if( value instanceof String ) { if( "".equals( (String)value ) ) return null; return new BigInteger( (String)value ); } return new BigInteger( value.toString() ); } /** * Convert an Object to a BigDecimal. */ public static BigDecimal toBigDecimal( Object value ) { if( value == null ) return null; if( value instanceof BigDecimal ) return (BigDecimal)value; if( value instanceof String ) { if( "".equals( (String)value ) ) return null; return new BigDecimal( (String)value ); } if( value instanceof Number ) return new BigDecimal( ((Number)value).doubleValue() ); return new BigDecimal( value.toString() ); } /** * Convert an Object to a Boolean. */ public static boolean booleanValue( Object value ) { if( value == null ) return false; if( value instanceof Boolean ) return ((Boolean)value).booleanValue(); if( value instanceof Number ) return ((Number)value).intValue() != 0; return "TRUE".equalsIgnoreCase( value.toString() ); } /** * Convert an Object to an int, or 0 if it is null. */ public static int intValue( Object value ) { if( value == null ) return 0; return toInteger( value ).intValue(); } /** * Convert an Object to a long, or 0 if it is null. */ public static long longValue( Object value ) { if( value == null ) return 0L; return toLong( value ).longValue(); } /** * Convert an Object to a short, or 0 if it is null. */ public static short shortValue( Object value ) { if( value == null ) return 0; return toShort( value ).shortValue(); } /** * Convert an Object to a byte, or 0 if it is null. */ public static byte byteValue( Object value ) { if( value == null ) return 0; return toByte( value ).byteValue(); } /** * Convert an Object to a float, or 0 if it is null. */ public static float floatValue( Object value ) { if( value == null ) return 0.0f; return toFloat( value ).floatValue(); } /** * Convert an Object to a double, or 0 if it is null. */ public static double doubleValue( Object value ) { if( value == null ) return 0.0; return toDouble( value ).doubleValue(); } }