MoneyDTO.java

package com.tradecloud.dto.treasury;

import com.tradecloud.domain.base.utils.MathUtils;
import com.tradecloud.domain.common.Currency;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * Created by ds on 9/23/14.
 */
public class MoneyDTO implements Serializable{

    private Currency currency;
    BigDecimal value;

    public MoneyDTO(Currency currency, BigDecimal value) {
        this.currency = currency;
        this.value = value;
    }

    public MoneyDTO() {
    }

    public BigDecimal getValue() {
        return value;
    }

    public void setValue(BigDecimal value) {
        this.value = value;
    }

    public Currency getCurrency() {
        return currency;
    }

    public void setCurrency(Currency currency) {
        this.currency = currency;
    }

    @Override
    public String toString() {
        return "MoneyDTO{" +
                "currency=" + currency +
                ", value=" + value +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof MoneyDTO)) return false;

        MoneyDTO moneyDTO = (MoneyDTO) o;

        if (currency != null ? !currency.equals(moneyDTO.currency) : moneyDTO.currency != null) return false;
        if (value != null ? !value.equals(moneyDTO.value) : moneyDTO.value != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = currency != null ? currency.hashCode() : 0;
        result = 31 * result + (value != null ? value.hashCode() : 0);
        return result;
    }

    public MoneyDTO duplicate() {

        return new MoneyDTO(currency, value.add(BigDecimal.ZERO));
    }

    //we show less decimals places, on the screen.
    public void setRoundedAmountValue(BigDecimal newValue) {
        if (newValue != null && !MathUtils.areNumbersCloselyEqual(value, newValue, 2)) {
            value = newValue;
        }
        if(newValue==null){
            value = newValue;
        }

    }

    public BigDecimal getRoundedAmountValue(){
        return value;
    }

}