FreightRateSearch.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.Country;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import lombok.AllArgsConstructor;
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
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class FreightRateSearch extends RateSearch {

    private static final long serialVersionUID = 1L;
    private ShippingMode shippingMode;
    private ShippingMode multiModalShippingMode;
    private ContainerType containerType;
    private PlaceOfLoading placeOfLoading;
    private PlaceOfDischarge placeOfDischarge;
    private ServiceProvider freightForwarder;
    private ServiceProvider carrier;
    private Country country;
    private BigDecimal weight;
    private BigDecimal weightFrom;
    private BigDecimal weightTo;
    private OrganisationalUnit company;

    public FreightRateSearch(FreightRateSearch search) {
        super(search);
        this.shippingMode = search.shippingMode;
        this.multiModalShippingMode = search.multiModalShippingMode;
        this.containerType = search.containerType;
        this.placeOfLoading = search.placeOfLoading;
        this.placeOfDischarge = search.placeOfDischarge;
        this.freightForwarder = search.freightForwarder;
        this.carrier = search.carrier;
        this.country = search.country;
        this.organisationalUnit = search.organisationalUnit;
        this.weight = search.weight;
        this.company = search.company;
    }

    public ServiceProvider getFreightForwarder() {
        return freightForwarder;
    }

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

    public ContainerType getContainerType() {
        return containerType;
    }

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

    public ShippingMode getShippingMode() {
        return shippingMode;
    }

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

    public PlaceOfLoading getPlaceOfLoading() {
        return placeOfLoading;
    }

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

    public PlaceOfDischarge getPlaceOfDischarge() {
        return placeOfDischarge;
    }

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

    public Country getCountry() {
        return country;
    }

    public void setCountry(Country country) {
        this.country = country;
    }

    @Override
    public String toString() {
        return super.toString() + " FreightRateSearch{" +
                "shippingMode=" + shippingMode +
                ", containerType=" + containerType +
                ", company " + (company != null ? company.getName() : "null") +
                ", placeOfDischarge=" + placeOfDischarge +
                ", freightForwarder=" + freightForwarder +
                ", carrier=" + carrier +
                ", country=" + country +
                ", weight=" + weight +
                ",costCompareOnly:" + costCompareOnly +
                ",Business unit '" + (organisationalUnit != null ? organisationalUnit.getName() : null) +
                '}';

        /*", placeOfLoading=" + placeOfLoading +*/
    }

    public ServiceProvider getCarrier() {
        return carrier;
    }

    public void setCarrier(ServiceProvider carrier) {
        this.carrier = carrier;
    }

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

        shippingMode = null;
        multiModalShippingMode = null;
        containerType = null;
        placeOfLoading = null;
        placeOfDischarge = null;
        freightForwarder = null;
        carrier = null;
        country = null;
        weight = null;
        organisationalUnit = null;
        company = null;
    }

    public BigDecimal getWeight() {
        return weight;
    }

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

    public BigDecimal getWeightFrom() {
        return weightFrom;
    }

    public void setWeightFrom(BigDecimal weightFrom) {
        this.weightFrom = weightFrom;
    }

    public BigDecimal getWeightTo() {
        return weightTo;
    }

    public void setWeightTo(BigDecimal weightTo) {
        this.weightTo = weightTo;
    }

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