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.Price; 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 Change Embedded Price update action.</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 * ProductPriceChangedMessage productPriceChangedMessage = ProductPriceChangedMessage.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 * .oldPrice(oldPriceBuilder -> oldPriceBuilder) 035 * .newPrice(newPriceBuilder -> newPriceBuilder) 036 * .staged(true) 037 * .build() 038 * </code></pre> 039 * </div> 040 */ 041@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 042@JsonDeserialize(as = ProductPriceChangedMessageImpl.class) 043public interface ProductPriceChangedMessage extends Message { 044 045 /** 046 * discriminator value for ProductPriceChangedMessage 047 */ 048 String PRODUCT_PRICE_CHANGED = "ProductPriceChanged"; 049 050 /** 051 * <p>Unique identifier of the ProductVariant for which the Price was changed.</p> 052 * @return variantId 053 */ 054 @NotNull 055 @JsonProperty("variantId") 056 public Long getVariantId(); 057 058 /** 059 * <p>The current Embedded Price before the Change Embedded Price update action.</p> 060 * @return oldPrice 061 */ 062 @NotNull 063 @Valid 064 @JsonProperty("oldPrice") 065 public Price getOldPrice(); 066 067 /** 068 * <p>The Embedded Price after the Change Embedded Price update action.</p> 069 * @return newPrice 070 */ 071 @NotNull 072 @Valid 073 @JsonProperty("newPrice") 074 public Price getNewPrice(); 075 076 /** 077 * <p>Whether the update was only applied to the staged Product Projection.</p> 078 * @return staged 079 */ 080 @NotNull 081 @JsonProperty("staged") 082 public Boolean getStaged(); 083 084 /** 085 * <p>The staged Embedded Price before the Change Embedded Price update action.</p> 086 * @return oldStagedPrice 087 */ 088 @Valid 089 @JsonProperty("oldStagedPrice") 090 public Price getOldStagedPrice(); 091 092 /** 093 * <p>Unique identifier of the ProductVariant for which the Price was changed.</p> 094 * @param variantId value to be set 095 */ 096 097 public void setVariantId(final Long variantId); 098 099 /** 100 * <p>The current Embedded Price before the Change Embedded Price update action.</p> 101 * @param oldPrice value to be set 102 */ 103 104 public void setOldPrice(final Price oldPrice); 105 106 /** 107 * <p>The Embedded Price after the Change Embedded Price update action.</p> 108 * @param newPrice value to be set 109 */ 110 111 public void setNewPrice(final Price newPrice); 112 113 /** 114 * <p>Whether the update was only applied to the staged Product Projection.</p> 115 * @param staged value to be set 116 */ 117 118 public void setStaged(final Boolean staged); 119 120 /** 121 * <p>The staged Embedded Price before the Change Embedded Price update action.</p> 122 * @param oldStagedPrice value to be set 123 */ 124 125 public void setOldStagedPrice(final Price oldStagedPrice); 126 127 /** 128 * factory method 129 * @return instance of ProductPriceChangedMessage 130 */ 131 public static ProductPriceChangedMessage of() { 132 return new ProductPriceChangedMessageImpl(); 133 } 134 135 /** 136 * factory method to create a shallow copy ProductPriceChangedMessage 137 * @param template instance to be copied 138 * @return copy instance 139 */ 140 public static ProductPriceChangedMessage of(final ProductPriceChangedMessage template) { 141 ProductPriceChangedMessageImpl instance = new ProductPriceChangedMessageImpl(); 142 instance.setId(template.getId()); 143 instance.setVersion(template.getVersion()); 144 instance.setCreatedAt(template.getCreatedAt()); 145 instance.setLastModifiedAt(template.getLastModifiedAt()); 146 instance.setLastModifiedBy(template.getLastModifiedBy()); 147 instance.setCreatedBy(template.getCreatedBy()); 148 instance.setSequenceNumber(template.getSequenceNumber()); 149 instance.setResource(template.getResource()); 150 instance.setResourceVersion(template.getResourceVersion()); 151 instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers()); 152 instance.setVariantId(template.getVariantId()); 153 instance.setOldPrice(template.getOldPrice()); 154 instance.setNewPrice(template.getNewPrice()); 155 instance.setStaged(template.getStaged()); 156 instance.setOldStagedPrice(template.getOldStagedPrice()); 157 return instance; 158 } 159 160 /** 161 * factory method to create a deep copy of ProductPriceChangedMessage 162 * @param template instance to be copied 163 * @return copy instance 164 */ 165 @Nullable 166 public static ProductPriceChangedMessage deepCopy(@Nullable final ProductPriceChangedMessage template) { 167 if (template == null) { 168 return null; 169 } 170 ProductPriceChangedMessageImpl instance = new ProductPriceChangedMessageImpl(); 171 instance.setId(template.getId()); 172 instance.setVersion(template.getVersion()); 173 instance.setCreatedAt(template.getCreatedAt()); 174 instance.setLastModifiedAt(template.getLastModifiedAt()); 175 instance.setLastModifiedBy( 176 com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy())); 177 instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy())); 178 instance.setSequenceNumber(template.getSequenceNumber()); 179 instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource())); 180 instance.setResourceVersion(template.getResourceVersion()); 181 instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers 182 .deepCopy(template.getResourceUserProvidedIdentifiers())); 183 instance.setVariantId(template.getVariantId()); 184 instance.setOldPrice(com.commercetools.api.models.common.Price.deepCopy(template.getOldPrice())); 185 instance.setNewPrice(com.commercetools.api.models.common.Price.deepCopy(template.getNewPrice())); 186 instance.setStaged(template.getStaged()); 187 instance.setOldStagedPrice(com.commercetools.api.models.common.Price.deepCopy(template.getOldStagedPrice())); 188 return instance; 189 } 190 191 /** 192 * builder factory method for ProductPriceChangedMessage 193 * @return builder 194 */ 195 public static ProductPriceChangedMessageBuilder builder() { 196 return ProductPriceChangedMessageBuilder.of(); 197 } 198 199 /** 200 * create builder for ProductPriceChangedMessage instance 201 * @param template instance with prefilled values for the builder 202 * @return builder 203 */ 204 public static ProductPriceChangedMessageBuilder builder(final ProductPriceChangedMessage template) { 205 return ProductPriceChangedMessageBuilder.of(template); 206 } 207 208 /** 209 * accessor map function 210 * @param <T> mapped type 211 * @param helper function to map the object 212 * @return mapped value 213 */ 214 default <T> T withProductPriceChangedMessage(Function<ProductPriceChangedMessage, T> helper) { 215 return helper.apply(this); 216 } 217 218 /** 219 * gives a TypeReference for usage with Jackson DataBind 220 * @return TypeReference 221 */ 222 public static com.fasterxml.jackson.core.type.TypeReference<ProductPriceChangedMessage> typeReference() { 223 return new com.fasterxml.jackson.core.type.TypeReference<ProductPriceChangedMessage>() { 224 @Override 225 public String toString() { 226 return "TypeReference<ProductPriceChangedMessage>"; 227 } 228 }; 229 } 230}