001
002package com.commercetools.api.models.product_selection;
003
004import java.time.*;
005import java.util.*;
006
007import com.fasterxml.jackson.annotation.JsonCreator;
008import com.fasterxml.jackson.annotation.JsonProperty;
009import com.fasterxml.jackson.databind.annotation.*;
010
011import io.vrap.rmf.base.client.ModelBase;
012import io.vrap.rmf.base.client.utils.Generated;
013
014import org.apache.commons.lang3.builder.EqualsBuilder;
015import org.apache.commons.lang3.builder.HashCodeBuilder;
016
017/**
018 *  <p>Excludes a Product from a Product Selection with <code>IndividualExclusion</code> ProductSelectionMode.</p>
019 *  <p>If the specified Product is already assigned to the Product Selection, but the existing Product Selection has a different Product Variant Exclusion, a ProductPresentWithDifferentVariantSelection error is returned.</p>
020 */
021@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
022public class ProductSelectionExcludeProductActionImpl implements ProductSelectionExcludeProductAction, ModelBase {
023
024    private String action;
025
026    private com.commercetools.api.models.product.ProductResourceIdentifier product;
027
028    private com.commercetools.api.models.product_selection.ProductVariantExclusion variantExclusion;
029
030    /**
031     * create instance with all properties
032     */
033    @JsonCreator
034    ProductSelectionExcludeProductActionImpl(
035            @JsonProperty("product") final com.commercetools.api.models.product.ProductResourceIdentifier product,
036            @JsonProperty("variantExclusion") final com.commercetools.api.models.product_selection.ProductVariantExclusion variantExclusion) {
037        this.product = product;
038        this.variantExclusion = variantExclusion;
039        this.action = EXCLUDE_PRODUCT;
040    }
041
042    /**
043     * create empty instance
044     */
045    public ProductSelectionExcludeProductActionImpl() {
046        this.action = EXCLUDE_PRODUCT;
047    }
048
049    /**
050     *
051     */
052
053    public String getAction() {
054        return this.action;
055    }
056
057    /**
058     *  <p>ResourceIdentifier of the Product</p>
059     */
060
061    public com.commercetools.api.models.product.ProductResourceIdentifier getProduct() {
062        return this.product;
063    }
064
065    /**
066     *  <p>Defines which Variants of the Product will be excluded from the Product Selection. If not supplied all Variants are deemed to be excluded.</p>
067     */
068
069    public com.commercetools.api.models.product_selection.ProductVariantExclusion getVariantExclusion() {
070        return this.variantExclusion;
071    }
072
073    public void setProduct(final com.commercetools.api.models.product.ProductResourceIdentifier product) {
074        this.product = product;
075    }
076
077    public void setVariantExclusion(
078            final com.commercetools.api.models.product_selection.ProductVariantExclusion variantExclusion) {
079        this.variantExclusion = variantExclusion;
080    }
081
082    @Override
083    public boolean equals(Object o) {
084        if (this == o)
085            return true;
086
087        if (o == null || getClass() != o.getClass())
088            return false;
089
090        ProductSelectionExcludeProductActionImpl that = (ProductSelectionExcludeProductActionImpl) o;
091
092        return new EqualsBuilder().append(action, that.action)
093                .append(product, that.product)
094                .append(variantExclusion, that.variantExclusion)
095                .append(action, that.action)
096                .append(product, that.product)
097                .append(variantExclusion, that.variantExclusion)
098                .isEquals();
099    }
100
101    @Override
102    public int hashCode() {
103        return new HashCodeBuilder(17, 37).append(action).append(product).append(variantExclusion).toHashCode();
104    }
105
106}