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