001 002package com.commercetools.history.models.common; 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.fasterxml.jackson.annotation.*; 014import com.fasterxml.jackson.databind.annotation.*; 015 016import io.vrap.rmf.base.client.utils.Generated; 017 018/** 019 * Delivery 020 * 021 * <hr> 022 * Example to create an instance using the builder pattern 023 * <div class=code-example> 024 * <pre><code class='java'> 025 * Delivery delivery = Delivery.builder() 026 * .id("{id}") 027 * .createdAt("{createdAt}") 028 * .plusItems(itemsBuilder -> itemsBuilder) 029 * .plusParcels(parcelsBuilder -> parcelsBuilder) 030 * .build() 031 * </code></pre> 032 * </div> 033 */ 034@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 035@JsonDeserialize(as = DeliveryImpl.class) 036public interface Delivery { 037 038 /** 039 * 040 * @return id 041 */ 042 @NotNull 043 @JsonProperty("id") 044 public String getId(); 045 046 /** 047 * 048 * @return createdAt 049 */ 050 @NotNull 051 @JsonProperty("createdAt") 052 public String getCreatedAt(); 053 054 /** 055 * 056 * @return items 057 */ 058 @NotNull 059 @Valid 060 @JsonProperty("items") 061 public List<DeliveryItem> getItems(); 062 063 /** 064 * 065 * @return parcels 066 */ 067 @NotNull 068 @Valid 069 @JsonProperty("parcels") 070 public List<Parcel> getParcels(); 071 072 /** 073 * 074 * @return address 075 */ 076 @Valid 077 @JsonProperty("address") 078 public Address getAddress(); 079 080 /** 081 * <p>Custom Fields for the Transaction.</p> 082 * @return custom 083 */ 084 @Valid 085 @JsonProperty("custom") 086 public CustomFields getCustom(); 087 088 /** 089 * set id 090 * @param id value to be set 091 */ 092 093 public void setId(final String id); 094 095 /** 096 * set createdAt 097 * @param createdAt value to be set 098 */ 099 100 public void setCreatedAt(final String createdAt); 101 102 /** 103 * set items 104 * @param items values to be set 105 */ 106 107 @JsonIgnore 108 public void setItems(final DeliveryItem... items); 109 110 /** 111 * set items 112 * @param items values to be set 113 */ 114 115 public void setItems(final List<DeliveryItem> items); 116 117 /** 118 * set parcels 119 * @param parcels values to be set 120 */ 121 122 @JsonIgnore 123 public void setParcels(final Parcel... parcels); 124 125 /** 126 * set parcels 127 * @param parcels values to be set 128 */ 129 130 public void setParcels(final List<Parcel> parcels); 131 132 /** 133 * set address 134 * @param address value to be set 135 */ 136 137 public void setAddress(final Address address); 138 139 /** 140 * <p>Custom Fields for the Transaction.</p> 141 * @param custom value to be set 142 */ 143 144 public void setCustom(final CustomFields custom); 145 146 /** 147 * factory method 148 * @return instance of Delivery 149 */ 150 public static Delivery of() { 151 return new DeliveryImpl(); 152 } 153 154 /** 155 * factory method to create a shallow copy Delivery 156 * @param template instance to be copied 157 * @return copy instance 158 */ 159 public static Delivery of(final Delivery template) { 160 DeliveryImpl instance = new DeliveryImpl(); 161 instance.setId(template.getId()); 162 instance.setCreatedAt(template.getCreatedAt()); 163 instance.setItems(template.getItems()); 164 instance.setParcels(template.getParcels()); 165 instance.setAddress(template.getAddress()); 166 instance.setCustom(template.getCustom()); 167 return instance; 168 } 169 170 /** 171 * factory method to create a deep copy of Delivery 172 * @param template instance to be copied 173 * @return copy instance 174 */ 175 @Nullable 176 public static Delivery deepCopy(@Nullable final Delivery template) { 177 if (template == null) { 178 return null; 179 } 180 DeliveryImpl instance = new DeliveryImpl(); 181 instance.setId(template.getId()); 182 instance.setCreatedAt(template.getCreatedAt()); 183 instance.setItems(Optional.ofNullable(template.getItems()) 184 .map(t -> t.stream() 185 .map(com.commercetools.history.models.common.DeliveryItem::deepCopy) 186 .collect(Collectors.toList())) 187 .orElse(null)); 188 instance.setParcels(Optional.ofNullable(template.getParcels()) 189 .map(t -> t.stream() 190 .map(com.commercetools.history.models.common.Parcel::deepCopy) 191 .collect(Collectors.toList())) 192 .orElse(null)); 193 instance.setAddress(com.commercetools.history.models.common.Address.deepCopy(template.getAddress())); 194 instance.setCustom(com.commercetools.history.models.common.CustomFields.deepCopy(template.getCustom())); 195 return instance; 196 } 197 198 /** 199 * builder factory method for Delivery 200 * @return builder 201 */ 202 public static DeliveryBuilder builder() { 203 return DeliveryBuilder.of(); 204 } 205 206 /** 207 * create builder for Delivery instance 208 * @param template instance with prefilled values for the builder 209 * @return builder 210 */ 211 public static DeliveryBuilder builder(final Delivery template) { 212 return DeliveryBuilder.of(template); 213 } 214 215 /** 216 * accessor map function 217 * @param <T> mapped type 218 * @param helper function to map the object 219 * @return mapped value 220 */ 221 default <T> T withDelivery(Function<Delivery, T> helper) { 222 return helper.apply(this); 223 } 224 225 /** 226 * gives a TypeReference for usage with Jackson DataBind 227 * @return TypeReference 228 */ 229 public static com.fasterxml.jackson.core.type.TypeReference<Delivery> typeReference() { 230 return new com.fasterxml.jackson.core.type.TypeReference<Delivery>() { 231 @Override 232 public String toString() { 233 return "TypeReference<Delivery>"; 234 } 235 }; 236 } 237}