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 * AddToCategoryChangeBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     AddToCategoryChange addToCategoryChange = AddToCategoryChange.builder()
017 *             .change("{change}")
018 *             .plusPreviousValue(previousValueBuilder -> previousValueBuilder)
019 *             .plusNextValue(nextValueBuilder -> nextValueBuilder)
020 *             .category(categoryBuilder -> categoryBuilder)
021 *             .build()
022 * </code></pre>
023 * </div>
024 */
025@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
026public class AddToCategoryChangeBuilder implements Builder<AddToCategoryChange> {
027
028    private String change;
029
030    private java.util.List<com.commercetools.history.models.common.Reference> previousValue;
031
032    private java.util.List<com.commercetools.history.models.common.Reference> nextValue;
033
034    private com.commercetools.history.models.common.Reference category;
035
036    /**
037     * set the value to the change
038     * @param change value to be set
039     * @return Builder
040     */
041
042    public AddToCategoryChangeBuilder change(final String change) {
043        this.change = change;
044        return this;
045    }
046
047    /**
048     *  <p>Value before the change.</p>
049     * @param previousValue value to be set
050     * @return Builder
051     */
052
053    public AddToCategoryChangeBuilder previousValue(
054            final com.commercetools.history.models.common.Reference... previousValue) {
055        this.previousValue = new ArrayList<>(Arrays.asList(previousValue));
056        return this;
057    }
058
059    /**
060     *  <p>Value before the change.</p>
061     * @param previousValue value to be set
062     * @return Builder
063     */
064
065    public AddToCategoryChangeBuilder previousValue(
066            final java.util.List<com.commercetools.history.models.common.Reference> previousValue) {
067        this.previousValue = previousValue;
068        return this;
069    }
070
071    /**
072     *  <p>Value before the change.</p>
073     * @param previousValue value to be set
074     * @return Builder
075     */
076
077    public AddToCategoryChangeBuilder plusPreviousValue(
078            final com.commercetools.history.models.common.Reference... previousValue) {
079        if (this.previousValue == null) {
080            this.previousValue = new ArrayList<>();
081        }
082        this.previousValue.addAll(Arrays.asList(previousValue));
083        return this;
084    }
085
086    /**
087     *  <p>Value before the change.</p>
088     * @param builder function to build the previousValue value
089     * @return Builder
090     */
091
092    public AddToCategoryChangeBuilder plusPreviousValue(
093            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.ReferenceBuilder> builder) {
094        if (this.previousValue == null) {
095            this.previousValue = new ArrayList<>();
096        }
097        this.previousValue.add(builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()).build());
098        return this;
099    }
100
101    /**
102     *  <p>Value before the change.</p>
103     * @param builder function to build the previousValue value
104     * @return Builder
105     */
106
107    public AddToCategoryChangeBuilder withPreviousValue(
108            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.ReferenceBuilder> builder) {
109        this.previousValue = new ArrayList<>();
110        this.previousValue.add(builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()).build());
111        return this;
112    }
113
114    /**
115     *  <p>Value before the change.</p>
116     * @param builder function to build the previousValue value
117     * @return Builder
118     */
119
120    public AddToCategoryChangeBuilder addPreviousValue(
121            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.Reference> builder) {
122        return plusPreviousValue(builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()));
123    }
124
125    /**
126     *  <p>Value before the change.</p>
127     * @param builder function to build the previousValue value
128     * @return Builder
129     */
130
131    public AddToCategoryChangeBuilder setPreviousValue(
132            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.Reference> builder) {
133        return previousValue(builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()));
134    }
135
136    /**
137     *  <p>Value after the change.</p>
138     * @param nextValue value to be set
139     * @return Builder
140     */
141
142    public AddToCategoryChangeBuilder nextValue(final com.commercetools.history.models.common.Reference... nextValue) {
143        this.nextValue = new ArrayList<>(Arrays.asList(nextValue));
144        return this;
145    }
146
147    /**
148     *  <p>Value after the change.</p>
149     * @param nextValue value to be set
150     * @return Builder
151     */
152
153    public AddToCategoryChangeBuilder nextValue(
154            final java.util.List<com.commercetools.history.models.common.Reference> nextValue) {
155        this.nextValue = nextValue;
156        return this;
157    }
158
159    /**
160     *  <p>Value after the change.</p>
161     * @param nextValue value to be set
162     * @return Builder
163     */
164
165    public AddToCategoryChangeBuilder plusNextValue(
166            final com.commercetools.history.models.common.Reference... nextValue) {
167        if (this.nextValue == null) {
168            this.nextValue = new ArrayList<>();
169        }
170        this.nextValue.addAll(Arrays.asList(nextValue));
171        return this;
172    }
173
174    /**
175     *  <p>Value after the change.</p>
176     * @param builder function to build the nextValue value
177     * @return Builder
178     */
179
180    public AddToCategoryChangeBuilder plusNextValue(
181            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.ReferenceBuilder> builder) {
182        if (this.nextValue == null) {
183            this.nextValue = new ArrayList<>();
184        }
185        this.nextValue.add(builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()).build());
186        return this;
187    }
188
189    /**
190     *  <p>Value after the change.</p>
191     * @param builder function to build the nextValue value
192     * @return Builder
193     */
194
195    public AddToCategoryChangeBuilder withNextValue(
196            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.ReferenceBuilder> builder) {
197        this.nextValue = new ArrayList<>();
198        this.nextValue.add(builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()).build());
199        return this;
200    }
201
202    /**
203     *  <p>Value after the change.</p>
204     * @param builder function to build the nextValue value
205     * @return Builder
206     */
207
208    public AddToCategoryChangeBuilder addNextValue(
209            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.Reference> builder) {
210        return plusNextValue(builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()));
211    }
212
213    /**
214     *  <p>Value after the change.</p>
215     * @param builder function to build the nextValue value
216     * @return Builder
217     */
218
219    public AddToCategoryChangeBuilder setNextValue(
220            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.Reference> builder) {
221        return nextValue(builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()));
222    }
223
224    /**
225     *  <p>Category to which the Product was added.</p>
226     * @param builder function to build the category value
227     * @return Builder
228     */
229
230    public AddToCategoryChangeBuilder category(
231            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.ReferenceBuilder> builder) {
232        this.category = builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()).build();
233        return this;
234    }
235
236    /**
237     *  <p>Category to which the Product was added.</p>
238     * @param builder function to build the category value
239     * @return Builder
240     */
241
242    public AddToCategoryChangeBuilder withCategory(
243            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.Reference> builder) {
244        this.category = builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of());
245        return this;
246    }
247
248    /**
249     *  <p>Category to which the Product was added.</p>
250     * @param category value to be set
251     * @return Builder
252     */
253
254    public AddToCategoryChangeBuilder category(final com.commercetools.history.models.common.Reference category) {
255        this.category = category;
256        return this;
257    }
258
259    /**
260     * value of change}
261     * @return change
262     */
263
264    public String getChange() {
265        return this.change;
266    }
267
268    /**
269     *  <p>Value before the change.</p>
270     * @return previousValue
271     */
272
273    public java.util.List<com.commercetools.history.models.common.Reference> getPreviousValue() {
274        return this.previousValue;
275    }
276
277    /**
278     *  <p>Value after the change.</p>
279     * @return nextValue
280     */
281
282    public java.util.List<com.commercetools.history.models.common.Reference> getNextValue() {
283        return this.nextValue;
284    }
285
286    /**
287     *  <p>Category to which the Product was added.</p>
288     * @return category
289     */
290
291    public com.commercetools.history.models.common.Reference getCategory() {
292        return this.category;
293    }
294
295    /**
296     * builds AddToCategoryChange with checking for non-null required values
297     * @return AddToCategoryChange
298     */
299    public AddToCategoryChange build() {
300        Objects.requireNonNull(change, AddToCategoryChange.class + ": change is missing");
301        Objects.requireNonNull(previousValue, AddToCategoryChange.class + ": previousValue is missing");
302        Objects.requireNonNull(nextValue, AddToCategoryChange.class + ": nextValue is missing");
303        Objects.requireNonNull(category, AddToCategoryChange.class + ": category is missing");
304        return new AddToCategoryChangeImpl(change, previousValue, nextValue, category);
305    }
306
307    /**
308     * builds AddToCategoryChange without checking for non-null required values
309     * @return AddToCategoryChange
310     */
311    public AddToCategoryChange buildUnchecked() {
312        return new AddToCategoryChangeImpl(change, previousValue, nextValue, category);
313    }
314
315    /**
316     * factory method for an instance of AddToCategoryChangeBuilder
317     * @return builder
318     */
319    public static AddToCategoryChangeBuilder of() {
320        return new AddToCategoryChangeBuilder();
321    }
322
323    /**
324     * create builder for AddToCategoryChange instance
325     * @param template instance with prefilled values for the builder
326     * @return builder
327     */
328    public static AddToCategoryChangeBuilder of(final AddToCategoryChange template) {
329        AddToCategoryChangeBuilder builder = new AddToCategoryChangeBuilder();
330        builder.change = template.getChange();
331        builder.previousValue = template.getPreviousValue();
332        builder.nextValue = template.getNextValue();
333        builder.category = template.getCategory();
334        return builder;
335    }
336
337}