All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.sphere.client.shop.model.TrackingData Maven / Gradle / Ivy

package io.sphere.client.shop.model;

import net.jcip.annotations.Immutable;

import static com.google.common.base.Objects.firstNonNull;
import static com.google.common.base.Strings.nullToEmpty;


/** TrackingData is some info about the delivery (like a DHL tracking number) which is useful to keep an eye
 * on your delivery, view its status etc.*/
@Immutable
public class TrackingData {

    private String trackingId = "";
    private String carrier = "";
    private String provider = "";
    private String providerTransaction = "";
    private boolean isReturn = false;

    public TrackingData(String trackingId, String carrier, String provider, String providerTransaction, boolean isReturn) {
        this.provider = firstNonNull(provider, "");
        this.providerTransaction = firstNonNull(providerTransaction, "");
        this.trackingId = firstNonNull(trackingId, "");
        this.carrier = firstNonNull(carrier, "");
        this.isReturn = isReturn;
    }

    /**
     * Creates TrackingData item with isReturn=false.
     */
    public TrackingData(String trackingId, String carrier) {
        this(trackingId, carrier, "", "", false);
    }

    /**
     * Creates TrackingData item with empty carrier field and isReturn=false.
     */
    public TrackingData(String trackingId) {
        this(trackingId, "");
    }

    //for JSON mapper
    @SuppressWarnings("unused")
    protected TrackingData() {
    }

    /** parcel tracking number */
    public String getTrackingId() {
        return trackingId;
    }

    /** parcel shipping company */
    public String getCarrier() { return nullToEmpty(carrier); }

    /** true, if the parcel is on the way back to the merchant and false if it is the delivery to the customer. */
    public boolean isReturn() {
        return isReturn;
    }

    public String getProvider() {
        return provider;
    }

    public String getProviderTransaction() {
        return providerTransaction;
    }

    @Override
    public String toString() {
        return "TrackingData{" +
                "trackingId='" + trackingId + '\'' +
                ", carrier='" + carrier + '\'' +
                ", provider='" + provider + '\'' +
                ", providerTransaction='" + providerTransaction + '\'' +
                ", isReturn=" + isReturn +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        TrackingData that = (TrackingData) o;

        if (isReturn != that.isReturn) return false;
        if (carrier != null ? !carrier.equals(that.carrier) : that.carrier != null) return false;
        if (!trackingId.equals(that.trackingId)) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = trackingId.hashCode();
        result = 31 * result + (carrier != null ? carrier.hashCode() : 0);
        result = 31 * result + (isReturn ? 1 : 0);
        return result;
    }

    public static class Builder {
        private String trackingId;
        private String carrier;
        private String provider;
        private String providerTransaction;
        private boolean isReturn = false;

        public Builder() {
        }

        public Builder(final String trackingId) {
            setTrackingId(trackingId);
        }

        public Builder setTrackingId(String trackingId) {
            this.trackingId = trackingId;
            return this;
        }

        public Builder setCarrier(String carrier) {
            this.carrier = carrier;
            return this;
        }

        public Builder setProvider(String provider) {
            this.provider = provider;
            return this;
        }

        public Builder setProviderTransaction(String providerTransaction) {
            this.providerTransaction = providerTransaction;
            return this;
        }

        public Builder setReturn(boolean isReturn) {
            this.isReturn = isReturn;
            return this;
        }

        public TrackingData build() {
            return new TrackingData(trackingId, carrier, provider, providerTransaction, isReturn);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy