ForwardingRateSearch.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.NamedPlace;
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;

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

    private ShippingMode shippingMode;
    private ShippingMode multiModalShippingMode;

    private ContainerType containerType;
    private PlaceOfLoading placeOfLoading;
    private ServiceProvider freightForwarder;
    private ServiceProvider carrier;
    private NamedPlace namedPlace;
    private OrganisationalUnit company;

    public ForwardingRateSearch(ForwardingRateSearch search) {
        super(search);
        this.shippingMode = search.shippingMode;
        this.multiModalShippingMode = search.multiModalShippingMode;
        this.containerType = search.containerType;
        this.placeOfLoading = search.placeOfLoading;
        this.freightForwarder = search.freightForwarder;
        this.carrier = search.carrier;
        this.namedPlace = search.namedPlace;
        this.organisationalUnit = search.organisationalUnit;
        this.company = search.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 PlaceOfLoading getPlaceOfLoading() {
        return placeOfLoading;
    }

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

    public ServiceProvider getFreightForwarder() {
        return freightForwarder;
    }

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

    public NamedPlace getNamedPlace() {
        return namedPlace;
    }

    public void setNamedPlace(NamedPlace namedPlace) {
        this.namedPlace = namedPlace;
    }

    @Override
    public String toString() {
        return "Cost line '" + costLine + "'. "
                + "Shipping mode '" + shippingMode + "'. " + "Container type '" + "'. " + "Rate Type '" + costingType + "'. "
                + (containerType != null ? containerType.getName() : null) + "'. " + "Port of loading '"
                + (placeOfLoading != null ? placeOfLoading.getName() : null) + "'." + "LSP '"
                + (company != null ? company.getName() : null) + "'."
                + (freightForwarder != null ? freightForwarder.getName() : null) + "'."
                + (getCarrier() != null ? getCarrier().getName() : null) + "'." + "Carrier '"
                + (getNamedPlace() != null ? getNamedPlace().getName() : null) + "'." + "Named Place"
                + "org unit '" + (organisationalUnit != null ? organisationalUnit.getName() : null) +
                " .costCompareOnly:" + costCompareOnly;
    }

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

        shippingMode = null;
        multiModalShippingMode = null;
        containerType = null;
        placeOfLoading = null;
        freightForwarder = null;
        carrier = null;
        namedPlace = null;
        organisationalUnit = null;
        company = null;
    }

    /**
     * @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(), getCarrier(), getShippingMode(), getPlaceOfLoading(), getFreightForwarder(), getEffectiveDateLower(),
                getEffectiveDateUpper(), getNamedPlace(), getOrganisationalUnit(), getSearchMetaParams(), getRateUnit(), isCostCompareOnly(),
                getMultiModalShippingMode(), company);
    }
}