NumberUtil.java Source code

Java tutorial

Introduction

Here is the source code for NumberUtil.java

Source

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