001
002package com.commercetools.history.models.change;
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 * AddDeliveryChangeBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     AddDeliveryChange addDeliveryChange = AddDeliveryChange.builder()
017 *             .change("{change}")
018 *             .previousValue(previousValueBuilder -> previousValueBuilder)
019 *             .nextValue(nextValueBuilder -> nextValueBuilder)
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 AddDeliveryChangeBuilder implements Builder<AddDeliveryChange> {
026
027    private String change;
028
029    private com.commercetools.history.models.change_value.DeliveryChangeValue previousValue;
030
031    private com.commercetools.history.models.change_value.DeliveryChangeValue nextValue;
032
033    /**
034     * set the value to the change
035     * @param change value to be set
036     * @return Builder
037     */
038
039    public AddDeliveryChangeBuilder change(final String change) {
040        this.change = change;
041        return this;
042    }
043
044    /**
045     *  <p>Value before the change.</p>
046     * @param builder function to build the previousValue value
047     * @return Builder
048     */
049
050    public AddDeliveryChangeBuilder previousValue(
051            Function<com.commercetools.history.models.change_value.DeliveryChangeValueBuilder, com.commercetools.history.models.change_value.DeliveryChangeValueBuilder> builder) {
052        this.previousValue = builder
053                .apply(com.commercetools.history.models.change_value.DeliveryChangeValueBuilder.of())
054                .build();
055        return this;
056    }
057
058    /**
059     *  <p>Value before the change.</p>
060     * @param builder function to build the previousValue value
061     * @return Builder
062     */
063
064    public AddDeliveryChangeBuilder withPreviousValue(
065            Function<com.commercetools.history.models.change_value.DeliveryChangeValueBuilder, com.commercetools.history.models.change_value.DeliveryChangeValue> builder) {
066        this.previousValue = builder
067                .apply(com.commercetools.history.models.change_value.DeliveryChangeValueBuilder.of());
068        return this;
069    }
070
071    /**
072     *  <p>Value before the change.</p>
073     * @param previousValue value to be set
074     * @return Builder
075     */
076
077    public AddDeliveryChangeBuilder previousValue(
078            final com.commercetools.history.models.change_value.DeliveryChangeValue previousValue) {
079        this.previousValue = previousValue;
080        return this;
081    }
082
083    /**
084     *  <p>Value after the change.</p>
085     * @param builder function to build the nextValue value
086     * @return Builder
087     */
088
089    public AddDeliveryChangeBuilder nextValue(
090            Function<com.commercetools.history.models.change_value.DeliveryChangeValueBuilder, com.commercetools.history.models.change_value.DeliveryChangeValueBuilder> builder) {
091        this.nextValue = builder.apply(com.commercetools.history.models.change_value.DeliveryChangeValueBuilder.of())
092                .build();
093        return this;
094    }
095
096    /**
097     *  <p>Value after the change.</p>
098     * @param builder function to build the nextValue value
099     * @return Builder
100     */
101
102    public AddDeliveryChangeBuilder withNextValue(
103            Function<com.commercetools.history.models.change_value.DeliveryChangeValueBuilder, com.commercetools.history.models.change_value.DeliveryChangeValue> builder) {
104        this.nextValue = builder.apply(com.commercetools.history.models.change_value.DeliveryChangeValueBuilder.of());
105        return this;
106    }
107
108    /**
109     *  <p>Value after the change.</p>
110     * @param nextValue value to be set
111     * @return Builder
112     */
113
114    public AddDeliveryChangeBuilder nextValue(
115            final com.commercetools.history.models.change_value.DeliveryChangeValue nextValue) {
116        this.nextValue = nextValue;
117        return this;
118    }
119
120    /**
121     * value of change}
122     * @return change
123     */
124
125    public String getChange() {
126        return this.change;
127    }
128
129    /**
130     *  <p>Value before the change.</p>
131     * @return previousValue
132     */
133
134    public com.commercetools.history.models.change_value.DeliveryChangeValue getPreviousValue() {
135        return this.previousValue;
136    }
137
138    /**
139     *  <p>Value after the change.</p>
140     * @return nextValue
141     */
142
143    public com.commercetools.history.models.change_value.DeliveryChangeValue getNextValue() {
144        return this.nextValue;
145    }
146
147    /**
148     * builds AddDeliveryChange with checking for non-null required values
149     * @return AddDeliveryChange
150     */
151    public AddDeliveryChange build() {
152        Objects.requireNonNull(change, AddDeliveryChange.class + ": change is missing");
153        Objects.requireNonNull(previousValue, AddDeliveryChange.class + ": previousValue is missing");
154        Objects.requireNonNull(nextValue, AddDeliveryChange.class + ": nextValue is missing");
155        return new AddDeliveryChangeImpl(change, previousValue, nextValue);
156    }
157
158    /**
159     * builds AddDeliveryChange without checking for non-null required values
160     * @return AddDeliveryChange
161     */
162    public AddDeliveryChange buildUnchecked() {
163        return new AddDeliveryChangeImpl(change, previousValue, nextValue);
164    }
165
166    /**
167     * factory method for an instance of AddDeliveryChangeBuilder
168     * @return builder
169     */
170    public static AddDeliveryChangeBuilder of() {
171        return new AddDeliveryChangeBuilder();
172    }
173
174    /**
175     * create builder for AddDeliveryChange instance
176     * @param template instance with prefilled values for the builder
177     * @return builder
178     */
179    public static AddDeliveryChangeBuilder of(final AddDeliveryChange template) {
180        AddDeliveryChangeBuilder builder = new AddDeliveryChangeBuilder();
181        builder.change = template.getChange();
182        builder.previousValue = template.getPreviousValue();
183        builder.nextValue = template.getNextValue();
184        return builder;
185    }
186
187}