CostingComparisonSetup.java

package com.tradecloud.domain.configuration;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.party.ServiceProvider;

import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import javax.validation.constraints.NotNull;
import java.util.Objects;

@Entity
@Table(name = "CostingComparisonSetup", uniqueConstraints = {
        @UniqueConstraint(columnNames = {"reference"})})
public class CostingComparisonSetup extends PersistenceBase {
    @ManyToOne
    private ServiceProvider freightForwarder;

    @ManyToOne
    private ServiceProvider clearingAgent;

    @ManyToOne
    private ServiceProvider transporter;

    @NotNull(message = "is required")
    private String reference;

    private boolean active;

    public ServiceProvider getFreightForwarder() {
        return freightForwarder;
    }

    public void setFreightForwarder(ServiceProvider freightForwarder) {
        this.freightForwarder = freightForwarder;
    }

    public ServiceProvider getClearingAgent() {
        return clearingAgent;
    }

    public void setClearingAgent(ServiceProvider clearingAgent) {
        this.clearingAgent = clearingAgent;
    }

    public ServiceProvider getTransporter() {
        return transporter;
    }

    public void setTransporter(ServiceProvider transporter) {
        this.transporter = transporter;
    }

    public String getReference() {
        return reference;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof CostingComparisonSetup that)) return false;
        if (!super.equals(o)) return false;
        return Objects.equals(getReference(), that.getReference());
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), getReference());
    }

    public boolean useCompareRatesOnly() {
        return (freightForwarder != null && freightForwarder.isCostCompareOnly()) ||
                (clearingAgent != null && clearingAgent.isCostCompareOnly()) ||
                (transporter != null && transporter.isCostCompareOnly());
    }
}