001
002package com.commercetools.history.models.change;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007import java.util.stream.Collectors;
008
009import javax.annotation.Nullable;
010import javax.validation.Valid;
011import javax.validation.constraints.NotNull;
012
013import com.commercetools.history.models.change_value.LocalizedEnumValue;
014import com.fasterxml.jackson.annotation.*;
015import com.fasterxml.jackson.databind.annotation.*;
016
017import io.vrap.rmf.base.client.utils.Generated;
018
019/**
020 *  <p>Change triggered by the following update actions:</p>
021 *  <ul>
022 *   <li>Change the order of LocalizedEnumValues on Product Types.</li>
023 *   <li>Change the order of LocalizedEnumValues on Types.</li>
024 *  </ul>
025 *
026 * <hr>
027 * Example to create an instance using the builder pattern
028 * <div class=code-example>
029 * <pre><code class='java'>
030 *     ChangeLocalizedEnumValueOrderChange changeLocalizedEnumValueOrderChange = ChangeLocalizedEnumValueOrderChange.builder()
031 *             .change("{change}")
032 *             .plusPreviousValue(previousValueBuilder -> previousValueBuilder)
033 *             .plusNextValue(nextValueBuilder -> nextValueBuilder)
034 *             .fieldName("{fieldName}")
035 *             .attributeName("{attributeName}")
036 *             .build()
037 * </code></pre>
038 * </div>
039 */
040@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
041@JsonDeserialize(as = ChangeLocalizedEnumValueOrderChangeImpl.class)
042public interface ChangeLocalizedEnumValueOrderChange extends Change {
043
044    /**
045     * discriminator value for ChangeLocalizedEnumValueOrderChange
046     */
047    String CHANGE_LOCALIZED_ENUM_VALUE_ORDER_CHANGE = "ChangeLocalizedEnumValueOrderChange";
048
049    /**
050     *
051     * @return type
052     */
053    @NotNull
054    @JsonProperty("type")
055    public String getType();
056
057    /**
058     *
059     * @return change
060     */
061    @NotNull
062    @JsonProperty("change")
063    public String getChange();
064
065    /**
066     *  <p>Value before the change.</p>
067     * @return previousValue
068     */
069    @NotNull
070    @Valid
071    @JsonProperty("previousValue")
072    public List<LocalizedEnumValue> getPreviousValue();
073
074    /**
075     *  <p>Value after the change.</p>
076     * @return nextValue
077     */
078    @NotNull
079    @Valid
080    @JsonProperty("nextValue")
081    public List<LocalizedEnumValue> getNextValue();
082
083    /**
084     *  <p>Name of the updated FieldDefinition; only present on changes to Types.</p>
085     * @return fieldName
086     */
087    @NotNull
088    @JsonProperty("fieldName")
089    public String getFieldName();
090
091    /**
092     *  <p>Name of the updated AttributeDefinition; only present on changes to Product Types.</p>
093     * @return attributeName
094     */
095    @NotNull
096    @JsonProperty("attributeName")
097    public String getAttributeName();
098
099    /**
100     * set change
101     * @param change value to be set
102     */
103
104    public void setChange(final String change);
105
106    /**
107     *  <p>Value before the change.</p>
108     * @param previousValue values to be set
109     */
110
111    @JsonIgnore
112    public void setPreviousValue(final LocalizedEnumValue... previousValue);
113
114    /**
115     *  <p>Value before the change.</p>
116     * @param previousValue values to be set
117     */
118
119    public void setPreviousValue(final List<LocalizedEnumValue> previousValue);
120
121    /**
122     *  <p>Value after the change.</p>
123     * @param nextValue values to be set
124     */
125
126    @JsonIgnore
127    public void setNextValue(final LocalizedEnumValue... nextValue);
128
129    /**
130     *  <p>Value after the change.</p>
131     * @param nextValue values to be set
132     */
133
134    public void setNextValue(final List<LocalizedEnumValue> nextValue);
135
136    /**
137     *  <p>Name of the updated FieldDefinition; only present on changes to Types.</p>
138     * @param fieldName value to be set
139     */
140
141    public void setFieldName(final String fieldName);
142
143    /**
144     *  <p>Name of the updated AttributeDefinition; only present on changes to Product Types.</p>
145     * @param attributeName value to be set
146     */
147
148    public void setAttributeName(final String attributeName);
149
150    /**
151     * factory method
152     * @return instance of ChangeLocalizedEnumValueOrderChange
153     */
154    public static ChangeLocalizedEnumValueOrderChange of() {
155        return new ChangeLocalizedEnumValueOrderChangeImpl();
156    }
157
158    /**
159     * factory method to create a shallow copy ChangeLocalizedEnumValueOrderChange
160     * @param template instance to be copied
161     * @return copy instance
162     */
163    public static ChangeLocalizedEnumValueOrderChange of(final ChangeLocalizedEnumValueOrderChange template) {
164        ChangeLocalizedEnumValueOrderChangeImpl instance = new ChangeLocalizedEnumValueOrderChangeImpl();
165        instance.setChange(template.getChange());
166        instance.setPreviousValue(template.getPreviousValue());
167        instance.setNextValue(template.getNextValue());
168        instance.setFieldName(template.getFieldName());
169        instance.setAttributeName(template.getAttributeName());
170        return instance;
171    }
172
173    /**
174     * factory method to create a deep copy of ChangeLocalizedEnumValueOrderChange
175     * @param template instance to be copied
176     * @return copy instance
177     */
178    @Nullable
179    public static ChangeLocalizedEnumValueOrderChange deepCopy(
180            @Nullable final ChangeLocalizedEnumValueOrderChange template) {
181        if (template == null) {
182            return null;
183        }
184        ChangeLocalizedEnumValueOrderChangeImpl instance = new ChangeLocalizedEnumValueOrderChangeImpl();
185        instance.setChange(template.getChange());
186        instance.setPreviousValue(Optional.ofNullable(template.getPreviousValue())
187                .map(t -> t.stream()
188                        .map(com.commercetools.history.models.change_value.LocalizedEnumValue::deepCopy)
189                        .collect(Collectors.toList()))
190                .orElse(null));
191        instance.setNextValue(Optional.ofNullable(template.getNextValue())
192                .map(t -> t.stream()
193                        .map(com.commercetools.history.models.change_value.LocalizedEnumValue::deepCopy)
194                        .collect(Collectors.toList()))
195                .orElse(null));
196        instance.setFieldName(template.getFieldName());
197        instance.setAttributeName(template.getAttributeName());
198        return instance;
199    }
200
201    /**
202     * builder factory method for ChangeLocalizedEnumValueOrderChange
203     * @return builder
204     */
205    public static ChangeLocalizedEnumValueOrderChangeBuilder builder() {
206        return ChangeLocalizedEnumValueOrderChangeBuilder.of();
207    }
208
209    /**
210     * create builder for ChangeLocalizedEnumValueOrderChange instance
211     * @param template instance with prefilled values for the builder
212     * @return builder
213     */
214    public static ChangeLocalizedEnumValueOrderChangeBuilder builder(
215            final ChangeLocalizedEnumValueOrderChange template) {
216        return ChangeLocalizedEnumValueOrderChangeBuilder.of(template);
217    }
218
219    /**
220     * accessor map function
221     * @param <T> mapped type
222     * @param helper function to map the object
223     * @return mapped value
224     */
225    default <T> T withChangeLocalizedEnumValueOrderChange(Function<ChangeLocalizedEnumValueOrderChange, T> helper) {
226        return helper.apply(this);
227    }
228
229    /**
230     * gives a TypeReference for usage with Jackson DataBind
231     * @return TypeReference
232     */
233    public static com.fasterxml.jackson.core.type.TypeReference<ChangeLocalizedEnumValueOrderChange> typeReference() {
234        return new com.fasterxml.jackson.core.type.TypeReference<ChangeLocalizedEnumValueOrderChange>() {
235            @Override
236            public String toString() {
237                return "TypeReference<ChangeLocalizedEnumValueOrderChange>";
238            }
239        };
240    }
241}