001
002package com.commercetools.api.models.message;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009import javax.validation.Valid;
010import javax.validation.constraints.NotNull;
011
012import com.commercetools.api.models.common.Image;
013import com.fasterxml.jackson.annotation.*;
014import com.fasterxml.jackson.databind.annotation.*;
015
016import io.vrap.rmf.base.client.utils.Generated;
017
018/**
019 *  <p>Generated after a successful Add External Image update action or after the successful upload of an image.</p>
020 *
021 * <hr>
022 * Example to create an instance using the builder pattern
023 * <div class=code-example>
024 * <pre><code class='java'>
025 *     ProductImageAddedMessage productImageAddedMessage = ProductImageAddedMessage.builder()
026 *             .id("{id}")
027 *             .version(0.3)
028 *             .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
029 *             .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
030 *             .sequenceNumber(0.3)
031 *             .resource(resourceBuilder -> resourceBuilder)
032 *             .resourceVersion(0.3)
033 *             .variantId(0.3)
034 *             .image(imageBuilder -> imageBuilder)
035 *             .staged(true)
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 = ProductImageAddedMessageImpl.class)
042public interface ProductImageAddedMessage extends Message {
043
044    /**
045     * discriminator value for ProductImageAddedMessage
046     */
047    String PRODUCT_IMAGE_ADDED = "ProductImageAdded";
048
049    /**
050     *  <p>Unique identifier of the Product Variant to which the Image was added.</p>
051     * @return variantId
052     */
053    @NotNull
054    @JsonProperty("variantId")
055    public Long getVariantId();
056
057    /**
058     *  <p>Image that was added.</p>
059     * @return image
060     */
061    @NotNull
062    @Valid
063    @JsonProperty("image")
064    public Image getImage();
065
066    /**
067     *  <p>Whether the update was only applied to the staged Product Projection.</p>
068     * @return staged
069     */
070    @NotNull
071    @JsonProperty("staged")
072    public Boolean getStaged();
073
074    /**
075     *  <p>Unique identifier of the Product Variant to which the Image was added.</p>
076     * @param variantId value to be set
077     */
078
079    public void setVariantId(final Long variantId);
080
081    /**
082     *  <p>Image that was added.</p>
083     * @param image value to be set
084     */
085
086    public void setImage(final Image image);
087
088    /**
089     *  <p>Whether the update was only applied to the staged Product Projection.</p>
090     * @param staged value to be set
091     */
092
093    public void setStaged(final Boolean staged);
094
095    /**
096     * factory method
097     * @return instance of ProductImageAddedMessage
098     */
099    public static ProductImageAddedMessage of() {
100        return new ProductImageAddedMessageImpl();
101    }
102
103    /**
104     * factory method to create a shallow copy ProductImageAddedMessage
105     * @param template instance to be copied
106     * @return copy instance
107     */
108    public static ProductImageAddedMessage of(final ProductImageAddedMessage template) {
109        ProductImageAddedMessageImpl instance = new ProductImageAddedMessageImpl();
110        instance.setId(template.getId());
111        instance.setVersion(template.getVersion());
112        instance.setCreatedAt(template.getCreatedAt());
113        instance.setLastModifiedAt(template.getLastModifiedAt());
114        instance.setLastModifiedBy(template.getLastModifiedBy());
115        instance.setCreatedBy(template.getCreatedBy());
116        instance.setSequenceNumber(template.getSequenceNumber());
117        instance.setResource(template.getResource());
118        instance.setResourceVersion(template.getResourceVersion());
119        instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers());
120        instance.setVariantId(template.getVariantId());
121        instance.setImage(template.getImage());
122        instance.setStaged(template.getStaged());
123        return instance;
124    }
125
126    /**
127     * factory method to create a deep copy of ProductImageAddedMessage
128     * @param template instance to be copied
129     * @return copy instance
130     */
131    @Nullable
132    public static ProductImageAddedMessage deepCopy(@Nullable final ProductImageAddedMessage template) {
133        if (template == null) {
134            return null;
135        }
136        ProductImageAddedMessageImpl instance = new ProductImageAddedMessageImpl();
137        instance.setId(template.getId());
138        instance.setVersion(template.getVersion());
139        instance.setCreatedAt(template.getCreatedAt());
140        instance.setLastModifiedAt(template.getLastModifiedAt());
141        instance.setLastModifiedBy(
142            com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy()));
143        instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy()));
144        instance.setSequenceNumber(template.getSequenceNumber());
145        instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource()));
146        instance.setResourceVersion(template.getResourceVersion());
147        instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers
148                .deepCopy(template.getResourceUserProvidedIdentifiers()));
149        instance.setVariantId(template.getVariantId());
150        instance.setImage(com.commercetools.api.models.common.Image.deepCopy(template.getImage()));
151        instance.setStaged(template.getStaged());
152        return instance;
153    }
154
155    /**
156     * builder factory method for ProductImageAddedMessage
157     * @return builder
158     */
159    public static ProductImageAddedMessageBuilder builder() {
160        return ProductImageAddedMessageBuilder.of();
161    }
162
163    /**
164     * create builder for ProductImageAddedMessage instance
165     * @param template instance with prefilled values for the builder
166     * @return builder
167     */
168    public static ProductImageAddedMessageBuilder builder(final ProductImageAddedMessage template) {
169        return ProductImageAddedMessageBuilder.of(template);
170    }
171
172    /**
173     * accessor map function
174     * @param <T> mapped type
175     * @param helper function to map the object
176     * @return mapped value
177     */
178    default <T> T withProductImageAddedMessage(Function<ProductImageAddedMessage, T> helper) {
179        return helper.apply(this);
180    }
181
182    /**
183     * gives a TypeReference for usage with Jackson DataBind
184     * @return TypeReference
185     */
186    public static com.fasterxml.jackson.core.type.TypeReference<ProductImageAddedMessage> typeReference() {
187        return new com.fasterxml.jackson.core.type.TypeReference<ProductImageAddedMessage>() {
188            @Override
189            public String toString() {
190                return "TypeReference<ProductImageAddedMessage>";
191            }
192        };
193    }
194}