001
002package com.commercetools.api.models.cart;
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>Wraps all shipping-related information (such as address, rate, deliveries) per Shipping Method for Carts with multiple Shipping Methods.</p>
019 */
020@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
021public class ShippingDraftImpl implements ShippingDraft, ModelBase {
022
023    private String key;
024
025    private com.commercetools.api.models.shipping_method.ShippingMethodReference shippingMethod;
026
027    private com.commercetools.api.models.common.BaseAddress shippingAddress;
028
029    private com.commercetools.api.models.cart.ShippingRateInputDraft shippingRateInput;
030
031    private com.commercetools.api.models.cart.ExternalTaxRateDraft externalTaxRate;
032
033    private java.util.List<com.commercetools.api.models.order.DeliveryDraft> deliveries;
034
035    private com.commercetools.api.models.type.CustomFieldsDraft custom;
036
037    /**
038     * create instance with all properties
039     */
040    @JsonCreator
041    ShippingDraftImpl(@JsonProperty("key") final String key,
042            @JsonProperty("shippingMethod") final com.commercetools.api.models.shipping_method.ShippingMethodReference shippingMethod,
043            @JsonProperty("shippingAddress") final com.commercetools.api.models.common.BaseAddress shippingAddress,
044            @JsonProperty("shippingRateInput") final com.commercetools.api.models.cart.ShippingRateInputDraft shippingRateInput,
045            @JsonProperty("externalTaxRate") final com.commercetools.api.models.cart.ExternalTaxRateDraft externalTaxRate,
046            @JsonProperty("deliveries") final java.util.List<com.commercetools.api.models.order.DeliveryDraft> deliveries,
047            @JsonProperty("custom") final com.commercetools.api.models.type.CustomFieldsDraft custom) {
048        this.key = key;
049        this.shippingMethod = shippingMethod;
050        this.shippingAddress = shippingAddress;
051        this.shippingRateInput = shippingRateInput;
052        this.externalTaxRate = externalTaxRate;
053        this.deliveries = deliveries;
054        this.custom = custom;
055    }
056
057    /**
058     * create empty instance
059     */
060    public ShippingDraftImpl() {
061    }
062
063    /**
064     *  <p>User-defined unique identifier for the Shipping in a Cart with <code>Multiple</code> ShippingMode.</p>
065     */
066
067    public String getKey() {
068        return this.key;
069    }
070
071    /**
072     *  <p>Shipping Methods added to the Cart with <code>Multiple</code> ShippingMode.</p>
073     */
074
075    public com.commercetools.api.models.shipping_method.ShippingMethodReference getShippingMethod() {
076        return this.shippingMethod;
077    }
078
079    /**
080     *  <p>Determines the shipping rate and Tax Rate of the associated Line Items.</p>
081     */
082
083    public com.commercetools.api.models.common.BaseAddress getShippingAddress() {
084        return this.shippingAddress;
085    }
086
087    /**
088     *  <p>Input used to select a ShippingRatePriceTier. The data type of this field depends on the <code>shippingRateInputType.type</code> configured in the Project:</p>
089     *  <ul>
090     *   <li>If <code>CartClassification</code>, it must be ClassificationShippingRateInputDraft.</li>
091     *   <li>If <code>CartScore</code>, it must be ScoreShippingRateInputDraft.</li>
092     *   <li>If <code>CartValue</code>, it cannot be set.</li>
093     *  </ul>
094     */
095
096    public com.commercetools.api.models.cart.ShippingRateInputDraft getShippingRateInput() {
097        return this.shippingRateInput;
098    }
099
100    /**
101     *  <p>Tax Rate used for taxing a shipping expense if the Cart has the <code>External</code> TaxMode.</p>
102     */
103
104    public com.commercetools.api.models.cart.ExternalTaxRateDraft getExternalTaxRate() {
105        return this.externalTaxRate;
106    }
107
108    /**
109     *  <p>Deliveries to be shipped with the Shipping Method.</p>
110     */
111
112    public java.util.List<com.commercetools.api.models.order.DeliveryDraft> getDeliveries() {
113        return this.deliveries;
114    }
115
116    /**
117     *  <p>Custom Fields for Shipping.</p>
118     */
119
120    public com.commercetools.api.models.type.CustomFieldsDraft getCustom() {
121        return this.custom;
122    }
123
124    public void setKey(final String key) {
125        this.key = key;
126    }
127
128    public void setShippingMethod(
129            final com.commercetools.api.models.shipping_method.ShippingMethodReference shippingMethod) {
130        this.shippingMethod = shippingMethod;
131    }
132
133    public void setShippingAddress(final com.commercetools.api.models.common.BaseAddress shippingAddress) {
134        this.shippingAddress = shippingAddress;
135    }
136
137    public void setShippingRateInput(final com.commercetools.api.models.cart.ShippingRateInputDraft shippingRateInput) {
138        this.shippingRateInput = shippingRateInput;
139    }
140
141    public void setExternalTaxRate(final com.commercetools.api.models.cart.ExternalTaxRateDraft externalTaxRate) {
142        this.externalTaxRate = externalTaxRate;
143    }
144
145    public void setDeliveries(final com.commercetools.api.models.order.DeliveryDraft... deliveries) {
146        this.deliveries = new ArrayList<>(Arrays.asList(deliveries));
147    }
148
149    public void setDeliveries(final java.util.List<com.commercetools.api.models.order.DeliveryDraft> deliveries) {
150        this.deliveries = deliveries;
151    }
152
153    public void setCustom(final com.commercetools.api.models.type.CustomFieldsDraft custom) {
154        this.custom = custom;
155    }
156
157    @Override
158    public boolean equals(Object o) {
159        if (this == o)
160            return true;
161
162        if (o == null || getClass() != o.getClass())
163            return false;
164
165        ShippingDraftImpl that = (ShippingDraftImpl) o;
166
167        return new EqualsBuilder().append(key, that.key)
168                .append(shippingMethod, that.shippingMethod)
169                .append(shippingAddress, that.shippingAddress)
170                .append(shippingRateInput, that.shippingRateInput)
171                .append(externalTaxRate, that.externalTaxRate)
172                .append(deliveries, that.deliveries)
173                .append(custom, that.custom)
174                .isEquals();
175    }
176
177    @Override
178    public int hashCode() {
179        return new HashCodeBuilder(17, 37).append(key)
180                .append(shippingMethod)
181                .append(shippingAddress)
182                .append(shippingRateInput)
183                .append(externalTaxRate)
184                .append(deliveries)
185                .append(custom)
186                .toHashCode();
187    }
188
189}