CostSummaryAdditionalInfo.java

package com.tradecloud.domain.costing.clean;

import com.tradecloud.domain.party.ServiceProvider;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Objects;

@Embeddable
@Access(AccessType.FIELD)
public class CostSummaryAdditionalInfo implements Serializable {

    @ManyToOne(fetch = FetchType.LAZY)
    private ServiceProvider freightForwarder;

    @ManyToOne(fetch = FetchType.LAZY)
    private ServiceProvider clearingAgent;

    @ManyToOne(fetch = FetchType.LAZY)
    private ServiceProvider transporter;

    private String reference;

    private Long costComparisonSetupId;

    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 Long getCostComparisonSetupId() {
        return costComparisonSetupId;
    }

    public void setCostComparisonSetupId(Long costComparisonSetupId) {
        this.costComparisonSetupId = costComparisonSetupId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof CostSummaryAdditionalInfo that)) return false;
        if (!super.equals(o)) return false;
        return Objects.equals(getFreightForwarder(), that.getFreightForwarder()) &&
                Objects.equals(getClearingAgent(), that.getClearingAgent()) &&
                Objects.equals(getTransporter(), that.getTransporter()) &&
                Objects.equals(getCostComparisonSetupId(), that.getCostComparisonSetupId());
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), getFreightForwarder(), getClearingAgent(), getTransporter(), getCostComparisonSetupId());
    }

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