001
002package com.commercetools.importapi.models.customfields;
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 * ReferenceSetFieldBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     ReferenceSetField referenceSetField = ReferenceSetField.builder()
017 *             .plusValue(valueBuilder -> valueBuilder)
018 *             .build()
019 * </code></pre>
020 * </div>
021 */
022@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
023public class ReferenceSetFieldBuilder implements Builder<ReferenceSetField> {
024
025    private java.util.List<com.commercetools.importapi.models.common.KeyReference> value;
026
027    /**
028     * set values to the value
029     * @param value value to be set
030     * @return Builder
031     */
032
033    public ReferenceSetFieldBuilder value(final com.commercetools.importapi.models.common.KeyReference... value) {
034        this.value = new ArrayList<>(Arrays.asList(value));
035        return this;
036    }
037
038    /**
039     * set value to the value
040     * @param value value to be set
041     * @return Builder
042     */
043
044    public ReferenceSetFieldBuilder value(
045            final java.util.List<com.commercetools.importapi.models.common.KeyReference> value) {
046        this.value = value;
047        return this;
048    }
049
050    /**
051     * add values to the value
052     * @param value value to be set
053     * @return Builder
054     */
055
056    public ReferenceSetFieldBuilder plusValue(final com.commercetools.importapi.models.common.KeyReference... value) {
057        if (this.value == null) {
058            this.value = new ArrayList<>();
059        }
060        this.value.addAll(Arrays.asList(value));
061        return this;
062    }
063
064    /**
065     * add a value to the value using the builder function
066     * @param builder function to build the value value
067     * @return Builder
068     */
069
070    public ReferenceSetFieldBuilder plusValue(
071            Function<com.commercetools.importapi.models.common.KeyReferenceBuilder, Builder<? extends com.commercetools.importapi.models.common.KeyReference>> builder) {
072        if (this.value == null) {
073            this.value = new ArrayList<>();
074        }
075        this.value.add(builder.apply(com.commercetools.importapi.models.common.KeyReferenceBuilder.of()).build());
076        return this;
077    }
078
079    /**
080     * set the value to the value using the builder function
081     * @param builder function to build the value value
082     * @return Builder
083     */
084
085    public ReferenceSetFieldBuilder withValue(
086            Function<com.commercetools.importapi.models.common.KeyReferenceBuilder, Builder<? extends com.commercetools.importapi.models.common.KeyReference>> builder) {
087        this.value = new ArrayList<>();
088        this.value.add(builder.apply(com.commercetools.importapi.models.common.KeyReferenceBuilder.of()).build());
089        return this;
090    }
091
092    /**
093     * value of value}
094     * @return value
095     */
096
097    public java.util.List<com.commercetools.importapi.models.common.KeyReference> getValue() {
098        return this.value;
099    }
100
101    /**
102     * builds ReferenceSetField with checking for non-null required values
103     * @return ReferenceSetField
104     */
105    public ReferenceSetField build() {
106        Objects.requireNonNull(value, ReferenceSetField.class + ": value is missing");
107        return new ReferenceSetFieldImpl(value);
108    }
109
110    /**
111     * builds ReferenceSetField without checking for non-null required values
112     * @return ReferenceSetField
113     */
114    public ReferenceSetField buildUnchecked() {
115        return new ReferenceSetFieldImpl(value);
116    }
117
118    /**
119     * factory method for an instance of ReferenceSetFieldBuilder
120     * @return builder
121     */
122    public static ReferenceSetFieldBuilder of() {
123        return new ReferenceSetFieldBuilder();
124    }
125
126    /**
127     * create builder for ReferenceSetField instance
128     * @param template instance with prefilled values for the builder
129     * @return builder
130     */
131    public static ReferenceSetFieldBuilder of(final ReferenceSetField template) {
132        ReferenceSetFieldBuilder builder = new ReferenceSetFieldBuilder();
133        builder.value = template.getValue();
134        return builder;
135    }
136
137}