MeasurementUtils.java

package com.tradecloud.domain.base.utils;

import com.tradecloud.domain.item.UnitOfMeasure;

import java.math.BigDecimal;

public class MeasurementUtils {

    public static BigDecimal convertToKg(BigDecimal numberToConvert, UnitOfMeasure measure) {
        return convertTo(numberToConvert, measure);
    }

    public static BigDecimal convertToM3(BigDecimal numberToConvert, UnitOfMeasure measure) {
        return convertTo(numberToConvert, measure);
    }

    private static BigDecimal convertTo(BigDecimal numberToConvert, UnitOfMeasure measure) {
        if (measure == null) {
            return BigDecimal.ZERO;
        }

        if (measure.convertToUnitType()) {
            // number already in correct unit.
            return numberToConvert;
        }
        final BigDecimal ratioToKg = measure.getRatio();
        if (MathUtils.areNumbersCloselyEqual(ratioToKg, BigDecimal.ZERO, 6)) {
            // no conversion return number as is.
            return numberToConvert;
        }

        return MathUtils.divideVA(numberToConvert, ratioToKg);
    }

}