CalculatedCostingCell.java

package com.tradecloud.domain.document.invoice;

import com.tradecloud.common.base.HibernateUtils;
import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.costing.CostLine;
import com.tradecloud.domain.costing.VatType;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 *
 */
public class CalculatedCostingCell implements Comparable<CalculatedCostingCell>, CostingCell {

    private BigDecimal transactionAmount;
    private Currency transactionCurrency;
    @NotNull
    @ManyToOne(optional = false)
    private CostLine costLine;
    private BigDecimal spotRate;
    private BigDecimal forwardRate;
    private Date settlementDate;
    //TODO: Costing team figure out if this is ok??
    private BigDecimal percentage;

    @Override
    public BigDecimal getTransactionAmount() {
        return transactionAmount;
    }

    @Override
    public void setTransactionAmount(BigDecimal transactionAmount) {
        this.transactionAmount = transactionAmount;
    }

    public CostLine getCostLine() {
        return costLine;
    }

    public void setCostLine(CostLine costLine) {
        this.costLine = costLine;
    }

    @Override
    public String getCode() {
        return costLine.getCostLineTemplate().getCode();
    }

    @Override
    public Currency getTransactionCurrency() {
        return transactionCurrency;
    }

    @Override
    public void setTransactionCurrency(Currency transactionCurrency) {
        this.transactionCurrency = transactionCurrency;
    }

    @Override
    public void setSpotRate(BigDecimal spotRate) {
        this.spotRate = spotRate;
    }

    @Override
    public void setForwardRate(BigDecimal forwardRate) {
        this.forwardRate = forwardRate;
    }

    @Override
    public BigDecimal getSpotRate() {
        return spotRate;
    }

    @Override
    public BigDecimal getForwardRate() {
        return forwardRate;
    }

    @Override
    public Date getSettlementDate() {
        return settlementDate;
    }

    @Override
    public void setSettlementDate(Date settlementDate) {
        this.settlementDate = settlementDate;
    }

    @Override
    public boolean isOverridden() {
        //cannot override CalculatedCostingCell
        return false;
    }

    @Override
    public void setOverridden(boolean overridden) {
        //do nothing for this
    }

    @Override
    public void setPercentage(BigDecimal percentage) {
        this.percentage = percentage;
    }

    @Override
    public BigDecimal getPercentage() {
        return percentage;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (this == obj) {
            return true;
        }
        if (!HibernateUtils.proxyClassEquals(this, obj)) {
            return false;
        }
        CalculatedCostingCell obj1 = (CalculatedCostingCell) obj;
        return new EqualsBuilder().append(getCostLine(), obj1.getCostLine())
                .append(getTransactionAmount(), obj1.getTransactionAmount()).append(getTransactionCurrency(), obj1.getTransactionCurrency())
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(getCostLine()).append(getTransactionAmount()).append(getTransactionCurrency()).toHashCode();
    }

    @Override
    public int compareTo(CalculatedCostingCell clcc) {
        return costLine.getCostLineTemplate().getName().compareTo(clcc.getCostLine().getCostLineTemplate().getName());
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this).append(costLine).append(transactionAmount).append(transactionCurrency)
                .append(spotRate).append(forwardRate).toString();
    }

    public boolean isPercentageOverridden() {
        //cannot override
        return false;
    }

    public void setPercentageOverridden(boolean percentageOverridden) {
        //cannot override
        return;
    }

    @Override
    public BigDecimal getInitialCostedValue() {
        //cannot override
        return BigDecimal.ZERO;
    }

    @Override
    public void setInitialCostedValue(BigDecimal initialCostedValue) {
        //cannot override
    }

    @Override
    public boolean isSpotRateOverridden() {
        return false;
    }

    @Override
    public boolean isForwardRateOverridden() {
        return false;
    }

    @Override
    public void setInitialSpotRate(BigDecimal spotRate) {

    }

    @Override
    public void setInitialForwardRate(BigDecimal forwardRate) {

    }

    @Override
    public void setSpotRateOverridden(boolean b) {
    }

    @Override
    public void setForwardRateOverridden(boolean b) {
    }

    @Override
    public BigDecimal getRateFeedSpotRate() {
        return null;
    }

    @Override
    public void setRateFeedSpotRate(BigDecimal rateFeedSpotRate) {

    }

    @Override
    public BigDecimal getRateFeedForwardRate() {
        return null;
    }

    @Override
    public void setRateFeedForwardRate(BigDecimal rateFeedForwardRate) {

    }

    @Override
    public BigDecimal getVat() {
        return null;
    }

    @Override
    public void setVat(BigDecimal vat) {

    }

    @Override
    public boolean showVat() {
        return false;
    }

    @Override
    public void setIntegratedVat(BigDecimal integratedVat) {

    }

    @Override
    public BigDecimal getIntegratedVat() {
        return null;
    }

    @Override
    public BigDecimal getVarianceAgainstEstimateCosting() {
        return null;
    }

    @Override
    public void setVarianceAgainstEstimateCosting(BigDecimal varianceAgainstEstimateCosting) {

    }

    @Override
    public BigDecimal getVarianceAgainstEstimate() {
        return null;
    }

    @Override
    public void setVarianceAgainstEstimate(BigDecimal varianceAgainstEstimate) {

    }

    @Override
    public BigDecimal getEstimateAmount() {
        return null;
    }

    @Override
    public void setEstimateAmount(BigDecimal estimateAmount) {

    }

    @Override
    public BigDecimal getEstimateCostingAmount() {
        return null;
    }

    @Override
    public void setEstimateCostingAmount(BigDecimal estimateCostingAmount) {

    }

    @Override
    public BigDecimal getCostingAmount() {
        return null;
    }

    @Override
    public void setCostingAmount(BigDecimal costingAmount) {

    }

    @Override
    public boolean isUseIntegratedRate() {
        return false;
    }

    @Override
    public void setUseIntegratedRate(boolean useIntegratedRate) {

    }

    @Override
    public void setDutiable(boolean dutiable) {

    }

    @Override
    public boolean isDutiable() {
        return false;
    }

    @Override
    public void setOverriddenVatType(boolean overriddenVatType) {

    }

    @Override
    public boolean isOverriddenVatType() {
        return false;
    }

    @Override
    public void setVatType(VatType vatType) {

    }

    @Override
    public VatType getVatType() {
        return null;
    }
}