001
002package com.commercetools.api.models.order;
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 * OrderSetDeliveryAddressActionBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     OrderSetDeliveryAddressAction orderSetDeliveryAddressAction = OrderSetDeliveryAddressAction.builder()
019 *             .build()
020 * </code></pre>
021 * </div>
022 */
023@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
024public class OrderSetDeliveryAddressActionBuilder implements Builder<OrderSetDeliveryAddressAction> {
025
026    @Nullable
027    private String deliveryId;
028
029    @Nullable
030    private String deliveryKey;
031
032    @Nullable
033    private com.commercetools.api.models.common.BaseAddress address;
034
035    /**
036     *  <p><code>id</code> of an existing Delivery.</p>
037     *  <p>Either <code>deliveryId</code> or <code>deliveryKey</code> must be provided.</p>
038     * @param deliveryId value to be set
039     * @return Builder
040     */
041
042    public OrderSetDeliveryAddressActionBuilder deliveryId(@Nullable final String deliveryId) {
043        this.deliveryId = deliveryId;
044        return this;
045    }
046
047    /**
048     *  <p><code>key</code> of an existing Delivery.</p>
049     *  <p>Either <code>deliveryId</code> or <code>deliveryKey</code> must be provided.</p>
050     * @param deliveryKey value to be set
051     * @return Builder
052     */
053
054    public OrderSetDeliveryAddressActionBuilder deliveryKey(@Nullable final String deliveryKey) {
055        this.deliveryKey = deliveryKey;
056        return this;
057    }
058
059    /**
060     *  <p>Value to set. If empty, any existing value is removed.</p>
061     * @param builder function to build the address value
062     * @return Builder
063     */
064
065    public OrderSetDeliveryAddressActionBuilder address(
066            Function<com.commercetools.api.models.common.BaseAddressBuilder, com.commercetools.api.models.common.BaseAddressBuilder> builder) {
067        this.address = builder.apply(com.commercetools.api.models.common.BaseAddressBuilder.of()).build();
068        return this;
069    }
070
071    /**
072     *  <p>Value to set. If empty, any existing value is removed.</p>
073     * @param builder function to build the address value
074     * @return Builder
075     */
076
077    public OrderSetDeliveryAddressActionBuilder withAddress(
078            Function<com.commercetools.api.models.common.BaseAddressBuilder, com.commercetools.api.models.common.BaseAddress> builder) {
079        this.address = builder.apply(com.commercetools.api.models.common.BaseAddressBuilder.of());
080        return this;
081    }
082
083    /**
084     *  <p>Value to set. If empty, any existing value is removed.</p>
085     * @param address value to be set
086     * @return Builder
087     */
088
089    public OrderSetDeliveryAddressActionBuilder address(
090            @Nullable final com.commercetools.api.models.common.BaseAddress address) {
091        this.address = address;
092        return this;
093    }
094
095    /**
096     *  <p><code>id</code> of an existing Delivery.</p>
097     *  <p>Either <code>deliveryId</code> or <code>deliveryKey</code> must be provided.</p>
098     * @return deliveryId
099     */
100
101    @Nullable
102    public String getDeliveryId() {
103        return this.deliveryId;
104    }
105
106    /**
107     *  <p><code>key</code> of an existing Delivery.</p>
108     *  <p>Either <code>deliveryId</code> or <code>deliveryKey</code> must be provided.</p>
109     * @return deliveryKey
110     */
111
112    @Nullable
113    public String getDeliveryKey() {
114        return this.deliveryKey;
115    }
116
117    /**
118     *  <p>Value to set. If empty, any existing value is removed.</p>
119     * @return address
120     */
121
122    @Nullable
123    public com.commercetools.api.models.common.BaseAddress getAddress() {
124        return this.address;
125    }
126
127    /**
128     * builds OrderSetDeliveryAddressAction with checking for non-null required values
129     * @return OrderSetDeliveryAddressAction
130     */
131    public OrderSetDeliveryAddressAction build() {
132        return new OrderSetDeliveryAddressActionImpl(deliveryId, deliveryKey, address);
133    }
134
135    /**
136     * builds OrderSetDeliveryAddressAction without checking for non-null required values
137     * @return OrderSetDeliveryAddressAction
138     */
139    public OrderSetDeliveryAddressAction buildUnchecked() {
140        return new OrderSetDeliveryAddressActionImpl(deliveryId, deliveryKey, address);
141    }
142
143    /**
144     * factory method for an instance of OrderSetDeliveryAddressActionBuilder
145     * @return builder
146     */
147    public static OrderSetDeliveryAddressActionBuilder of() {
148        return new OrderSetDeliveryAddressActionBuilder();
149    }
150
151    /**
152     * create builder for OrderSetDeliveryAddressAction instance
153     * @param template instance with prefilled values for the builder
154     * @return builder
155     */
156    public static OrderSetDeliveryAddressActionBuilder of(final OrderSetDeliveryAddressAction template) {
157        OrderSetDeliveryAddressActionBuilder builder = new OrderSetDeliveryAddressActionBuilder();
158        builder.deliveryId = template.getDeliveryId();
159        builder.deliveryKey = template.getDeliveryKey();
160        builder.address = template.getAddress();
161        return builder;
162    }
163
164}