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 * SetParcelItemsChangeBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     SetParcelItemsChange setParcelItemsChange = SetParcelItemsChange.builder()
017 *             .change("{change}")
018 *             .plusPreviousValue(previousValueBuilder -> previousValueBuilder)
019 *             .plusNextValue(nextValueBuilder -> nextValueBuilder)
020 *             .parcel(parcelBuilder -> parcelBuilder)
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 SetParcelItemsChangeBuilder implements Builder<SetParcelItemsChange> {
027
028    private String change;
029
030    private java.util.List<com.commercetools.history.models.common.DeliveryItem> previousValue;
031
032    private java.util.List<com.commercetools.history.models.common.DeliveryItem> nextValue;
033
034    private com.commercetools.history.models.change_value.ParcelChangeValue parcel;
035
036    /**
037     * set the value to the change
038     * @param change value to be set
039     * @return Builder
040     */
041
042    public SetParcelItemsChangeBuilder 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 SetParcelItemsChangeBuilder previousValue(
054            final com.commercetools.history.models.common.DeliveryItem... 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 SetParcelItemsChangeBuilder previousValue(
066            final java.util.List<com.commercetools.history.models.common.DeliveryItem> 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 SetParcelItemsChangeBuilder plusPreviousValue(
078            final com.commercetools.history.models.common.DeliveryItem... 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 SetParcelItemsChangeBuilder plusPreviousValue(
093            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItemBuilder> builder) {
094        if (this.previousValue == null) {
095            this.previousValue = new ArrayList<>();
096        }
097        this.previousValue.add(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.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 SetParcelItemsChangeBuilder withPreviousValue(
108            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItemBuilder> builder) {
109        this.previousValue = new ArrayList<>();
110        this.previousValue.add(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.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 SetParcelItemsChangeBuilder addPreviousValue(
121            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItem> builder) {
122        return plusPreviousValue(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.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 SetParcelItemsChangeBuilder setPreviousValue(
132            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItem> builder) {
133        return previousValue(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.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 SetParcelItemsChangeBuilder nextValue(
143            final com.commercetools.history.models.common.DeliveryItem... nextValue) {
144        this.nextValue = new ArrayList<>(Arrays.asList(nextValue));
145        return this;
146    }
147
148    /**
149     *  <p>Value after the change.</p>
150     * @param nextValue value to be set
151     * @return Builder
152     */
153
154    public SetParcelItemsChangeBuilder nextValue(
155            final java.util.List<com.commercetools.history.models.common.DeliveryItem> nextValue) {
156        this.nextValue = nextValue;
157        return this;
158    }
159
160    /**
161     *  <p>Value after the change.</p>
162     * @param nextValue value to be set
163     * @return Builder
164     */
165
166    public SetParcelItemsChangeBuilder plusNextValue(
167            final com.commercetools.history.models.common.DeliveryItem... nextValue) {
168        if (this.nextValue == null) {
169            this.nextValue = new ArrayList<>();
170        }
171        this.nextValue.addAll(Arrays.asList(nextValue));
172        return this;
173    }
174
175    /**
176     *  <p>Value after the change.</p>
177     * @param builder function to build the nextValue value
178     * @return Builder
179     */
180
181    public SetParcelItemsChangeBuilder plusNextValue(
182            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItemBuilder> builder) {
183        if (this.nextValue == null) {
184            this.nextValue = new ArrayList<>();
185        }
186        this.nextValue.add(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()).build());
187        return this;
188    }
189
190    /**
191     *  <p>Value after the change.</p>
192     * @param builder function to build the nextValue value
193     * @return Builder
194     */
195
196    public SetParcelItemsChangeBuilder withNextValue(
197            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItemBuilder> builder) {
198        this.nextValue = new ArrayList<>();
199        this.nextValue.add(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()).build());
200        return this;
201    }
202
203    /**
204     *  <p>Value after the change.</p>
205     * @param builder function to build the nextValue value
206     * @return Builder
207     */
208
209    public SetParcelItemsChangeBuilder addNextValue(
210            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItem> builder) {
211        return plusNextValue(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()));
212    }
213
214    /**
215     *  <p>Value after the change.</p>
216     * @param builder function to build the nextValue value
217     * @return Builder
218     */
219
220    public SetParcelItemsChangeBuilder setNextValue(
221            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItem> builder) {
222        return nextValue(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()));
223    }
224
225    /**
226     *  <p>Information about the updated Parcel.</p>
227     * @param builder function to build the parcel value
228     * @return Builder
229     */
230
231    public SetParcelItemsChangeBuilder parcel(
232            Function<com.commercetools.history.models.change_value.ParcelChangeValueBuilder, com.commercetools.history.models.change_value.ParcelChangeValueBuilder> builder) {
233        this.parcel = builder.apply(com.commercetools.history.models.change_value.ParcelChangeValueBuilder.of())
234                .build();
235        return this;
236    }
237
238    /**
239     *  <p>Information about the updated Parcel.</p>
240     * @param builder function to build the parcel value
241     * @return Builder
242     */
243
244    public SetParcelItemsChangeBuilder withParcel(
245            Function<com.commercetools.history.models.change_value.ParcelChangeValueBuilder, com.commercetools.history.models.change_value.ParcelChangeValue> builder) {
246        this.parcel = builder.apply(com.commercetools.history.models.change_value.ParcelChangeValueBuilder.of());
247        return this;
248    }
249
250    /**
251     *  <p>Information about the updated Parcel.</p>
252     * @param parcel value to be set
253     * @return Builder
254     */
255
256    public SetParcelItemsChangeBuilder parcel(
257            final com.commercetools.history.models.change_value.ParcelChangeValue parcel) {
258        this.parcel = parcel;
259        return this;
260    }
261
262    /**
263     * value of change}
264     * @return change
265     */
266
267    public String getChange() {
268        return this.change;
269    }
270
271    /**
272     *  <p>Value before the change.</p>
273     * @return previousValue
274     */
275
276    public java.util.List<com.commercetools.history.models.common.DeliveryItem> getPreviousValue() {
277        return this.previousValue;
278    }
279
280    /**
281     *  <p>Value after the change.</p>
282     * @return nextValue
283     */
284
285    public java.util.List<com.commercetools.history.models.common.DeliveryItem> getNextValue() {
286        return this.nextValue;
287    }
288
289    /**
290     *  <p>Information about the updated Parcel.</p>
291     * @return parcel
292     */
293
294    public com.commercetools.history.models.change_value.ParcelChangeValue getParcel() {
295        return this.parcel;
296    }
297
298    /**
299     * builds SetParcelItemsChange with checking for non-null required values
300     * @return SetParcelItemsChange
301     */
302    public SetParcelItemsChange build() {
303        Objects.requireNonNull(change, SetParcelItemsChange.class + ": change is missing");
304        Objects.requireNonNull(previousValue, SetParcelItemsChange.class + ": previousValue is missing");
305        Objects.requireNonNull(nextValue, SetParcelItemsChange.class + ": nextValue is missing");
306        Objects.requireNonNull(parcel, SetParcelItemsChange.class + ": parcel is missing");
307        return new SetParcelItemsChangeImpl(change, previousValue, nextValue, parcel);
308    }
309
310    /**
311     * builds SetParcelItemsChange without checking for non-null required values
312     * @return SetParcelItemsChange
313     */
314    public SetParcelItemsChange buildUnchecked() {
315        return new SetParcelItemsChangeImpl(change, previousValue, nextValue, parcel);
316    }
317
318    /**
319     * factory method for an instance of SetParcelItemsChangeBuilder
320     * @return builder
321     */
322    public static SetParcelItemsChangeBuilder of() {
323        return new SetParcelItemsChangeBuilder();
324    }
325
326    /**
327     * create builder for SetParcelItemsChange instance
328     * @param template instance with prefilled values for the builder
329     * @return builder
330     */
331    public static SetParcelItemsChangeBuilder of(final SetParcelItemsChange template) {
332        SetParcelItemsChangeBuilder builder = new SetParcelItemsChangeBuilder();
333        builder.change = template.getChange();
334        builder.previousValue = template.getPreviousValue();
335        builder.nextValue = template.getNextValue();
336        builder.parcel = template.getParcel();
337        return builder;
338    }
339
340}