Data Type Java

/*
 * 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();
    }
 }