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