package de.invesdwin.util.math; import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.annotation.concurrent.Immutable; import de.invesdwin.util.lang.ADelegateComparator; import de.invesdwin.util.math.decimal.ADecimal; @Immutable public final class BigIntegers { public static final ADelegateComparator<BigInteger> COMPARATOR = new ADelegateComparator<BigInteger>() { @Override protected Comparable<?> getCompareCriteria(final BigInteger e) { return e; } }; private BigIntegers() {} public static BigInteger valueOf(final ADecimal<?> value) { if (value == null) { return null; } else { return value.bigIntegerValue(); } } public static BigInteger valueOf(final Number number) { if (number == null) { return null; } else if (number instanceof BigInteger) { return (BigInteger) number; } else { try { return new BigInteger(number.toString()); } catch (final NumberFormatException e) { return valueOf(number.longValue()); } } } public static List<BigInteger> valueOf(final Number... numbers) { return valueOf(Arrays.asList(numbers)); } public static List<BigInteger> valueOf(final List<? extends Number> numbers) { final List<BigInteger> bigDecimals = new ArrayList<BigInteger>(); for (final Number n : numbers) { bigDecimals.add(valueOf(n)); } return bigDecimals; } }