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