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 * DuplicateAttributeValueErrorBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     DuplicateAttributeValueError duplicateAttributeValueError = DuplicateAttributeValueError.builder()
017 *             .message("{message}")
018 *             .attribute(attributeBuilder -> attributeBuilder)
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 DuplicateAttributeValueErrorBuilder implements Builder<DuplicateAttributeValueError> {
025
026    private String message;
027
028    private Map<String, java.lang.Object> values = new HashMap<>();
029
030    private com.commercetools.api.models.product.Attribute attribute;
031
032    /**
033     *  <p><code>"Attribute can't have the same value in a different variant."</code></p>
034     * @param message value to be set
035     * @return Builder
036     */
037
038    public DuplicateAttributeValueErrorBuilder 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 DuplicateAttributeValueErrorBuilder 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 DuplicateAttributeValueErrorBuilder 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 builder function to build the attribute value
072     * @return Builder
073     */
074
075    public DuplicateAttributeValueErrorBuilder attribute(
076            Function<com.commercetools.api.models.product.AttributeBuilder, com.commercetools.api.models.product.AttributeBuilder> builder) {
077        this.attribute = builder.apply(com.commercetools.api.models.product.AttributeBuilder.of()).build();
078        return this;
079    }
080
081    /**
082     *  <p>Conflicting Attributes.</p>
083     * @param builder function to build the attribute value
084     * @return Builder
085     */
086
087    public DuplicateAttributeValueErrorBuilder withAttribute(
088            Function<com.commercetools.api.models.product.AttributeBuilder, com.commercetools.api.models.product.Attribute> builder) {
089        this.attribute = builder.apply(com.commercetools.api.models.product.AttributeBuilder.of());
090        return this;
091    }
092
093    /**
094     *  <p>Conflicting Attributes.</p>
095     * @param attribute value to be set
096     * @return Builder
097     */
098
099    public DuplicateAttributeValueErrorBuilder attribute(
100            final com.commercetools.api.models.product.Attribute attribute) {
101        this.attribute = attribute;
102        return this;
103    }
104
105    /**
106     *  <p><code>"Attribute can't have the same value in a different variant."</code></p>
107     * @return message
108     */
109
110    public String getMessage() {
111        return this.message;
112    }
113
114    /**
115     *  <p>Error-specific additional fields.</p>
116     * @return pattern properties
117     */
118
119    public Map<String, java.lang.Object> getValues() {
120        return this.values;
121    }
122
123    /**
124     *  <p>Conflicting Attributes.</p>
125     * @return attribute
126     */
127
128    public com.commercetools.api.models.product.Attribute getAttribute() {
129        return this.attribute;
130    }
131
132    /**
133     * builds DuplicateAttributeValueError with checking for non-null required values
134     * @return DuplicateAttributeValueError
135     */
136    public DuplicateAttributeValueError build() {
137        Objects.requireNonNull(message, DuplicateAttributeValueError.class + ": message is missing");
138        Objects.requireNonNull(attribute, DuplicateAttributeValueError.class + ": attribute is missing");
139        return new DuplicateAttributeValueErrorImpl(message, values, attribute);
140    }
141
142    /**
143     * builds DuplicateAttributeValueError without checking for non-null required values
144     * @return DuplicateAttributeValueError
145     */
146    public DuplicateAttributeValueError buildUnchecked() {
147        return new DuplicateAttributeValueErrorImpl(message, values, attribute);
148    }
149
150    /**
151     * factory method for an instance of DuplicateAttributeValueErrorBuilder
152     * @return builder
153     */
154    public static DuplicateAttributeValueErrorBuilder of() {
155        return new DuplicateAttributeValueErrorBuilder();
156    }
157
158    /**
159     * create builder for DuplicateAttributeValueError instance
160     * @param template instance with prefilled values for the builder
161     * @return builder
162     */
163    public static DuplicateAttributeValueErrorBuilder of(final DuplicateAttributeValueError template) {
164        DuplicateAttributeValueErrorBuilder builder = new DuplicateAttributeValueErrorBuilder();
165        builder.message = template.getMessage();
166        builder.values = template.values();
167        builder.attribute = template.getAttribute();
168        return builder;
169    }
170
171}