ClearingRateSearch.java

package com.tradecloud.dto.rate;

import com.tradecloud.domain.container.ContainerType;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.place.Depot;
import com.tradecloud.domain.place.FinalDestination;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;

@Component
@Scope("view")
@Getter
@Setter
@SuperBuilder
@NoArgsConstructor
public class ClearingRateSearch extends RateSearch {

    private ShippingMode shippingMode;
    private ShippingMode multiModalShippingMode;

    private ContainerType containerType;
    private PlaceOfDischarge placeOfDischarge;
    private ServiceProvider clearingAgent;
    private ServiceProvider transporter;
    private Depot clearingDepot;
    private FinalDestination finalDestination;
    private PlaceOfLoading placeOfLoading;
    private BigDecimal weight;
    private ServiceProvider freightForwarder;
    private ServiceProvider carrier;
    private OrganisationalUnit company;

    public ClearingRateSearch(ClearingRateSearch clearingRateSearch) {
        super(clearingRateSearch);
        this.shippingMode = clearingRateSearch.shippingMode;
        this.multiModalShippingMode = clearingRateSearch.multiModalShippingMode;
        this.containerType = clearingRateSearch.containerType;
        this.placeOfDischarge = clearingRateSearch.placeOfDischarge;
        this.clearingAgent = clearingRateSearch.clearingAgent;
        this.transporter = clearingRateSearch.transporter;
        this.organisationalUnit = clearingRateSearch.organisationalUnit;
        this.clearingDepot = clearingRateSearch.clearingDepot;
        this.finalDestination = clearingRateSearch.finalDestination;
        this.placeOfLoading = clearingRateSearch.placeOfLoading;
        this.weight = clearingRateSearch.weight;
        this.freightForwarder = clearingRateSearch.freightForwarder;
        this.carrier = clearingRateSearch.carrier;
        this.company = clearingRateSearch.company;
    }

    public ShippingMode getShippingMode() {
        return shippingMode;
    }

    public void setShippingMode(ShippingMode shippingMode) {
        this.shippingMode = shippingMode;
    }

    public ContainerType getContainerType() {
        return containerType;
    }

    public void setContainerType(ContainerType containerType) {
        this.containerType = containerType;
    }

    public PlaceOfDischarge getPlaceOfDischarge() {
        return placeOfDischarge;
    }

    public void setPlaceOfDischarge(PlaceOfDischarge placeOfDischarge) {
        this.placeOfDischarge = placeOfDischarge;
    }

    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 PlaceOfLoading getPlaceOfLoading() {
        return placeOfLoading;
    }

    public void setPlaceOfLoading(PlaceOfLoading placeOfLoading) {
        this.placeOfLoading = placeOfLoading;
    }

    public BigDecimal getWeight() {
        return weight;
    }

    public void setWeight(BigDecimal weight) {
        this.weight = weight;
    }

    @Override
    public String toString() {
        return "Cost line '" + costLine + "'. " + "Shipping mode '" + shippingMode + "'. " + "Container type '" + containerType + "'. " + "Port of " +
                "docking '" + (placeOfDischarge != null ? placeOfDischarge.getName() : null) + "'. " + "Clearing agent '" + (clearingAgent != null
                ? clearingAgent.getName() : null) + "'. " + "Transporter '" + (transporter != null ? transporter.getName() : null) + "'. " + "Org " +
                "Freight Forwarder '" + (freightForwarder != null ? freightForwarder.getName() : null) + "'. " +
                "Company '" + (company != null ? company.getName() : null) + "'. " +
                "Carrier '" + (carrier != null ? carrier.getName() : null) + "'. " +
                "unit '" + (organisationalUnit != null ? organisationalUnit.getName() : null) + "'. " + "RateType: '" + costingType + "'. " +
                " costCompareOnly:" + costCompareOnly;
    }

    public Depot getClearingDepot() {
        return clearingDepot;
    }

    public void setClearingDepot(Depot clearingDepot) {
        this.clearingDepot = clearingDepot;
    }

    public FinalDestination getFinalDestination() {
        return finalDestination;
    }

    public void setFinalDestination(FinalDestination finalDestination) {
        this.finalDestination = finalDestination;
    }

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

        shippingMode = null;
        multiModalShippingMode = null;
        containerType = null;
        placeOfDischarge = null;
        clearingAgent = null;
        transporter = null;
        organisationalUnit = null;
        clearingDepot = null;
        finalDestination = null;
        freightForwarder = null;
        carrier = null;
        weight = null;
        placeOfLoading = null;
        company = null;
    }

    /**
     * @return the freightForwarder
     */
    public ServiceProvider getFreightForwarder() {
        return freightForwarder;
    }

    /**
     * @param freightForwarder the freightForwarder to set
     */
    public void setFreightForwarder(ServiceProvider freightForwarder) {
        this.freightForwarder = freightForwarder;
    }

    /**
     * @return the carrier
     */
    public ServiceProvider getCarrier() {
        return carrier;
    }

    /**
     * @param carrier the carrier to set
     */
    public void setCarrier(ServiceProvider carrier) {
        this.carrier = carrier;
    }

    @Override
    public int hashCode() {
        return generate(getContainerType(), getCurrency(), getCostLine(),
                getCostingType(), getFinalDestination(), getShippingMode(), getPlaceOfDischarge(), getPlaceOfLoading(),
                getCarrier(), getEffectiveDateLower(), getFreightForwarder(), getWeight(), getPlaceOfLoading(), getClearingAgent(),
                getEffectiveDateUpper(), getTransporter(), getOrganisationalUnit(), getClearingDepot(), getSearchMetaParams(), getRateUnit(),
                isCostCompareOnly(), getMultiModalShippingMode(), company);
    }
}