001
002package com.commercetools.api.models.error;
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 * DuplicateAttributeValuesErrorBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     DuplicateAttributeValuesError duplicateAttributeValuesError = DuplicateAttributeValuesError.builder()
017 *             .message("{message}")
018 *             .plusAttributes(attributesBuilder -> attributesBuilder)
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 DuplicateAttributeValuesErrorBuilder implements Builder<DuplicateAttributeValuesError> {
025
026    private String message;
027
028    private Map<String, java.lang.Object> values = new HashMap<>();
029
030    private java.util.List<com.commercetools.api.models.product.Attribute> attributes;
031
032    /**
033     *  <p><code>"The set of attributes must be unique across all variants."</code></p>
034     * @param message value to be set
035     * @return Builder
036     */
037
038    public DuplicateAttributeValuesErrorBuilder message(final String message) {
039        this.message = message;
040        return this;
041    }
042
043    /**
044     *  <p>Error-specific additional fields.</p>
045     * @param values properties to be set
046     * @return Builder
047     */
048
049    public DuplicateAttributeValuesErrorBuilder values(final Map<String, java.lang.Object> values) {
050        this.values = values;
051        return this;
052    }
053
054    /**
055     *  <p>Error-specific additional fields.</p>
056     * @param key property name
057     * @param value property value
058     * @return Builder
059     */
060
061    public DuplicateAttributeValuesErrorBuilder addValue(final String key, final java.lang.Object value) {
062        if (this.values == null) {
063            values = new HashMap<>();
064        }
065        values.put(key, value);
066        return this;
067    }
068
069    /**
070     *  <p>Conflicting Attributes.</p>
071     * @param attributes value to be set
072     * @return Builder
073     */
074
075    public DuplicateAttributeValuesErrorBuilder attributes(
076            final com.commercetools.api.models.product.Attribute... attributes) {
077        this.attributes = new ArrayList<>(Arrays.asList(attributes));
078        return this;
079    }
080
081    /**
082     *  <p>Conflicting Attributes.</p>
083     * @param attributes value to be set
084     * @return Builder
085     */
086
087    public DuplicateAttributeValuesErrorBuilder attributes(
088            final java.util.List<com.commercetools.api.models.product.Attribute> attributes) {
089        this.attributes = attributes;
090        return this;
091    }
092
093    /**
094     *  <p>Conflicting Attributes.</p>
095     * @param attributes value to be set
096     * @return Builder
097     */
098
099    public DuplicateAttributeValuesErrorBuilder plusAttributes(
100            final com.commercetools.api.models.product.Attribute... attributes) {
101        if (this.attributes == null) {
102            this.attributes = new ArrayList<>();
103        }
104        this.attributes.addAll(Arrays.asList(attributes));
105        return this;
106    }
107
108    /**
109     *  <p>Conflicting Attributes.</p>
110     * @param builder function to build the attributes value
111     * @return Builder
112     */
113
114    public DuplicateAttributeValuesErrorBuilder plusAttributes(
115            Function<com.commercetools.api.models.product.AttributeBuilder, com.commercetools.api.models.product.AttributeBuilder> builder) {
116        if (this.attributes == null) {
117            this.attributes = new ArrayList<>();
118        }
119        this.attributes.add(builder.apply(com.commercetools.api.models.product.AttributeBuilder.of()).build());
120        return this;
121    }
122
123    /**
124     *  <p>Conflicting Attributes.</p>
125     * @param builder function to build the attributes value
126     * @return Builder
127     */
128
129    public DuplicateAttributeValuesErrorBuilder withAttributes(
130            Function<com.commercetools.api.models.product.AttributeBuilder, com.commercetools.api.models.product.AttributeBuilder> builder) {
131        this.attributes = new ArrayList<>();
132        this.attributes.add(builder.apply(com.commercetools.api.models.product.AttributeBuilder.of()).build());
133        return this;
134    }
135
136    /**
137     *  <p>Conflicting Attributes.</p>
138     * @param builder function to build the attributes value
139     * @return Builder
140     */
141
142    public DuplicateAttributeValuesErrorBuilder addAttributes(
143            Function<com.commercetools.api.models.product.AttributeBuilder, com.commercetools.api.models.product.Attribute> builder) {
144        return plusAttributes(builder.apply(com.commercetools.api.models.product.AttributeBuilder.of()));
145    }
146
147    /**
148     *  <p>Conflicting Attributes.</p>
149     * @param builder function to build the attributes value
150     * @return Builder
151     */
152
153    public DuplicateAttributeValuesErrorBuilder setAttributes(
154            Function<com.commercetools.api.models.product.AttributeBuilder, com.commercetools.api.models.product.Attribute> builder) {
155        return attributes(builder.apply(com.commercetools.api.models.product.AttributeBuilder.of()));
156    }
157
158    /**
159     *  <p><code>"The set of attributes must be unique across all variants."</code></p>
160     * @return message
161     */
162
163    public String getMessage() {
164        return this.message;
165    }
166
167    /**
168     *  <p>Error-specific additional fields.</p>
169     * @return pattern properties
170     */
171
172    public Map<String, java.lang.Object> getValues() {
173        return this.values;
174    }
175
176    /**
177     *  <p>Conflicting Attributes.</p>
178     * @return attributes
179     */
180
181    public java.util.List<com.commercetools.api.models.product.Attribute> getAttributes() {
182        return this.attributes;
183    }
184
185    /**
186     * builds DuplicateAttributeValuesError with checking for non-null required values
187     * @return DuplicateAttributeValuesError
188     */
189    public DuplicateAttributeValuesError build() {
190        Objects.requireNonNull(message, DuplicateAttributeValuesError.class + ": message is missing");
191        Objects.requireNonNull(attributes, DuplicateAttributeValuesError.class + ": attributes is missing");
192        return new DuplicateAttributeValuesErrorImpl(message, values, attributes);
193    }
194
195    /**
196     * builds DuplicateAttributeValuesError without checking for non-null required values
197     * @return DuplicateAttributeValuesError
198     */
199    public DuplicateAttributeValuesError buildUnchecked() {
200        return new DuplicateAttributeValuesErrorImpl(message, values, attributes);
201    }
202
203    /**
204     * factory method for an instance of DuplicateAttributeValuesErrorBuilder
205     * @return builder
206     */
207    public static DuplicateAttributeValuesErrorBuilder of() {
208        return new DuplicateAttributeValuesErrorBuilder();
209    }
210
211    /**
212     * create builder for DuplicateAttributeValuesError instance
213     * @param template instance with prefilled values for the builder
214     * @return builder
215     */
216    public static DuplicateAttributeValuesErrorBuilder of(final DuplicateAttributeValuesError template) {
217        DuplicateAttributeValuesErrorBuilder builder = new DuplicateAttributeValuesErrorBuilder();
218        builder.message = template.getMessage();
219        builder.values = template.values();
220        builder.attributes = template.getAttributes();
221        return builder;
222    }
223
224}