AgentRateSearch.java

package com.tradecloud.dto.rate;

import com.tradecloud.domain.agent.Agent;
import com.tradecloud.domain.supplier.OrganisationalUnitSupplier;
import com.tradecloud.domain.supplier.Supplier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
@Scope("view")
public class AgentRateSearch extends RateSearch {

    private Agent agent;

    private Supplier supplier;

    //not used in search, used to set supplier
    private OrganisationalUnitSupplier organisationalUnitSupplier;

    public AgentRateSearch() {
        super();
    }

    public AgentRateSearch(AgentRateSearch agentRateSearch) {
        super(agentRateSearch);
        this.agent = agentRateSearch.agent;
        this.organisationalUnit = agentRateSearch.organisationalUnit;
        this.supplier = agentRateSearch.supplier;
        this.organisationalUnitSupplier = agentRateSearch.organisationalUnitSupplier;
    }

    public Supplier getSupplier() {
        return supplier;
    }

    public void setSupplier(Supplier supplier) {
        this.supplier = supplier;
    }

    @Override
    public String toString() {
        return "Cost line '" + costLine + "'. " + "Business unit '" + (organisationalUnit != null ? organisationalUnit.getName() : null) + "'. "
                + "Division '" + "Supplier '" + (supplier != null ? supplier.getName() : null) + "'." + "Rate Type '" + costingType + "'. "
                + " costCompareOnly:" + costCompareOnly;
    }

    public OrganisationalUnitSupplier getOrganisationalUnitSupplier() {
        return organisationalUnitSupplier;
    }

    public void setOrganisationalUnitSupplier(OrganisationalUnitSupplier organisationalUnitSupplier) {
        this.organisationalUnitSupplier = organisationalUnitSupplier;
        if (organisationalUnitSupplier != null)
            supplier = organisationalUnitSupplier.getSupplier();
    }

    public Agent getAgent() {
        return agent;
    }

    public void setAgent(Agent agent) {
        this.agent = agent;
    }

    @Override
    public void reset() {
        super.reset();

        agent = null;
        organisationalUnit = null;
        supplier = null;
        organisationalUnitSupplier = null;
    }

    @Override
    public int hashCode() {
        return generate(getAgent(), getCurrency(), getCostLine(), getCostingType(), getEffectiveDateLower(), getEffectiveDateUpper(),
                getOrganisationalUnit(), getPriorityConfig(), getSupplier(), getSearchMetaParams(), getRateUnit(), isCostCompareOnly());
    }
}