001
002package com.commercetools.history.models.change;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009import javax.validation.Valid;
010import javax.validation.constraints.NotNull;
011
012import com.commercetools.history.models.common.LocalizedString;
013import com.fasterxml.jackson.annotation.*;
014import com.fasterxml.jackson.databind.annotation.*;
015
016import io.vrap.rmf.base.client.utils.Generated;
017
018/**
019 *  <p>Change triggered by the Change LineItem Quantity update action.</p>
020 *
021 * <hr>
022 * Example to create an instance using the builder pattern
023 * <div class=code-example>
024 * <pre><code class='java'>
025 *     ChangeLineItemQuantityChange changeLineItemQuantityChange = ChangeLineItemQuantityChange.builder()
026 *             .change("{change}")
027 *             .previousValue(1)
028 *             .nextValue(1)
029 *             .lineItem(lineItemBuilder -> lineItemBuilder)
030 *             .lineItemId("{lineItemId}")
031 *             .build()
032 * </code></pre>
033 * </div>
034 */
035@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
036@JsonDeserialize(as = ChangeLineItemQuantityChangeImpl.class)
037public interface ChangeLineItemQuantityChange extends Change {
038
039    /**
040     * discriminator value for ChangeLineItemQuantityChange
041     */
042    String CHANGE_LINE_ITEM_QUANTITY_CHANGE = "ChangeLineItemQuantityChange";
043
044    /**
045     *
046     * @return type
047     */
048    @NotNull
049    @JsonProperty("type")
050    public String getType();
051
052    /**
053     *
054     * @return change
055     */
056    @NotNull
057    @JsonProperty("change")
058    public String getChange();
059
060    /**
061     *  <p>Value before the change.</p>
062     * @return previousValue
063     */
064    @NotNull
065    @JsonProperty("previousValue")
066    public Integer getPreviousValue();
067
068    /**
069     *  <p>Value after the change</p>
070     * @return nextValue
071     */
072    @NotNull
073    @JsonProperty("nextValue")
074    public Integer getNextValue();
075
076    /**
077     *  <p>Name of the Product the updated Line Item is based on.</p>
078     * @return lineItem
079     */
080    @NotNull
081    @Valid
082    @JsonProperty("lineItem")
083    public LocalizedString getLineItem();
084
085    /**
086     *  <p><code>id</code> of the updated LineItem.</p>
087     * @return lineItemId
088     */
089    @NotNull
090    @JsonProperty("lineItemId")
091    public String getLineItemId();
092
093    /**
094     * set change
095     * @param change value to be set
096     */
097
098    public void setChange(final String change);
099
100    /**
101     *  <p>Value before the change.</p>
102     * @param previousValue value to be set
103     */
104
105    public void setPreviousValue(final Integer previousValue);
106
107    /**
108     *  <p>Value after the change</p>
109     * @param nextValue value to be set
110     */
111
112    public void setNextValue(final Integer nextValue);
113
114    /**
115     *  <p>Name of the Product the updated Line Item is based on.</p>
116     * @param lineItem value to be set
117     */
118
119    public void setLineItem(final LocalizedString lineItem);
120
121    /**
122     *  <p><code>id</code> of the updated LineItem.</p>
123     * @param lineItemId value to be set
124     */
125
126    public void setLineItemId(final String lineItemId);
127
128    /**
129     * factory method
130     * @return instance of ChangeLineItemQuantityChange
131     */
132    public static ChangeLineItemQuantityChange of() {
133        return new ChangeLineItemQuantityChangeImpl();
134    }
135
136    /**
137     * factory method to create a shallow copy ChangeLineItemQuantityChange
138     * @param template instance to be copied
139     * @return copy instance
140     */
141    public static ChangeLineItemQuantityChange of(final ChangeLineItemQuantityChange template) {
142        ChangeLineItemQuantityChangeImpl instance = new ChangeLineItemQuantityChangeImpl();
143        instance.setChange(template.getChange());
144        instance.setPreviousValue(template.getPreviousValue());
145        instance.setNextValue(template.getNextValue());
146        instance.setLineItem(template.getLineItem());
147        instance.setLineItemId(template.getLineItemId());
148        return instance;
149    }
150
151    /**
152     * factory method to create a deep copy of ChangeLineItemQuantityChange
153     * @param template instance to be copied
154     * @return copy instance
155     */
156    @Nullable
157    public static ChangeLineItemQuantityChange deepCopy(@Nullable final ChangeLineItemQuantityChange template) {
158        if (template == null) {
159            return null;
160        }
161        ChangeLineItemQuantityChangeImpl instance = new ChangeLineItemQuantityChangeImpl();
162        instance.setChange(template.getChange());
163        instance.setPreviousValue(template.getPreviousValue());
164        instance.setNextValue(template.getNextValue());
165        instance.setLineItem(com.commercetools.history.models.common.LocalizedString.deepCopy(template.getLineItem()));
166        instance.setLineItemId(template.getLineItemId());
167        return instance;
168    }
169
170    /**
171     * builder factory method for ChangeLineItemQuantityChange
172     * @return builder
173     */
174    public static ChangeLineItemQuantityChangeBuilder builder() {
175        return ChangeLineItemQuantityChangeBuilder.of();
176    }
177
178    /**
179     * create builder for ChangeLineItemQuantityChange instance
180     * @param template instance with prefilled values for the builder
181     * @return builder
182     */
183    public static ChangeLineItemQuantityChangeBuilder builder(final ChangeLineItemQuantityChange template) {
184        return ChangeLineItemQuantityChangeBuilder.of(template);
185    }
186
187    /**
188     * accessor map function
189     * @param <T> mapped type
190     * @param helper function to map the object
191     * @return mapped value
192     */
193    default <T> T withChangeLineItemQuantityChange(Function<ChangeLineItemQuantityChange, T> helper) {
194        return helper.apply(this);
195    }
196
197    /**
198     * gives a TypeReference for usage with Jackson DataBind
199     * @return TypeReference
200     */
201    public static com.fasterxml.jackson.core.type.TypeReference<ChangeLineItemQuantityChange> typeReference() {
202        return new com.fasterxml.jackson.core.type.TypeReference<ChangeLineItemQuantityChange>() {
203            @Override
204            public String toString() {
205                return "TypeReference<ChangeLineItemQuantityChange>";
206            }
207        };
208    }
209}