001
002package com.commercetools.importapi.models.types;
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 * CustomFieldEnumTypeBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     CustomFieldEnumType customFieldEnumType = CustomFieldEnumType.builder()
017 *             .plusValues(valuesBuilder -> valuesBuilder)
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 CustomFieldEnumTypeBuilder implements Builder<CustomFieldEnumType> {
024
025    private java.util.List<com.commercetools.importapi.models.types.CustomFieldEnumValue> values;
026
027    /**
028     *  <p>Allowed values.</p>
029     * @param values value to be set
030     * @return Builder
031     */
032
033    public CustomFieldEnumTypeBuilder values(
034            final com.commercetools.importapi.models.types.CustomFieldEnumValue... values) {
035        this.values = new ArrayList<>(Arrays.asList(values));
036        return this;
037    }
038
039    /**
040     *  <p>Allowed values.</p>
041     * @param values value to be set
042     * @return Builder
043     */
044
045    public CustomFieldEnumTypeBuilder values(
046            final java.util.List<com.commercetools.importapi.models.types.CustomFieldEnumValue> values) {
047        this.values = values;
048        return this;
049    }
050
051    /**
052     *  <p>Allowed values.</p>
053     * @param values value to be set
054     * @return Builder
055     */
056
057    public CustomFieldEnumTypeBuilder plusValues(
058            final com.commercetools.importapi.models.types.CustomFieldEnumValue... values) {
059        if (this.values == null) {
060            this.values = new ArrayList<>();
061        }
062        this.values.addAll(Arrays.asList(values));
063        return this;
064    }
065
066    /**
067     *  <p>Allowed values.</p>
068     * @param builder function to build the values value
069     * @return Builder
070     */
071
072    public CustomFieldEnumTypeBuilder plusValues(
073            Function<com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder, com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder> builder) {
074        if (this.values == null) {
075            this.values = new ArrayList<>();
076        }
077        this.values
078                .add(builder.apply(com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder.of()).build());
079        return this;
080    }
081
082    /**
083     *  <p>Allowed values.</p>
084     * @param builder function to build the values value
085     * @return Builder
086     */
087
088    public CustomFieldEnumTypeBuilder withValues(
089            Function<com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder, com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder> builder) {
090        this.values = new ArrayList<>();
091        this.values
092                .add(builder.apply(com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder.of()).build());
093        return this;
094    }
095
096    /**
097     *  <p>Allowed values.</p>
098     * @param builder function to build the values value
099     * @return Builder
100     */
101
102    public CustomFieldEnumTypeBuilder addValues(
103            Function<com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder, com.commercetools.importapi.models.types.CustomFieldEnumValue> builder) {
104        return plusValues(builder.apply(com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder.of()));
105    }
106
107    /**
108     *  <p>Allowed values.</p>
109     * @param builder function to build the values value
110     * @return Builder
111     */
112
113    public CustomFieldEnumTypeBuilder setValues(
114            Function<com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder, com.commercetools.importapi.models.types.CustomFieldEnumValue> builder) {
115        return values(builder.apply(com.commercetools.importapi.models.types.CustomFieldEnumValueBuilder.of()));
116    }
117
118    /**
119     *  <p>Allowed values.</p>
120     * @return values
121     */
122
123    public java.util.List<com.commercetools.importapi.models.types.CustomFieldEnumValue> getValues() {
124        return this.values;
125    }
126
127    /**
128     * builds CustomFieldEnumType with checking for non-null required values
129     * @return CustomFieldEnumType
130     */
131    public CustomFieldEnumType build() {
132        Objects.requireNonNull(values, CustomFieldEnumType.class + ": values is missing");
133        return new CustomFieldEnumTypeImpl(values);
134    }
135
136    /**
137     * builds CustomFieldEnumType without checking for non-null required values
138     * @return CustomFieldEnumType
139     */
140    public CustomFieldEnumType buildUnchecked() {
141        return new CustomFieldEnumTypeImpl(values);
142    }
143
144    /**
145     * factory method for an instance of CustomFieldEnumTypeBuilder
146     * @return builder
147     */
148    public static CustomFieldEnumTypeBuilder of() {
149        return new CustomFieldEnumTypeBuilder();
150    }
151
152    /**
153     * create builder for CustomFieldEnumType instance
154     * @param template instance with prefilled values for the builder
155     * @return builder
156     */
157    public static CustomFieldEnumTypeBuilder of(final CustomFieldEnumType template) {
158        CustomFieldEnumTypeBuilder builder = new CustomFieldEnumTypeBuilder();
159        builder.values = template.getValues();
160        return builder;
161    }
162
163}