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