001
002package com.commercetools.history.models.change;
003
004import java.util.*;
005import java.util.function.Function;
006
007import io.vrap.rmf.base.client.Builder;
008import io.vrap.rmf.base.client.utils.Generated;
009
010/**
011 * SetVariantAvailabilityChangeBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     SetVariantAvailabilityChange setVariantAvailabilityChange = SetVariantAvailabilityChange.builder()
017 *             .change("{change}")
018 *             .previousValue(previousValueBuilder -> previousValueBuilder)
019 *             .nextValue(nextValueBuilder -> nextValueBuilder)
020 *             .catalogData("{catalogData}")
021 *             .variant("{variant}")
022 *             .build()
023 * </code></pre>
024 * </div>
025 */
026@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
027public class SetVariantAvailabilityChangeBuilder implements Builder<SetVariantAvailabilityChange> {
028
029    private String change;
030
031    private com.commercetools.history.models.common.ProductVariantAvailability previousValue;
032
033    private com.commercetools.history.models.common.ProductVariantAvailability nextValue;
034
035    private String catalogData;
036
037    private String variant;
038
039    /**
040     * set the value to the change
041     * @param change value to be set
042     * @return Builder
043     */
044
045    public SetVariantAvailabilityChangeBuilder change(final String change) {
046        this.change = change;
047        return this;
048    }
049
050    /**
051     *  <p>Value before the change.</p>
052     * @param builder function to build the previousValue value
053     * @return Builder
054     */
055
056    public SetVariantAvailabilityChangeBuilder previousValue(
057            Function<com.commercetools.history.models.common.ProductVariantAvailabilityBuilder, com.commercetools.history.models.common.ProductVariantAvailabilityBuilder> builder) {
058        this.previousValue = builder
059                .apply(com.commercetools.history.models.common.ProductVariantAvailabilityBuilder.of())
060                .build();
061        return this;
062    }
063
064    /**
065     *  <p>Value before the change.</p>
066     * @param builder function to build the previousValue value
067     * @return Builder
068     */
069
070    public SetVariantAvailabilityChangeBuilder withPreviousValue(
071            Function<com.commercetools.history.models.common.ProductVariantAvailabilityBuilder, com.commercetools.history.models.common.ProductVariantAvailability> builder) {
072        this.previousValue = builder
073                .apply(com.commercetools.history.models.common.ProductVariantAvailabilityBuilder.of());
074        return this;
075    }
076
077    /**
078     *  <p>Value before the change.</p>
079     * @param previousValue value to be set
080     * @return Builder
081     */
082
083    public SetVariantAvailabilityChangeBuilder previousValue(
084            final com.commercetools.history.models.common.ProductVariantAvailability previousValue) {
085        this.previousValue = previousValue;
086        return this;
087    }
088
089    /**
090     *  <p>Value after the change.</p>
091     * @param builder function to build the nextValue value
092     * @return Builder
093     */
094
095    public SetVariantAvailabilityChangeBuilder nextValue(
096            Function<com.commercetools.history.models.common.ProductVariantAvailabilityBuilder, com.commercetools.history.models.common.ProductVariantAvailabilityBuilder> builder) {
097        this.nextValue = builder.apply(com.commercetools.history.models.common.ProductVariantAvailabilityBuilder.of())
098                .build();
099        return this;
100    }
101
102    /**
103     *  <p>Value after the change.</p>
104     * @param builder function to build the nextValue value
105     * @return Builder
106     */
107
108    public SetVariantAvailabilityChangeBuilder withNextValue(
109            Function<com.commercetools.history.models.common.ProductVariantAvailabilityBuilder, com.commercetools.history.models.common.ProductVariantAvailability> builder) {
110        this.nextValue = builder.apply(com.commercetools.history.models.common.ProductVariantAvailabilityBuilder.of());
111        return this;
112    }
113
114    /**
115     *  <p>Value after the change.</p>
116     * @param nextValue value to be set
117     * @return Builder
118     */
119
120    public SetVariantAvailabilityChangeBuilder nextValue(
121            final com.commercetools.history.models.common.ProductVariantAvailability nextValue) {
122        this.nextValue = nextValue;
123        return this;
124    }
125
126    /**
127     *  <ul>
128     *   <li><code>staged</code>, if the staged ProductCatalogData was updated.</li>
129     *   <li><code>current</code>, if the current ProductCatalogData was updated.</li>
130     *  </ul>
131     * @param catalogData value to be set
132     * @return Builder
133     */
134
135    public SetVariantAvailabilityChangeBuilder catalogData(final String catalogData) {
136        this.catalogData = catalogData;
137        return this;
138    }
139
140    /**
141     *  <p><code>sku</code> or <code>key</code> of the ProductVariant.</p>
142     * @param variant value to be set
143     * @return Builder
144     */
145
146    public SetVariantAvailabilityChangeBuilder variant(final String variant) {
147        this.variant = variant;
148        return this;
149    }
150
151    /**
152     * value of change}
153     * @return change
154     */
155
156    public String getChange() {
157        return this.change;
158    }
159
160    /**
161     *  <p>Value before the change.</p>
162     * @return previousValue
163     */
164
165    public com.commercetools.history.models.common.ProductVariantAvailability getPreviousValue() {
166        return this.previousValue;
167    }
168
169    /**
170     *  <p>Value after the change.</p>
171     * @return nextValue
172     */
173
174    public com.commercetools.history.models.common.ProductVariantAvailability getNextValue() {
175        return this.nextValue;
176    }
177
178    /**
179     *  <ul>
180     *   <li><code>staged</code>, if the staged ProductCatalogData was updated.</li>
181     *   <li><code>current</code>, if the current ProductCatalogData was updated.</li>
182     *  </ul>
183     * @return catalogData
184     */
185
186    public String getCatalogData() {
187        return this.catalogData;
188    }
189
190    /**
191     *  <p><code>sku</code> or <code>key</code> of the ProductVariant.</p>
192     * @return variant
193     */
194
195    public String getVariant() {
196        return this.variant;
197    }
198
199    /**
200     * builds SetVariantAvailabilityChange with checking for non-null required values
201     * @return SetVariantAvailabilityChange
202     */
203    public SetVariantAvailabilityChange build() {
204        Objects.requireNonNull(change, SetVariantAvailabilityChange.class + ": change is missing");
205        Objects.requireNonNull(previousValue, SetVariantAvailabilityChange.class + ": previousValue is missing");
206        Objects.requireNonNull(nextValue, SetVariantAvailabilityChange.class + ": nextValue is missing");
207        Objects.requireNonNull(catalogData, SetVariantAvailabilityChange.class + ": catalogData is missing");
208        Objects.requireNonNull(variant, SetVariantAvailabilityChange.class + ": variant is missing");
209        return new SetVariantAvailabilityChangeImpl(change, previousValue, nextValue, catalogData, variant);
210    }
211
212    /**
213     * builds SetVariantAvailabilityChange without checking for non-null required values
214     * @return SetVariantAvailabilityChange
215     */
216    public SetVariantAvailabilityChange buildUnchecked() {
217        return new SetVariantAvailabilityChangeImpl(change, previousValue, nextValue, catalogData, variant);
218    }
219
220    /**
221     * factory method for an instance of SetVariantAvailabilityChangeBuilder
222     * @return builder
223     */
224    public static SetVariantAvailabilityChangeBuilder of() {
225        return new SetVariantAvailabilityChangeBuilder();
226    }
227
228    /**
229     * create builder for SetVariantAvailabilityChange instance
230     * @param template instance with prefilled values for the builder
231     * @return builder
232     */
233    public static SetVariantAvailabilityChangeBuilder of(final SetVariantAvailabilityChange template) {
234        SetVariantAvailabilityChangeBuilder builder = new SetVariantAvailabilityChangeBuilder();
235        builder.change = template.getChange();
236        builder.previousValue = template.getPreviousValue();
237        builder.nextValue = template.getNextValue();
238        builder.catalogData = template.getCatalogData();
239        builder.variant = template.getVariant();
240        return builder;
241    }
242
243}