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

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

There is a newer version: 0.72.1
Show newest version
package io.sphere.client.shop.model;

import com.google.common.base.Optional;
import io.sphere.client.model.LocalizedString;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonProperty;
import org.joda.time.DateTime;

public class ProductDiscount {
    private final String id;
    private final int version;
    private final DateTime lastModifiedAt;
    private final DateTime createdAt;
    private final Optional description;
    private final ProductDiscountValue value;
    private final String predicate;
    private final String sortOrder;
    private final boolean isActive;

    @JsonCreator
    public ProductDiscount(@JsonProperty("id") String id, @JsonProperty("version") int version,
                            @JsonProperty("lastModifiedAt") DateTime lastModifiedAt,
                            @JsonProperty("createdAt") DateTime createdAt,
                            @JsonProperty("description") LocalizedString description,
                            @JsonProperty("value") ProductDiscountValue value,
                            @JsonProperty("predicate") String predicate, @JsonProperty("sortOrder") String sortOrder,
                            @JsonProperty("isActive") boolean isActive) {
        this.id = id;
        this.version = version;
        this.lastModifiedAt = lastModifiedAt;
        this.createdAt = createdAt;
        this.description = Optional.fromNullable(description);
        this.value = value;
        this.predicate = predicate;
        this.sortOrder = sortOrder;
        this.isActive = isActive;
    }

    public String getId() {
        return id;
    }

    public int getVersion() {
        return version;
    }

    public DateTime getLastModifiedAt() {
        return lastModifiedAt;
    }

    public DateTime getCreatedAt() {
        return createdAt;
    }

    public Optional getDescription() {
        return description;
    }

    /**
     * Defines discount type with the corresponding value. The type can be relative or absolute.
     * @return value of the discount
     */
    public ProductDiscountValue getValue() {
        return value;
    }

    public String getPredicate() {
        return predicate;
    }

    public String getSortOrder() {
        return sortOrder;
    }

    public boolean isActive() {
        return isActive;
    }

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

        ProductDiscount that = (ProductDiscount) o;

        if (isActive != that.isActive) return false;
        if (version != that.version) return false;
        if (!createdAt.equals(that.createdAt)) return false;
        if (!description.equals(that.description)) return false;
        if (!id.equals(that.id)) return false;
        if (!lastModifiedAt.equals(that.lastModifiedAt)) return false;
        if (!predicate.equals(that.predicate)) return false;
        if (!sortOrder.equals(that.sortOrder)) return false;
        if (!value.equals(that.value)) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = id.hashCode();
        result = 31 * result + version;
        result = 31 * result + lastModifiedAt.hashCode();
        result = 31 * result + createdAt.hashCode();
        result = 31 * result + description.hashCode();
        result = 31 * result + value.hashCode();
        result = 31 * result + predicate.hashCode();
        result = 31 * result + sortOrder.hashCode();
        result = 31 * result + (isActive ? 1 : 0);
        return result;
    }

    @Override
    public String toString() {
        return "ProductDiscount{" +
                "id='" + id + '\'' +
                ", version=" + version +
                ", lastModifiedAt=" + lastModifiedAt +
                ", createdAt=" + createdAt +
                ", description=" + description +
                ", value=" + value +
                ", predicate='" + predicate + '\'' +
                ", sortOrder='" + sortOrder + '\'' +
                ", isActive=" + isActive +
                '}';
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy