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 * RemoveAssociateChangeBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     RemoveAssociateChange removeAssociateChange = RemoveAssociateChange.builder()
017 *             .change("{change}")
018 *             .previousValue(previousValueBuilder -> previousValueBuilder)
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 RemoveAssociateChangeBuilder implements Builder<RemoveAssociateChange> {
025
026    private String change;
027
028    private com.commercetools.history.models.common.Associate previousValue;
029
030    /**
031     * set the value to the change
032     * @param change value to be set
033     * @return Builder
034     */
035
036    public RemoveAssociateChangeBuilder change(final String change) {
037        this.change = change;
038        return this;
039    }
040
041    /**
042     *  <p>Value before the change.</p>
043     * @param builder function to build the previousValue value
044     * @return Builder
045     */
046
047    public RemoveAssociateChangeBuilder previousValue(
048            Function<com.commercetools.history.models.common.AssociateBuilder, com.commercetools.history.models.common.AssociateBuilder> builder) {
049        this.previousValue = builder.apply(com.commercetools.history.models.common.AssociateBuilder.of()).build();
050        return this;
051    }
052
053    /**
054     *  <p>Value before the change.</p>
055     * @param builder function to build the previousValue value
056     * @return Builder
057     */
058
059    public RemoveAssociateChangeBuilder withPreviousValue(
060            Function<com.commercetools.history.models.common.AssociateBuilder, com.commercetools.history.models.common.Associate> builder) {
061        this.previousValue = builder.apply(com.commercetools.history.models.common.AssociateBuilder.of());
062        return this;
063    }
064
065    /**
066     *  <p>Value before the change.</p>
067     * @param previousValue value to be set
068     * @return Builder
069     */
070
071    public RemoveAssociateChangeBuilder previousValue(
072            final com.commercetools.history.models.common.Associate previousValue) {
073        this.previousValue = previousValue;
074        return this;
075    }
076
077    /**
078     * value of change}
079     * @return change
080     */
081
082    public String getChange() {
083        return this.change;
084    }
085
086    /**
087     *  <p>Value before the change.</p>
088     * @return previousValue
089     */
090
091    public com.commercetools.history.models.common.Associate getPreviousValue() {
092        return this.previousValue;
093    }
094
095    /**
096     * builds RemoveAssociateChange with checking for non-null required values
097     * @return RemoveAssociateChange
098     */
099    public RemoveAssociateChange build() {
100        Objects.requireNonNull(change, RemoveAssociateChange.class + ": change is missing");
101        Objects.requireNonNull(previousValue, RemoveAssociateChange.class + ": previousValue is missing");
102        return new RemoveAssociateChangeImpl(change, previousValue);
103    }
104
105    /**
106     * builds RemoveAssociateChange without checking for non-null required values
107     * @return RemoveAssociateChange
108     */
109    public RemoveAssociateChange buildUnchecked() {
110        return new RemoveAssociateChangeImpl(change, previousValue);
111    }
112
113    /**
114     * factory method for an instance of RemoveAssociateChangeBuilder
115     * @return builder
116     */
117    public static RemoveAssociateChangeBuilder of() {
118        return new RemoveAssociateChangeBuilder();
119    }
120
121    /**
122     * create builder for RemoveAssociateChange instance
123     * @param template instance with prefilled values for the builder
124     * @return builder
125     */
126    public static RemoveAssociateChangeBuilder of(final RemoveAssociateChange template) {
127        RemoveAssociateChangeBuilder builder = new RemoveAssociateChangeBuilder();
128        builder.change = template.getChange();
129        builder.previousValue = template.getPreviousValue();
130        return builder;
131    }
132
133}