001
002package com.commercetools.api.models.review;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009import javax.validation.constraints.NotNull;
010
011import com.fasterxml.jackson.annotation.*;
012import com.fasterxml.jackson.databind.annotation.*;
013
014import io.vrap.rmf.base.client.utils.Generated;
015
016/**
017 * ReviewUpdateAction
018 *
019 * <hr>
020 * Example to create a subtype instance using the builder pattern
021 * <div class=code-example>
022 * <pre><code class='java'>
023 *     ReviewUpdateAction reviewUpdateAction = ReviewUpdateAction.setAuthorNameBuilder()
024 *             .build()
025 * </code></pre>
026 * </div>
027 */
028@JsonSubTypes({
029        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetAuthorNameActionImpl.class, name = ReviewSetAuthorNameAction.SET_AUTHOR_NAME),
030        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetCustomFieldActionImpl.class, name = ReviewSetCustomFieldAction.SET_CUSTOM_FIELD),
031        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetCustomTypeActionImpl.class, name = ReviewSetCustomTypeAction.SET_CUSTOM_TYPE),
032        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetCustomerActionImpl.class, name = ReviewSetCustomerAction.SET_CUSTOMER),
033        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetKeyActionImpl.class, name = ReviewSetKeyAction.SET_KEY),
034        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetLocaleActionImpl.class, name = ReviewSetLocaleAction.SET_LOCALE),
035        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetRatingActionImpl.class, name = ReviewSetRatingAction.SET_RATING),
036        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetTargetActionImpl.class, name = ReviewSetTargetAction.SET_TARGET),
037        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetTextActionImpl.class, name = ReviewSetTextAction.SET_TEXT),
038        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewSetTitleActionImpl.class, name = ReviewSetTitleAction.SET_TITLE),
039        @JsonSubTypes.Type(value = com.commercetools.api.models.review.ReviewTransitionStateActionImpl.class, name = ReviewTransitionStateAction.TRANSITION_STATE) })
040@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "action", defaultImpl = ReviewUpdateActionImpl.class, visible = true)
041@JsonDeserialize(as = ReviewUpdateActionImpl.class)
042@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
043public interface ReviewUpdateAction extends com.commercetools.api.models.ResourceUpdateAction<ReviewUpdateAction> {
044
045    /**
046     *
047     * @return action
048     */
049    @NotNull
050    @JsonProperty("action")
051    public String getAction();
052
053    /**
054     * factory method to create a deep copy of ReviewUpdateAction
055     * @param template instance to be copied
056     * @return copy instance
057     */
058    @Nullable
059    public static ReviewUpdateAction deepCopy(@Nullable final ReviewUpdateAction template) {
060        if (template == null) {
061            return null;
062        }
063        if (template instanceof com.commercetools.api.models.review.ReviewSetAuthorNameAction) {
064            return com.commercetools.api.models.review.ReviewSetAuthorNameAction
065                    .deepCopy((com.commercetools.api.models.review.ReviewSetAuthorNameAction) template);
066        }
067        if (template instanceof com.commercetools.api.models.review.ReviewSetCustomFieldAction) {
068            return com.commercetools.api.models.review.ReviewSetCustomFieldAction
069                    .deepCopy((com.commercetools.api.models.review.ReviewSetCustomFieldAction) template);
070        }
071        if (template instanceof com.commercetools.api.models.review.ReviewSetCustomTypeAction) {
072            return com.commercetools.api.models.review.ReviewSetCustomTypeAction
073                    .deepCopy((com.commercetools.api.models.review.ReviewSetCustomTypeAction) template);
074        }
075        if (template instanceof com.commercetools.api.models.review.ReviewSetCustomerAction) {
076            return com.commercetools.api.models.review.ReviewSetCustomerAction
077                    .deepCopy((com.commercetools.api.models.review.ReviewSetCustomerAction) template);
078        }
079        if (template instanceof com.commercetools.api.models.review.ReviewSetKeyAction) {
080            return com.commercetools.api.models.review.ReviewSetKeyAction
081                    .deepCopy((com.commercetools.api.models.review.ReviewSetKeyAction) template);
082        }
083        if (template instanceof com.commercetools.api.models.review.ReviewSetLocaleAction) {
084            return com.commercetools.api.models.review.ReviewSetLocaleAction
085                    .deepCopy((com.commercetools.api.models.review.ReviewSetLocaleAction) template);
086        }
087        if (template instanceof com.commercetools.api.models.review.ReviewSetRatingAction) {
088            return com.commercetools.api.models.review.ReviewSetRatingAction
089                    .deepCopy((com.commercetools.api.models.review.ReviewSetRatingAction) template);
090        }
091        if (template instanceof com.commercetools.api.models.review.ReviewSetTargetAction) {
092            return com.commercetools.api.models.review.ReviewSetTargetAction
093                    .deepCopy((com.commercetools.api.models.review.ReviewSetTargetAction) template);
094        }
095        if (template instanceof com.commercetools.api.models.review.ReviewSetTextAction) {
096            return com.commercetools.api.models.review.ReviewSetTextAction
097                    .deepCopy((com.commercetools.api.models.review.ReviewSetTextAction) template);
098        }
099        if (template instanceof com.commercetools.api.models.review.ReviewSetTitleAction) {
100            return com.commercetools.api.models.review.ReviewSetTitleAction
101                    .deepCopy((com.commercetools.api.models.review.ReviewSetTitleAction) template);
102        }
103        if (template instanceof com.commercetools.api.models.review.ReviewTransitionStateAction) {
104            return com.commercetools.api.models.review.ReviewTransitionStateAction
105                    .deepCopy((com.commercetools.api.models.review.ReviewTransitionStateAction) template);
106        }
107        ReviewUpdateActionImpl instance = new ReviewUpdateActionImpl();
108        return instance;
109    }
110
111    /**
112     * builder for setAuthorName subtype
113     * @return builder
114     */
115    public static com.commercetools.api.models.review.ReviewSetAuthorNameActionBuilder setAuthorNameBuilder() {
116        return com.commercetools.api.models.review.ReviewSetAuthorNameActionBuilder.of();
117    }
118
119    /**
120     * builder for setCustomField subtype
121     * @return builder
122     */
123    public static com.commercetools.api.models.review.ReviewSetCustomFieldActionBuilder setCustomFieldBuilder() {
124        return com.commercetools.api.models.review.ReviewSetCustomFieldActionBuilder.of();
125    }
126
127    /**
128     * builder for setCustomType subtype
129     * @return builder
130     */
131    public static com.commercetools.api.models.review.ReviewSetCustomTypeActionBuilder setCustomTypeBuilder() {
132        return com.commercetools.api.models.review.ReviewSetCustomTypeActionBuilder.of();
133    }
134
135    /**
136     * builder for setCustomer subtype
137     * @return builder
138     */
139    public static com.commercetools.api.models.review.ReviewSetCustomerActionBuilder setCustomerBuilder() {
140        return com.commercetools.api.models.review.ReviewSetCustomerActionBuilder.of();
141    }
142
143    /**
144     * builder for setKey subtype
145     * @return builder
146     */
147    public static com.commercetools.api.models.review.ReviewSetKeyActionBuilder setKeyBuilder() {
148        return com.commercetools.api.models.review.ReviewSetKeyActionBuilder.of();
149    }
150
151    /**
152     * builder for setLocale subtype
153     * @return builder
154     */
155    public static com.commercetools.api.models.review.ReviewSetLocaleActionBuilder setLocaleBuilder() {
156        return com.commercetools.api.models.review.ReviewSetLocaleActionBuilder.of();
157    }
158
159    /**
160     * builder for setRating subtype
161     * @return builder
162     */
163    public static com.commercetools.api.models.review.ReviewSetRatingActionBuilder setRatingBuilder() {
164        return com.commercetools.api.models.review.ReviewSetRatingActionBuilder.of();
165    }
166
167    /**
168     * builder for setTarget subtype
169     * @return builder
170     */
171    public static com.commercetools.api.models.review.ReviewSetTargetActionBuilder setTargetBuilder() {
172        return com.commercetools.api.models.review.ReviewSetTargetActionBuilder.of();
173    }
174
175    /**
176     * builder for setText subtype
177     * @return builder
178     */
179    public static com.commercetools.api.models.review.ReviewSetTextActionBuilder setTextBuilder() {
180        return com.commercetools.api.models.review.ReviewSetTextActionBuilder.of();
181    }
182
183    /**
184     * builder for setTitle subtype
185     * @return builder
186     */
187    public static com.commercetools.api.models.review.ReviewSetTitleActionBuilder setTitleBuilder() {
188        return com.commercetools.api.models.review.ReviewSetTitleActionBuilder.of();
189    }
190
191    /**
192     * builder for transitionState subtype
193     * @return builder
194     */
195    public static com.commercetools.api.models.review.ReviewTransitionStateActionBuilder transitionStateBuilder() {
196        return com.commercetools.api.models.review.ReviewTransitionStateActionBuilder.of();
197    }
198
199    /**
200     * accessor map function
201     * @param <T> mapped type
202     * @param helper function to map the object
203     * @return mapped value
204     */
205    default <T> T withReviewUpdateAction(Function<ReviewUpdateAction, T> helper) {
206        return helper.apply(this);
207    }
208
209    /**
210     * gives a TypeReference for usage with Jackson DataBind
211     * @return TypeReference
212     */
213    public static com.fasterxml.jackson.core.type.TypeReference<ReviewUpdateAction> typeReference() {
214        return new com.fasterxml.jackson.core.type.TypeReference<ReviewUpdateAction>() {
215            @Override
216            public String toString() {
217                return "TypeReference<ReviewUpdateAction>";
218            }
219        };
220    }
221}