DealCreationPointConfig.java

package com.tradecloud.domain.configuration;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.model.ForexGroup;
import com.tradecloud.domain.model.deal.DealAcceptancePoint;
import com.tradecloud.domain.model.deal.DealCreationPoint;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

@Entity
@Table(name = "dealcreationpointconfig",
        uniqueConstraints = {@UniqueConstraint(columnNames = {"division_id", "forexgroup_id"})})
@Access(AccessType.FIELD)
public class DealCreationPointConfig extends PersistenceBase {

    @ManyToOne(fetch = FetchType.EAGER)
    @NotNull(message = "Division is required")
    private OrganisationalUnit division;

    @ManyToOne(fetch = FetchType.EAGER)
    @NotNull(message = "Forex group is required")
    private ForexGroup forexGroup;

    @NotNull(message = "Deal creation point is required")
    @Enumerated(EnumType.STRING)
    private DealCreationPoint dealCreationPoint;

    @Enumerated(EnumType.STRING)
    private DealAcceptancePoint dealAcceptancePoint;

    @NotNull(message = "UseEstimateOnActual is required")
    private boolean useEstimateOnActual;

    public DealCreationPointConfig() {
    }

    public OrganisationalUnit getDivision() {
        return division;
    }

    public DealCreationPointConfig(DealCreationPoint dealCreationPoint,
                                   OrganisationalUnit division, ForexGroup forexGroup,
                                   DealAcceptancePoint dealAcceptancePoint, boolean useEstimateRateOnActual) {
        this.dealCreationPoint = dealCreationPoint;
        this.division = division;
        this.forexGroup = forexGroup;
        this.dealAcceptancePoint = dealAcceptancePoint;
        this.useEstimateOnActual = useEstimateRateOnActual;
    }

    public void setDivision(OrganisationalUnit division) {
        this.division = division;
    }

    public ForexGroup getForexGroup() {
        return forexGroup;
    }

    public void setForexGroup(ForexGroup forexGroup) {
        this.forexGroup = forexGroup;
    }

    public DealAcceptancePoint getDealAcceptancePoint() {
        return dealAcceptancePoint;
    }

    public void setDealAcceptancePoint(DealAcceptancePoint dealAcceptancePoint) {
        this.dealAcceptancePoint = dealAcceptancePoint;
    }

    public DealCreationPoint getDealCreationPoint() {
        return dealCreationPoint;
    }

    public void setDealCreationPoint(DealCreationPoint dealCreationPoint) {
        this.dealCreationPoint = dealCreationPoint;
    }

    public boolean isUseEstimateOnActual() {
        return useEstimateOnActual;
    }

    public void setUseEstimateOnActual(boolean useEstimateOnActual) {
        this.useEstimateOnActual = useEstimateOnActual;
    }

    // TODO. Use EqualsBuilder
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (!super.equals(obj)) return false;
        if (obj == null || getClass() != obj.getClass()) return false;

        DealCreationPointConfig other = (DealCreationPointConfig) obj;

        if (division != null ? !division.equals(other.division) : other.division != null) return false;
        if (forexGroup != null ? !forexGroup.equals(other.forexGroup) : other.forexGroup != null) return false;

        return true;
    }

    @Override
    public String toString() {
        return "DealCreationPointConfig{" +
                "dealAcceptancePoint=" + dealAcceptancePoint +
                ", division=" + division +
                ", forexGroup=" + forexGroup +
                ", dealCreationPoint=" + dealCreationPoint +
                ", useEstimateOnActual=" + useEstimateOnActual +
                '}';
    }

    // TODO. Use HashCodeBuilder
    @Override
    public int hashCode() {
        int result = division != null ? division.hashCode() : 0;
        result = 31 * result + (forexGroup != null ? forexGroup.hashCode() : 0);

        return result;
    }
}