001 002package com.commercetools.api.models.order_edit; 003 004import java.time.*; 005import java.time.ZonedDateTime; 006import java.util.*; 007import java.util.function.Function; 008import java.util.stream.Collectors; 009 010import javax.annotation.Nullable; 011import javax.validation.Valid; 012import javax.validation.constraints.NotNull; 013 014import com.commercetools.api.models.common.BaseResource; 015import com.commercetools.api.models.common.CreatedBy; 016import com.commercetools.api.models.common.LastModifiedBy; 017import com.commercetools.api.models.order.OrderReference; 018import com.commercetools.api.models.order.StagedOrderUpdateAction; 019import com.commercetools.api.models.type.CustomFields; 020import com.fasterxml.jackson.annotation.*; 021import com.fasterxml.jackson.databind.annotation.*; 022 023import io.vrap.rmf.base.client.utils.Generated; 024 025/** 026 * OrderEdit 027 * 028 * <hr> 029 * Example to create an instance using the builder pattern 030 * <div class=code-example> 031 * <pre><code class='java'> 032 * OrderEdit orderEdit = OrderEdit.builder() 033 * .id("{id}") 034 * .version(0.3) 035 * .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z")) 036 * .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z")) 037 * .resource(resourceBuilder -> resourceBuilder) 038 * .plusStagedActions(stagedActionsBuilder -> stagedActionsBuilder) 039 * .result(resultBuilder -> resultBuilder) 040 * .build() 041 * </code></pre> 042 * </div> 043 */ 044@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 045@JsonDeserialize(as = OrderEditImpl.class) 046public interface OrderEdit extends BaseResource, OrderEditMixin, com.commercetools.api.models.DomainResource<OrderEdit>, 047 com.commercetools.api.models.Referencable<OrderEdit>, 048 com.commercetools.api.models.ResourceIdentifiable<OrderEdit>, 049 com.commercetools.api.models.Customizable<OrderEdit>, com.commercetools.api.models.WithKey { 050 051 /** 052 * <p>Unique identifier of the Order Edit.</p> 053 * @return id 054 */ 055 @NotNull 056 @JsonProperty("id") 057 public String getId(); 058 059 /** 060 * <p>Current version of the Order Edit.</p> 061 * @return version 062 */ 063 @NotNull 064 @JsonProperty("version") 065 public Long getVersion(); 066 067 /** 068 * <p>User-defined unique identifier of the Order Edit.</p> 069 * @return key 070 */ 071 072 @JsonProperty("key") 073 public String getKey(); 074 075 /** 076 * <p>Reference to the Order updated with this edit.</p> 077 * @return resource 078 */ 079 @NotNull 080 @Valid 081 @JsonProperty("resource") 082 public OrderReference getResource(); 083 084 /** 085 * <p>Update actions applied to the Order referenced by <code>resource</code>.</p> 086 * @return stagedActions 087 */ 088 @NotNull 089 @Valid 090 @JsonProperty("stagedActions") 091 public List<StagedOrderUpdateAction> getStagedActions(); 092 093 /** 094 * <p>For applied edits, it's a summary of the changes on the Order. For unapplied edits, it's a preview of the changes.</p> 095 * @return result 096 */ 097 @NotNull 098 @Valid 099 @JsonProperty("result") 100 public OrderEditResult getResult(); 101 102 /** 103 * <p>User-defined information regarding the Order Edit.</p> 104 * @return comment 105 */ 106 107 @JsonProperty("comment") 108 public String getComment(); 109 110 /** 111 * <p>Custom Fields of the Order Edit.</p> 112 * @return custom 113 */ 114 @Valid 115 @JsonProperty("custom") 116 public CustomFields getCustom(); 117 118 /** 119 * <p>Date and time (UTC) the Order Edit was initially created.</p> 120 * @return createdAt 121 */ 122 @NotNull 123 @JsonProperty("createdAt") 124 public ZonedDateTime getCreatedAt(); 125 126 /** 127 * <p>Date and time (UTC) the Order Edit was last updated.</p> 128 * @return lastModifiedAt 129 */ 130 @NotNull 131 @JsonProperty("lastModifiedAt") 132 public ZonedDateTime getLastModifiedAt(); 133 134 /** 135 * <p>Present on resources created after 1 February 2019 except for events not tracked.</p> 136 * @return lastModifiedBy 137 */ 138 @Valid 139 @JsonProperty("lastModifiedBy") 140 public LastModifiedBy getLastModifiedBy(); 141 142 /** 143 * <p>Present on resources created after 1 February 2019 except for events not tracked.</p> 144 * @return createdBy 145 */ 146 @Valid 147 @JsonProperty("createdBy") 148 public CreatedBy getCreatedBy(); 149 150 /** 151 * <p>Unique identifier of the Order Edit.</p> 152 * @param id value to be set 153 */ 154 155 public void setId(final String id); 156 157 /** 158 * <p>Current version of the Order Edit.</p> 159 * @param version value to be set 160 */ 161 162 public void setVersion(final Long version); 163 164 /** 165 * <p>User-defined unique identifier of the Order Edit.</p> 166 * @param key value to be set 167 */ 168 169 public void setKey(final String key); 170 171 /** 172 * <p>Reference to the Order updated with this edit.</p> 173 * @param resource value to be set 174 */ 175 176 public void setResource(final OrderReference resource); 177 178 /** 179 * <p>Update actions applied to the Order referenced by <code>resource</code>.</p> 180 * @param stagedActions values to be set 181 */ 182 183 @JsonIgnore 184 public void setStagedActions(final StagedOrderUpdateAction... stagedActions); 185 186 /** 187 * <p>Update actions applied to the Order referenced by <code>resource</code>.</p> 188 * @param stagedActions values to be set 189 */ 190 191 public void setStagedActions(final List<StagedOrderUpdateAction> stagedActions); 192 193 /** 194 * <p>For applied edits, it's a summary of the changes on the Order. For unapplied edits, it's a preview of the changes.</p> 195 * @param result value to be set 196 */ 197 198 public void setResult(final OrderEditResult result); 199 200 /** 201 * <p>User-defined information regarding the Order Edit.</p> 202 * @param comment value to be set 203 */ 204 205 public void setComment(final String comment); 206 207 /** 208 * <p>Custom Fields of the Order Edit.</p> 209 * @param custom value to be set 210 */ 211 212 public void setCustom(final CustomFields custom); 213 214 /** 215 * <p>Date and time (UTC) the Order Edit was initially created.</p> 216 * @param createdAt value to be set 217 */ 218 219 public void setCreatedAt(final ZonedDateTime createdAt); 220 221 /** 222 * <p>Date and time (UTC) the Order Edit was last updated.</p> 223 * @param lastModifiedAt value to be set 224 */ 225 226 public void setLastModifiedAt(final ZonedDateTime lastModifiedAt); 227 228 /** 229 * <p>Present on resources created after 1 February 2019 except for events not tracked.</p> 230 * @param lastModifiedBy value to be set 231 */ 232 233 public void setLastModifiedBy(final LastModifiedBy lastModifiedBy); 234 235 /** 236 * <p>Present on resources created after 1 February 2019 except for events not tracked.</p> 237 * @param createdBy value to be set 238 */ 239 240 public void setCreatedBy(final CreatedBy createdBy); 241 242 /** 243 * factory method 244 * @return instance of OrderEdit 245 */ 246 public static OrderEdit of() { 247 return new OrderEditImpl(); 248 } 249 250 /** 251 * factory method to create a shallow copy OrderEdit 252 * @param template instance to be copied 253 * @return copy instance 254 */ 255 public static OrderEdit of(final OrderEdit template) { 256 OrderEditImpl instance = new OrderEditImpl(); 257 instance.setId(template.getId()); 258 instance.setVersion(template.getVersion()); 259 instance.setCreatedAt(template.getCreatedAt()); 260 instance.setLastModifiedAt(template.getLastModifiedAt()); 261 instance.setKey(template.getKey()); 262 instance.setResource(template.getResource()); 263 instance.setStagedActions(template.getStagedActions()); 264 instance.setResult(template.getResult()); 265 instance.setComment(template.getComment()); 266 instance.setCustom(template.getCustom()); 267 instance.setLastModifiedBy(template.getLastModifiedBy()); 268 instance.setCreatedBy(template.getCreatedBy()); 269 return instance; 270 } 271 272 /** 273 * factory method to create a deep copy of OrderEdit 274 * @param template instance to be copied 275 * @return copy instance 276 */ 277 @Nullable 278 public static OrderEdit deepCopy(@Nullable final OrderEdit template) { 279 if (template == null) { 280 return null; 281 } 282 OrderEditImpl instance = new OrderEditImpl(); 283 instance.setId(template.getId()); 284 instance.setVersion(template.getVersion()); 285 instance.setCreatedAt(template.getCreatedAt()); 286 instance.setLastModifiedAt(template.getLastModifiedAt()); 287 instance.setKey(template.getKey()); 288 instance.setResource(com.commercetools.api.models.order.OrderReference.deepCopy(template.getResource())); 289 instance.setStagedActions(Optional.ofNullable(template.getStagedActions()) 290 .map(t -> t.stream() 291 .map(com.commercetools.api.models.order.StagedOrderUpdateAction::deepCopy) 292 .collect(Collectors.toList())) 293 .orElse(null)); 294 instance.setResult(com.commercetools.api.models.order_edit.OrderEditResult.deepCopy(template.getResult())); 295 instance.setComment(template.getComment()); 296 instance.setCustom(com.commercetools.api.models.type.CustomFields.deepCopy(template.getCustom())); 297 instance.setLastModifiedBy( 298 com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy())); 299 instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy())); 300 return instance; 301 } 302 303 /** 304 * builder factory method for OrderEdit 305 * @return builder 306 */ 307 public static OrderEditBuilder builder() { 308 return OrderEditBuilder.of(); 309 } 310 311 /** 312 * create builder for OrderEdit instance 313 * @param template instance with prefilled values for the builder 314 * @return builder 315 */ 316 public static OrderEditBuilder builder(final OrderEdit template) { 317 return OrderEditBuilder.of(template); 318 } 319 320 /** 321 * accessor map function 322 * @param <T> mapped type 323 * @param helper function to map the object 324 * @return mapped value 325 */ 326 default <T> T withOrderEdit(Function<OrderEdit, T> helper) { 327 return helper.apply(this); 328 } 329 330 public static com.commercetools.api.models.common.ReferenceTypeId referenceTypeId() { 331 return com.commercetools.api.models.common.ReferenceTypeId.ORDER_EDIT; 332 } 333 334 /** 335 * gives a TypeReference for usage with Jackson DataBind 336 * @return TypeReference 337 */ 338 public static com.fasterxml.jackson.core.type.TypeReference<OrderEdit> typeReference() { 339 return new com.fasterxml.jackson.core.type.TypeReference<OrderEdit>() { 340 @Override 341 public String toString() { 342 return "TypeReference<OrderEdit>"; 343 } 344 }; 345 } 346}