ContainerRateSearch.java

package com.tradecloud.dto.rate;

import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.container.ContainerType;
import com.tradecloud.domain.costing.CostGroup;
import com.tradecloud.domain.costing.CostLineTemplate;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.place.Country;
import com.tradecloud.domain.place.FinalDestination;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;
import java.util.Date;

@Component
@Scope("view")
@Getter
@Setter
public class ContainerRateSearch {

    private ShippingMode shippingMode;
    private ShippingMode multiModalShippingMode;

    private CostLineTemplate costLineTemplate;
    private CostGroup costGroup;
    private ContainerType containerType;
    private Currency currency;
    private BigDecimal rate;
    private Date fromDate;
    private Date toDate;
    ServiceProvider clearingAgent;
    PlaceOfDischarge placeOfDischarge;
    FinalDestination finalDestination;
    Country origin;
    ServiceProvider forwardingAgent;
    PlaceOfLoading placeOfLoading;
    private ServiceProvider shippingLine;
    private Integer leadTime;

    public ShippingMode getShippingMode() {
        return shippingMode;
    }

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

    public CostLineTemplate getCostLineTemplate() {
        return costLineTemplate;
    }

    public void setCostLineTemplate(CostLineTemplate costLineTemplate) {
        this.costLineTemplate = costLineTemplate;
    }

    public ContainerType getContainerType() {
        return containerType;
    }

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

    public BigDecimal getRate() {
        return rate;
    }

    public void setRate(BigDecimal rate) {
        this.rate = rate;
    }

    public Date getFromDate() {
        return fromDate;
    }

    public void setFromDate(Date fromDate) {
        this.fromDate = fromDate;
    }

    public Date getToDate() {
        return toDate;
    }

    public void setToDate(Date toDate) {
        this.toDate = toDate;
    }

    public ServiceProvider getClearingAgent() {
        return clearingAgent;
    }

    public void setClearingAgent(ServiceProvider clearingAgent) {
        this.clearingAgent = clearingAgent;
    }

    public ServiceProvider getForwardingAgent() {
        return forwardingAgent;
    }

    public void setForwardingAgent(ServiceProvider forwardingAgent) {
        this.forwardingAgent = forwardingAgent;
    }

    public ServiceProvider getShippingLine() {
        return shippingLine;
    }

    public void setShippingLine(ServiceProvider shippingLine) {
        this.shippingLine = shippingLine;
    }

    public Integer getLeadTime() {
        return leadTime;
    }

    public void setLeadTime(Integer leadTime) {
        this.leadTime = leadTime;
    }

    public Currency getCurrency() {
        return currency;
    }

    public void setCurrency(Currency currency) {
        this.currency = currency;
    }

    public CostGroup getCostGroup() {
        return costGroup;
    }

    public void setCostGroup(CostGroup costGroup) {
        this.costGroup = costGroup;
    }

    public PlaceOfDischarge getPlaceOfDischarge() {
        return placeOfDischarge;
    }

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

    public FinalDestination getFinalDestination() {
        return finalDestination;
    }

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

    public Country getOrigin() {
        return origin;
    }

    public void setOrigin(Country origin) {
        this.origin = origin;
    }

    public PlaceOfLoading getPlaceOfLoading() {
        return placeOfLoading;
    }

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;

        if (o == null || getClass() != o.getClass()) return false;

        ContainerRateSearch that = (ContainerRateSearch) o;

        return new EqualsBuilder()
                .append(getShippingMode(), that.getShippingMode())
                .append(getMultiModalShippingMode(), that.getMultiModalShippingMode())
                .append(getCostLineTemplate(), that.getCostLineTemplate())
                .append(getCostGroup(), that.getCostGroup())
                .append(getContainerType(), that.getContainerType())
                .append(getCurrency(), that.getCurrency())
                .append(getRate(), that.getRate())
                .append(getFromDate(), that.getFromDate())
                .append(getToDate(), that.getToDate())
                .append(getClearingAgent(), that.getClearingAgent())
                .append(getPlaceOfDischarge(), that.getPlaceOfDischarge())
                .append(getFinalDestination(), that.getFinalDestination())
                .append(getOrigin(), that.getOrigin())
                .append(getForwardingAgent(), that.getForwardingAgent())
                .append(getPlaceOfLoading(), that.getPlaceOfLoading())
                .append(getShippingLine(), that.getShippingLine())
                .append(getLeadTime(), that.getLeadTime())
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder(17, 37)
                .append(getShippingMode())
                .append(getMultiModalShippingMode())
                .append(getCostLineTemplate())
                .append(getCostGroup())
                .append(getContainerType())
                .append(getCurrency())
                .append(getRate())
                .append(getFromDate())
                .append(getToDate())
                .append(getClearingAgent())
                .append(getPlaceOfDischarge())
                .append(getFinalDestination())
                .append(getOrigin())
                .append(getForwardingAgent())
                .append(getPlaceOfLoading())
                .append(getShippingLine())
                .append(getLeadTime())
                .toHashCode();
    }
}