FECDealLinkDTO.java

package com.tradecloud.dto.treasury;

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

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by ds on 10/17/14.
 */
public class FECDealLinkDTO {

    private DealDTO deal;
    private  FECDTO fec;
    private MoneyDTO rate=new MoneyDTO();
    private MoneyDTO amount=new MoneyDTO();
    private MoneyDTO fecCashFlow=new MoneyDTO();
    private MoneyDTO dealCashFlow=new MoneyDTO();
    private MoneyDTO amountAbleToLink =new MoneyDTO();
    private Boolean partialLink;
    private Date creationDate;
    private PercentageDTO percentage;
    private List<FECDealLinkDTO> allByDeal=new ArrayList<FECDealLinkDTO>();
    private BigDecimal formattedAmount;

    public DealDTO getDeal() {
        return deal;
    }

    public void setDeal(DealDTO deal) {
        this.deal = deal;
    }

    public FECDTO getFec() {
        return fec;
    }

    public void setFec(FECDTO fec) {
        this.fec = fec;
    }

    public MoneyDTO getRate() {
        return rate;
    }

    public void setRate(MoneyDTO rate) {
        this.rate = rate;
    }

    public MoneyDTO getAmount() {
        return amount;
    }

    public void setAmount(MoneyDTO amount) {
        this.amount = amount;
    }

    public Date getCreationDate() {
        return creationDate;
    }

    public void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }

    public PercentageDTO getPercentage() {
        return percentage;
    }

    public void setPercentage(PercentageDTO percentage) {
        this.percentage = percentage;
    }

    public List<FECDealLinkDTO> getAllByDeal() {
        return allByDeal;
    }

    public void setAllByDeal(List<FECDealLinkDTO> allByDeal) {
        this.allByDeal = allByDeal;
    }

    public MoneyDTO getFecCashFlow() {
        return fecCashFlow;
    }

    public MoneyDTO getDealCashFlow() {
        return dealCashFlow;
    }

    public void setDealCashFlow(MoneyDTO dealCashFlow) {
        this.dealCashFlow = dealCashFlow;
    }

    public MoneyDTO getAmountAbleToLink() {
        return amountAbleToLink;
    }

    public void setAmountAbleToLink(MoneyDTO amountToLink) {
        this.amountAbleToLink = amountToLink;
    }

    public Boolean getPartialLink() {
        return partialLink;
    }

    public void setPartialLink(Boolean partialLink) {
        this.partialLink = partialLink;
    }

    public void setFecCashFlow(MoneyDTO fecCashFlow) {
        this.fecCashFlow = fecCashFlow;
    }

    public FECDealLinkDTO getLink(Long id){
        for (FECDealLinkDTO fecDealLinkDTO : allByDeal) {
            if(fecDealLinkDTO.getFec().getId().equals(id)){
                return fecDealLinkDTO;
            }
        }
        return null;
    }

    public BigDecimal getFormattedAmount() {
        return amount.getValue().add(BigDecimal.ZERO);
    }

    public void setFormattedAmount(BigDecimal formattedAmount) {
        this.formattedAmount = formattedAmount;
        if (formattedAmount != null && !MathUtils.areNumbersCloselyEqual(amount.getValue(), formattedAmount, 2)) {
            amount.setValue(formattedAmount);
        }
    }

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

        FECDealLinkDTO that = (FECDealLinkDTO) o;

        if (amount != null ? !amount.equals(that.amount) : that.amount != null) return false;
        if (creationDate != null ? !creationDate.equals(that.creationDate) : that.creationDate != null) return false;
        if (deal != null ? !deal.equals(that.deal) : that.deal != null) return false;
        if (fec != null ? !fec.equals(that.fec) : that.fec != null) return false;
        if (percentage != null ? !percentage.equals(that.percentage) : that.percentage != null) return false;
        if (rate != null ? !rate.equals(that.rate) : that.rate != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = deal != null ? deal.hashCode() : 0;
        result = 31 * result + (fec != null ? fec.hashCode() : 0);
        result = 31 * result + (rate != null ? rate.hashCode() : 0);
        result = 31 * result + (amount != null ? amount.hashCode() : 0);
        result = 31 * result + (creationDate != null ? creationDate.hashCode() : 0);
        result = 31 * result + (percentage != null ? percentage.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "FECDealLinkDTO{" +
                "deal=" + deal +
                ", fec=" + fec +
                ", rate=" + rate +
                ", amount=" + amount +
                ", creationDate=" + creationDate +
                ", percentage=" + percentage +
                '}';
    }
}