001
002package com.commercetools.api.models.message;
003
004import java.util.*;
005import java.util.function.Function;
006
007import javax.annotation.Nullable;
008
009import io.vrap.rmf.base.client.Builder;
010import io.vrap.rmf.base.client.utils.Generated;
011
012/**
013 * ParcelRemovedFromDeliveryMessagePayloadBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     ParcelRemovedFromDeliveryMessagePayload parcelRemovedFromDeliveryMessagePayload = ParcelRemovedFromDeliveryMessagePayload.builder()
019 *             .deliveryId("{deliveryId}")
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 ParcelRemovedFromDeliveryMessagePayloadBuilder
027        implements Builder<ParcelRemovedFromDeliveryMessagePayload> {
028
029    private String deliveryId;
030
031    private com.commercetools.api.models.order.Parcel parcel;
032
033    @Nullable
034    private String shippingKey;
035
036    /**
037     *  <p>Unique identifier of the Delivery.</p>
038     * @param deliveryId value to be set
039     * @return Builder
040     */
041
042    public ParcelRemovedFromDeliveryMessagePayloadBuilder deliveryId(final String deliveryId) {
043        this.deliveryId = deliveryId;
044        return this;
045    }
046
047    /**
048     *  <p>Parcel that was removed from the Delivery.</p>
049     * @param builder function to build the parcel value
050     * @return Builder
051     */
052
053    public ParcelRemovedFromDeliveryMessagePayloadBuilder parcel(
054            Function<com.commercetools.api.models.order.ParcelBuilder, com.commercetools.api.models.order.ParcelBuilder> builder) {
055        this.parcel = builder.apply(com.commercetools.api.models.order.ParcelBuilder.of()).build();
056        return this;
057    }
058
059    /**
060     *  <p>Parcel that was removed from the Delivery.</p>
061     * @param builder function to build the parcel value
062     * @return Builder
063     */
064
065    public ParcelRemovedFromDeliveryMessagePayloadBuilder withParcel(
066            Function<com.commercetools.api.models.order.ParcelBuilder, com.commercetools.api.models.order.Parcel> builder) {
067        this.parcel = builder.apply(com.commercetools.api.models.order.ParcelBuilder.of());
068        return this;
069    }
070
071    /**
072     *  <p>Parcel that was removed from the Delivery.</p>
073     * @param parcel value to be set
074     * @return Builder
075     */
076
077    public ParcelRemovedFromDeliveryMessagePayloadBuilder parcel(
078            final com.commercetools.api.models.order.Parcel parcel) {
079        this.parcel = parcel;
080        return this;
081    }
082
083    /**
084     *  <p>User-defined unique identifier of the Shipping Method in a Cart with <code>Multiple</code> ShippingMode.</p>
085     * @param shippingKey value to be set
086     * @return Builder
087     */
088
089    public ParcelRemovedFromDeliveryMessagePayloadBuilder shippingKey(@Nullable final String shippingKey) {
090        this.shippingKey = shippingKey;
091        return this;
092    }
093
094    /**
095     *  <p>Unique identifier of the Delivery.</p>
096     * @return deliveryId
097     */
098
099    public String getDeliveryId() {
100        return this.deliveryId;
101    }
102
103    /**
104     *  <p>Parcel that was removed from the Delivery.</p>
105     * @return parcel
106     */
107
108    public com.commercetools.api.models.order.Parcel getParcel() {
109        return this.parcel;
110    }
111
112    /**
113     *  <p>User-defined unique identifier of the Shipping Method in a Cart with <code>Multiple</code> ShippingMode.</p>
114     * @return shippingKey
115     */
116
117    @Nullable
118    public String getShippingKey() {
119        return this.shippingKey;
120    }
121
122    /**
123     * builds ParcelRemovedFromDeliveryMessagePayload with checking for non-null required values
124     * @return ParcelRemovedFromDeliveryMessagePayload
125     */
126    public ParcelRemovedFromDeliveryMessagePayload build() {
127        Objects.requireNonNull(deliveryId, ParcelRemovedFromDeliveryMessagePayload.class + ": deliveryId is missing");
128        Objects.requireNonNull(parcel, ParcelRemovedFromDeliveryMessagePayload.class + ": parcel is missing");
129        return new ParcelRemovedFromDeliveryMessagePayloadImpl(deliveryId, parcel, shippingKey);
130    }
131
132    /**
133     * builds ParcelRemovedFromDeliveryMessagePayload without checking for non-null required values
134     * @return ParcelRemovedFromDeliveryMessagePayload
135     */
136    public ParcelRemovedFromDeliveryMessagePayload buildUnchecked() {
137        return new ParcelRemovedFromDeliveryMessagePayloadImpl(deliveryId, parcel, shippingKey);
138    }
139
140    /**
141     * factory method for an instance of ParcelRemovedFromDeliveryMessagePayloadBuilder
142     * @return builder
143     */
144    public static ParcelRemovedFromDeliveryMessagePayloadBuilder of() {
145        return new ParcelRemovedFromDeliveryMessagePayloadBuilder();
146    }
147
148    /**
149     * create builder for ParcelRemovedFromDeliveryMessagePayload instance
150     * @param template instance with prefilled values for the builder
151     * @return builder
152     */
153    public static ParcelRemovedFromDeliveryMessagePayloadBuilder of(
154            final ParcelRemovedFromDeliveryMessagePayload template) {
155        ParcelRemovedFromDeliveryMessagePayloadBuilder builder = new ParcelRemovedFromDeliveryMessagePayloadBuilder();
156        builder.deliveryId = template.getDeliveryId();
157        builder.parcel = template.getParcel();
158        builder.shippingKey = template.getShippingKey();
159        return builder;
160    }
161
162}