CostDefinitionMetadata.java

package com.tradecloud.domain.costing;

import com.tradecloud.common.base.PersistenceBase;

/**
 * <p>
 * This defines the <em>user interfacing</em> behaviour (i.e.
 * mandatory/optional, editable/not, etc) of a particular cost line.
 * </p>
 */
public class CostDefinitionMetadata extends PersistenceBase {

    private static final long serialVersionUID = 1L;
    CostDefinition definition = null; // Needed for Hibernate's reverse mapping.
    private boolean tc2ccRatesOverridable = false;
    private boolean amountOverridable = false;
    private boolean percentageOverridable = false;
    private boolean percentageRequired = false;
    private boolean settlementDateBasisOverridable = false;
    private boolean settlementDateOverridable = false;
    private boolean transactionCurrencyOverridable = false;
    private boolean alwaysCalculableOptionVisible = false;
    private String amountAlgorithm = null;
    private String percentageAlgorithm = null;
    private boolean mandatory = false;

    public boolean isAlwaysCalculableOptionVisible() {
        return alwaysCalculableOptionVisible;
    }

    public void setAlwaysCalculableOptionVisible(boolean alwaysCalculableOptionVisible) {
        this.alwaysCalculableOptionVisible = alwaysCalculableOptionVisible;
    }

    public boolean isAmountOverridable() {
        return amountOverridable;
    }

    public void setAmountOverridable(boolean amountOverridable) {
        this.amountOverridable = amountOverridable;
    }

    public boolean isPercentageOverridable() {
        return percentageOverridable;
    }

    public void setPercentageOverridable(boolean percentageOverridable) {
        this.percentageOverridable = percentageOverridable;
    }

    public boolean isPercentageRequired() {
        return percentageRequired;
    }

    public void setPercentageRequired(boolean percentageRequired) {
        this.percentageRequired = percentageRequired;
    }

    public boolean isSettlementDateBasisOverridable() {
        return settlementDateBasisOverridable;
    }

    public void setSettlementDateBasisOverridable(boolean overridable) {
        this.settlementDateBasisOverridable = overridable;
    }

    public boolean isSettlementDateOverridable() {
        return settlementDateOverridable;
    }

    public void setSettlementDateOverridable(boolean settlementDateOverridable) {
        this.settlementDateOverridable = settlementDateOverridable;
    }

    public boolean isTc2ccRatesOverridable() {
        return tc2ccRatesOverridable;
    }

    public void setTc2ccRatesOverridable(boolean tc2ccRatesOverridable) {
        this.tc2ccRatesOverridable = tc2ccRatesOverridable;
    }

    public boolean isTransactionCurrencyOverridable() {
        return transactionCurrencyOverridable;
    }

    public void setTransactionCurrencyOverridable(boolean transactionCurrencyOverridable) {
        this.transactionCurrencyOverridable = transactionCurrencyOverridable;
    }

    public String getAmountAlgorithm() {
        return amountAlgorithm;
    }

    public void setAmountAlgorithm(String algorithm) {
        this.amountAlgorithm = algorithm;
    }

    public String getPercentageAlgorithm() {
        return percentageAlgorithm;
    }

    public void setPercentageAlgorithm(String algorithm) {
        this.percentageAlgorithm = algorithm;
    }

    public boolean isMandatory() {
        return mandatory;
    }

    public void setMandatory(boolean mandatory) {
        this.mandatory = mandatory;
    }

    /**
     * @return Returns the definition.
     */
    public CostDefinition getDefinition() {
        return definition;
    }

    /**
     * @param definition The definition to set.
     */
    /*
     * public void setDefinition( CostDefinition definition ) { this.definition = definition; }
     */
    public boolean equals(Object obj) {
        if (!(obj instanceof CostDefinitionMetadata))
            return false;
        CostDefinitionMetadata other = (CostDefinitionMetadata) obj;

        // First compare ids (if available)
        if (getId() != null && other.getId() != null)
            return getId().equals(other.getId());

        // Next compare business keys

        // Treat any null as NOT equal, so that we can load new "unidentified"
        // instances into a set without them replacing each other
        if (definition == null || other.definition == null)
            return false;

        return definition.equals(other.definition);
    }

    public int hashCode() {
        return definition != null ? definition.hashCode() : 0;
    }
}