001
002package com.commercetools.history.models.change_value;
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 * DeliveryChangeValueBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     DeliveryChangeValue deliveryChangeValue = DeliveryChangeValue.builder()
017 *             .plusItems(itemsBuilder -> itemsBuilder)
018 *             .address(addressBuilder -> addressBuilder)
019 *             .plusParcels(parcelsBuilder -> parcelsBuilder)
020 *             .build()
021 * </code></pre>
022 * </div>
023 */
024@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
025public class DeliveryChangeValueBuilder implements Builder<DeliveryChangeValue> {
026
027    private java.util.List<com.commercetools.history.models.common.DeliveryItem> items;
028
029    private com.commercetools.history.models.common.Address address;
030
031    private java.util.List<com.commercetools.history.models.common.Parcel> parcels;
032
033    /**
034     *  <p>Line Items or Custom Line Items shipped in the Delivery.</p>
035     * @param items value to be set
036     * @return Builder
037     */
038
039    public DeliveryChangeValueBuilder items(final com.commercetools.history.models.common.DeliveryItem... items) {
040        this.items = new ArrayList<>(Arrays.asList(items));
041        return this;
042    }
043
044    /**
045     *  <p>Line Items or Custom Line Items shipped in the Delivery.</p>
046     * @param items value to be set
047     * @return Builder
048     */
049
050    public DeliveryChangeValueBuilder items(
051            final java.util.List<com.commercetools.history.models.common.DeliveryItem> items) {
052        this.items = items;
053        return this;
054    }
055
056    /**
057     *  <p>Line Items or Custom Line Items shipped in the Delivery.</p>
058     * @param items value to be set
059     * @return Builder
060     */
061
062    public DeliveryChangeValueBuilder plusItems(final com.commercetools.history.models.common.DeliveryItem... items) {
063        if (this.items == null) {
064            this.items = new ArrayList<>();
065        }
066        this.items.addAll(Arrays.asList(items));
067        return this;
068    }
069
070    /**
071     *  <p>Line Items or Custom Line Items shipped in the Delivery.</p>
072     * @param builder function to build the items value
073     * @return Builder
074     */
075
076    public DeliveryChangeValueBuilder plusItems(
077            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItemBuilder> builder) {
078        if (this.items == null) {
079            this.items = new ArrayList<>();
080        }
081        this.items.add(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()).build());
082        return this;
083    }
084
085    /**
086     *  <p>Line Items or Custom Line Items shipped in the Delivery.</p>
087     * @param builder function to build the items value
088     * @return Builder
089     */
090
091    public DeliveryChangeValueBuilder withItems(
092            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItemBuilder> builder) {
093        this.items = new ArrayList<>();
094        this.items.add(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()).build());
095        return this;
096    }
097
098    /**
099     *  <p>Line Items or Custom Line Items shipped in the Delivery.</p>
100     * @param builder function to build the items value
101     * @return Builder
102     */
103
104    public DeliveryChangeValueBuilder addItems(
105            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItem> builder) {
106        return plusItems(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()));
107    }
108
109    /**
110     *  <p>Line Items or Custom Line Items shipped in the Delivery.</p>
111     * @param builder function to build the items value
112     * @return Builder
113     */
114
115    public DeliveryChangeValueBuilder setItems(
116            Function<com.commercetools.history.models.common.DeliveryItemBuilder, com.commercetools.history.models.common.DeliveryItem> builder) {
117        return items(builder.apply(com.commercetools.history.models.common.DeliveryItemBuilder.of()));
118    }
119
120    /**
121     *  <p>Address to which the parcels are delivered.</p>
122     * @param builder function to build the address value
123     * @return Builder
124     */
125
126    public DeliveryChangeValueBuilder address(
127            Function<com.commercetools.history.models.common.AddressBuilder, com.commercetools.history.models.common.AddressBuilder> builder) {
128        this.address = builder.apply(com.commercetools.history.models.common.AddressBuilder.of()).build();
129        return this;
130    }
131
132    /**
133     *  <p>Address to which the parcels are delivered.</p>
134     * @param builder function to build the address value
135     * @return Builder
136     */
137
138    public DeliveryChangeValueBuilder withAddress(
139            Function<com.commercetools.history.models.common.AddressBuilder, com.commercetools.history.models.common.Address> builder) {
140        this.address = builder.apply(com.commercetools.history.models.common.AddressBuilder.of());
141        return this;
142    }
143
144    /**
145     *  <p>Address to which the parcels are delivered.</p>
146     * @param address value to be set
147     * @return Builder
148     */
149
150    public DeliveryChangeValueBuilder address(final com.commercetools.history.models.common.Address address) {
151        this.address = address;
152        return this;
153    }
154
155    /**
156     *  <p>Parcels included in the Delivery.</p>
157     * @param parcels value to be set
158     * @return Builder
159     */
160
161    public DeliveryChangeValueBuilder parcels(final com.commercetools.history.models.common.Parcel... parcels) {
162        this.parcels = new ArrayList<>(Arrays.asList(parcels));
163        return this;
164    }
165
166    /**
167     *  <p>Parcels included in the Delivery.</p>
168     * @param parcels value to be set
169     * @return Builder
170     */
171
172    public DeliveryChangeValueBuilder parcels(
173            final java.util.List<com.commercetools.history.models.common.Parcel> parcels) {
174        this.parcels = parcels;
175        return this;
176    }
177
178    /**
179     *  <p>Parcels included in the Delivery.</p>
180     * @param parcels value to be set
181     * @return Builder
182     */
183
184    public DeliveryChangeValueBuilder plusParcels(final com.commercetools.history.models.common.Parcel... parcels) {
185        if (this.parcels == null) {
186            this.parcels = new ArrayList<>();
187        }
188        this.parcels.addAll(Arrays.asList(parcels));
189        return this;
190    }
191
192    /**
193     *  <p>Parcels included in the Delivery.</p>
194     * @param builder function to build the parcels value
195     * @return Builder
196     */
197
198    public DeliveryChangeValueBuilder plusParcels(
199            Function<com.commercetools.history.models.common.ParcelBuilder, com.commercetools.history.models.common.ParcelBuilder> builder) {
200        if (this.parcels == null) {
201            this.parcels = new ArrayList<>();
202        }
203        this.parcels.add(builder.apply(com.commercetools.history.models.common.ParcelBuilder.of()).build());
204        return this;
205    }
206
207    /**
208     *  <p>Parcels included in the Delivery.</p>
209     * @param builder function to build the parcels value
210     * @return Builder
211     */
212
213    public DeliveryChangeValueBuilder withParcels(
214            Function<com.commercetools.history.models.common.ParcelBuilder, com.commercetools.history.models.common.ParcelBuilder> builder) {
215        this.parcels = new ArrayList<>();
216        this.parcels.add(builder.apply(com.commercetools.history.models.common.ParcelBuilder.of()).build());
217        return this;
218    }
219
220    /**
221     *  <p>Parcels included in the Delivery.</p>
222     * @param builder function to build the parcels value
223     * @return Builder
224     */
225
226    public DeliveryChangeValueBuilder addParcels(
227            Function<com.commercetools.history.models.common.ParcelBuilder, com.commercetools.history.models.common.Parcel> builder) {
228        return plusParcels(builder.apply(com.commercetools.history.models.common.ParcelBuilder.of()));
229    }
230
231    /**
232     *  <p>Parcels included in the Delivery.</p>
233     * @param builder function to build the parcels value
234     * @return Builder
235     */
236
237    public DeliveryChangeValueBuilder setParcels(
238            Function<com.commercetools.history.models.common.ParcelBuilder, com.commercetools.history.models.common.Parcel> builder) {
239        return parcels(builder.apply(com.commercetools.history.models.common.ParcelBuilder.of()));
240    }
241
242    /**
243     *  <p>Line Items or Custom Line Items shipped in the Delivery.</p>
244     * @return items
245     */
246
247    public java.util.List<com.commercetools.history.models.common.DeliveryItem> getItems() {
248        return this.items;
249    }
250
251    /**
252     *  <p>Address to which the parcels are delivered.</p>
253     * @return address
254     */
255
256    public com.commercetools.history.models.common.Address getAddress() {
257        return this.address;
258    }
259
260    /**
261     *  <p>Parcels included in the Delivery.</p>
262     * @return parcels
263     */
264
265    public java.util.List<com.commercetools.history.models.common.Parcel> getParcels() {
266        return this.parcels;
267    }
268
269    /**
270     * builds DeliveryChangeValue with checking for non-null required values
271     * @return DeliveryChangeValue
272     */
273    public DeliveryChangeValue build() {
274        Objects.requireNonNull(items, DeliveryChangeValue.class + ": items is missing");
275        Objects.requireNonNull(address, DeliveryChangeValue.class + ": address is missing");
276        Objects.requireNonNull(parcels, DeliveryChangeValue.class + ": parcels is missing");
277        return new DeliveryChangeValueImpl(items, address, parcels);
278    }
279
280    /**
281     * builds DeliveryChangeValue without checking for non-null required values
282     * @return DeliveryChangeValue
283     */
284    public DeliveryChangeValue buildUnchecked() {
285        return new DeliveryChangeValueImpl(items, address, parcels);
286    }
287
288    /**
289     * factory method for an instance of DeliveryChangeValueBuilder
290     * @return builder
291     */
292    public static DeliveryChangeValueBuilder of() {
293        return new DeliveryChangeValueBuilder();
294    }
295
296    /**
297     * create builder for DeliveryChangeValue instance
298     * @param template instance with prefilled values for the builder
299     * @return builder
300     */
301    public static DeliveryChangeValueBuilder of(final DeliveryChangeValue template) {
302        DeliveryChangeValueBuilder builder = new DeliveryChangeValueBuilder();
303        builder.items = template.getItems();
304        builder.address = template.getAddress();
305        builder.parcels = template.getParcels();
306        return builder;
307    }
308
309}