Skip to content

Commit 94334ff

Browse files
committed
DEVX-813: adding ProductVariantUtil
1 parent 717db43 commit 94334ff

2 files changed

Lines changed: 40 additions & 11 deletions

File tree

commercetools/commercetools-importapi-utils/src/main/java/com/commercetools/sdk/ProductUtil.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -129,23 +129,26 @@ private static ProductVariantDraftImport extractProductVariantDraftImport(Produc
129129
return ProductVariantDraftImport.builder()
130130
.key(variant.getKey())
131131
.sku(variant.getSku())
132-
.images(variant.getImages()
133-
.stream()
134-
.map(i -> com.commercetools.importapi.models.common.Image.builder()
135-
.dimensions(d -> com.commercetools.importapi.models.common.AssetDimensions.builder()
136-
.w(i.getDimensions().getW())
137-
.h(i.getDimensions().getH()))
138-
.url(i.getUrl())
139-
.label(i.getLabel())
140-
.build())
141-
.collect(Collectors.toList()))
132+
.images(toImportImages(variant.getImages()))
142133
.prices(mapPricesToImportApi(variant))
143134
.attributes(
144135
variant.getAttributes().stream().map(ProductUtil::mapAttribute).collect(Collectors.toList()))
145136
.assets(importAssets(variant.getAssets()))
146137
.build();
147138
}
148139

140+
public static @NotNull List<Image> toImportImages(List<com.commercetools.api.models.common.Image> images) {
141+
return images
142+
.stream()
143+
.map(i -> Image.builder()
144+
.dimensions(
145+
d -> AssetDimensions.builder().w(i.getDimensions().getW()).h(i.getDimensions().getH()))
146+
.url(i.getUrl())
147+
.label(i.getLabel())
148+
.build())
149+
.collect(Collectors.toList());
150+
}
151+
149152
private static List<PriceDraftImport> mapPricesToImportApi(ProductVariant variant) {
150153
return variant.getPrices()
151154
.stream()
@@ -163,7 +166,7 @@ private List<CategoryKeyReference> extractCategoryKeyReference(ProductProjection
163166
.collect(Collectors.toList());
164167
}
165168

166-
private static Attribute mapAttribute(com.commercetools.api.models.product.Attribute attribute) {
169+
public static Attribute mapAttribute(com.commercetools.api.models.product.Attribute attribute) {
167170
Object value = attribute.getValue();
168171

169172
if (value instanceof String) {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.commercetools.sdk;
2+
3+
import com.commercetools.api.models.product.ProductProjection;
4+
import com.commercetools.api.models.product.ProductVariant;
5+
import com.commercetools.importapi.models.productvariants.ProductVariantImport;
6+
7+
import java.util.stream.Collectors;
8+
9+
import static com.commercetools.sdk.CommonImportUtil.importAssets;
10+
import static com.commercetools.sdk.ProductUtil.toImportImages;
11+
12+
public class ProductVariantUtil {
13+
public ProductVariantImport toProductVariantImport(ProductProjection product, ProductVariant variant, String productKey) {
14+
return ProductVariantImport.builder()
15+
.key(variant.getKey()) // required field
16+
.sku(variant.getSku())
17+
.isMasterVariant(variant.getId().equals(product.getMasterVariant().getId())) // required field
18+
.attributes(variant.getAttributes().stream()
19+
.map(ProductUtil::mapAttribute)
20+
.collect(Collectors.toList()))
21+
.images(toImportImages(variant.getImages()))
22+
.assets(importAssets(variant.getAssets()))
23+
.product(p -> p.key(productKey)) // required field
24+
.build();
25+
}
26+
}

0 commit comments

Comments
 (0)