package de.invesdwin.util.math; import java.math.BigDecimal; import java.math.MathContext; 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; import de.invesdwin.util.math.decimal.Decimal; import de.invesdwin.util.math.decimal.internal.impl.BigDecimalDecimalImplFactory; @Immutable public final class BigDecimals { public static final MathContext DEFAULT_MATH_CONTEXT = new MathContext(MathContext.DECIMAL128.getPrecision(), Decimal.DEFAULT_ROUNDING_MODE); public static final ADelegateComparator<BigDecimal> COMPARATOR = new ADelegateComparator<BigDecimal>() { @Override protected Comparable<?> getCompareCriteria(final BigDecimal e) { return e; } }; private BigDecimals() {} public static BigDecimal valueOf(final ADecimal<?> value) { if (value == null) { return null; } else { return value.bigDecimalValue(); } } public static BigDecimal valueOf(final Number number) { return BigDecimalDecimalImplFactory.toBigDecimal(number); } public static List<BigDecimal> valueOf(final Number... numbers) { return valueOf(Arrays.asList(numbers)); } public static List<BigDecimal> valueOf(final List<? extends Number> numbers) { final List<BigDecimal> bigDecimals = new ArrayList<BigDecimal>(); for (final Number n : numbers) { bigDecimals.add(valueOf(n)); } return bigDecimals; } public static BigDecimal nullToZero(final BigDecimal value) { if (value == null) { return BigDecimal.ZERO; } else { return value; } } }