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 CustomLineItem 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 *     ChangeCustomLineItemQuantityChange changeCustomLineItemQuantityChange = ChangeCustomLineItemQuantityChange.builder()
026 *             .change("{change}")
027 *             .previousValue(1)
028 *             .nextValue(1)
029 *             .customLineItem(customLineItemBuilder -> customLineItemBuilder)
030 *             .customLineItemId("{customLineItemId}")
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 = ChangeCustomLineItemQuantityChangeImpl.class)
037public interface ChangeCustomLineItemQuantityChange extends Change {
038
039    /**
040     * discriminator value for ChangeCustomLineItemQuantityChange
041     */
042    String CHANGE_CUSTOM_LINE_ITEM_QUANTITY_CHANGE = "ChangeCustomLineItemQuantityChange";
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 CustomLineItem.</p>
078     * @return customLineItem
079     */
080    @NotNull
081    @Valid
082    @JsonProperty("customLineItem")
083    public LocalizedString getCustomLineItem();
084
085    /**
086     *  <p><code>id</code> of the updated CustomLineItem.</p>
087     * @return customLineItemId
088     */
089    @NotNull
090    @JsonProperty("customLineItemId")
091    public String getCustomLineItemId();
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 CustomLineItem.</p>
116     * @param customLineItem value to be set
117     */
118
119    public void setCustomLineItem(final LocalizedString customLineItem);
120
121    /**
122     *  <p><code>id</code> of the updated CustomLineItem.</p>
123     * @param customLineItemId value to be set
124     */
125
126    public void setCustomLineItemId(final String customLineItemId);
127
128    /**
129     * factory method
130     * @return instance of ChangeCustomLineItemQuantityChange
131     */
132    public static ChangeCustomLineItemQuantityChange of() {
133        return new ChangeCustomLineItemQuantityChangeImpl();
134    }
135
136    /**
137     * factory method to create a shallow copy ChangeCustomLineItemQuantityChange
138     * @param template instance to be copied
139     * @return copy instance
140     */
141    public static ChangeCustomLineItemQuantityChange of(final ChangeCustomLineItemQuantityChange template) {
142        ChangeCustomLineItemQuantityChangeImpl instance = new ChangeCustomLineItemQuantityChangeImpl();
143        instance.setChange(template.getChange());
144        instance.setPreviousValue(template.getPreviousValue());
145        instance.setNextValue(template.getNextValue());
146        instance.setCustomLineItem(template.getCustomLineItem());
147        instance.setCustomLineItemId(template.getCustomLineItemId());
148        return instance;
149    }
150
151    /**
152     * factory method to create a deep copy of ChangeCustomLineItemQuantityChange
153     * @param template instance to be copied
154     * @return copy instance
155     */
156    @Nullable
157    public static ChangeCustomLineItemQuantityChange deepCopy(
158            @Nullable final ChangeCustomLineItemQuantityChange template) {
159        if (template == null) {
160            return null;
161        }
162        ChangeCustomLineItemQuantityChangeImpl instance = new ChangeCustomLineItemQuantityChangeImpl();
163        instance.setChange(template.getChange());
164        instance.setPreviousValue(template.getPreviousValue());
165        instance.setNextValue(template.getNextValue());
166        instance.setCustomLineItem(
167            com.commercetools.history.models.common.LocalizedString.deepCopy(template.getCustomLineItem()));
168        instance.setCustomLineItemId(template.getCustomLineItemId());
169        return instance;
170    }
171
172    /**
173     * builder factory method for ChangeCustomLineItemQuantityChange
174     * @return builder
175     */
176    public static ChangeCustomLineItemQuantityChangeBuilder builder() {
177        return ChangeCustomLineItemQuantityChangeBuilder.of();
178    }
179
180    /**
181     * create builder for ChangeCustomLineItemQuantityChange instance
182     * @param template instance with prefilled values for the builder
183     * @return builder
184     */
185    public static ChangeCustomLineItemQuantityChangeBuilder builder(final ChangeCustomLineItemQuantityChange template) {
186        return ChangeCustomLineItemQuantityChangeBuilder.of(template);
187    }
188
189    /**
190     * accessor map function
191     * @param <T> mapped type
192     * @param helper function to map the object
193     * @return mapped value
194     */
195    default <T> T withChangeCustomLineItemQuantityChange(Function<ChangeCustomLineItemQuantityChange, T> helper) {
196        return helper.apply(this);
197    }
198
199    /**
200     * gives a TypeReference for usage with Jackson DataBind
201     * @return TypeReference
202     */
203    public static com.fasterxml.jackson.core.type.TypeReference<ChangeCustomLineItemQuantityChange> typeReference() {
204        return new com.fasterxml.jackson.core.type.TypeReference<ChangeCustomLineItemQuantityChange>() {
205            @Override
206            public String toString() {
207                return "TypeReference<ChangeCustomLineItemQuantityChange>";
208            }
209        };
210    }
211}