Skip to content

Commit 7277186

Browse files
committed
DEVX-813: adding new classes
1 parent e8f568b commit 7277186

2 files changed

Lines changed: 126 additions & 30 deletions

File tree

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package com.commercetools.sdk;
2+
3+
import com.commercetools.api.models.common.LocalizedString;
4+
import com.commercetools.api.models.type.CustomFields;
5+
import com.commercetools.api.models.type.FieldContainer;
6+
import com.commercetools.api.models.type.TypeReference;
7+
import com.commercetools.importapi.models.common.*;
8+
import com.commercetools.importapi.models.customfields.CustomField;
9+
import io.vrap.rmf.base.client.Builder;
10+
11+
import java.time.LocalDate;
12+
import java.time.LocalTime;
13+
import java.time.ZonedDateTime;
14+
import java.util.List;
15+
import java.util.Map;
16+
import java.util.stream.Collectors;
17+
18+
public class CommonImportUtil {
19+
20+
public static LocalizedStringBuilder getLocalizedStringBuilder(LocalizedString s) {
21+
return com.commercetools.importapi.models.common.LocalizedString.builder().values(s.values());
22+
}
23+
24+
public static List<Asset> importAssets(
25+
List<com.commercetools.api.models.common.Asset> assets) {
26+
if (assets == null) {
27+
return null;
28+
}
29+
return assets.stream()
30+
.map(a -> com.commercetools.importapi.models.common.Asset.builder()
31+
.key(a.getKey())
32+
.name(getLocalizedStringBuilder(a.getName()).build())
33+
.build())
34+
.collect(Collectors.toList());
35+
}
36+
37+
public static Builder<? extends TypedMoney> importApiTypedMoney(com.commercetools.api.models.common.TypedMoney p,
38+
TypedMoneyBuilder v) {
39+
return (p instanceof HighPrecisionMoney)
40+
? v.highPrecisionBuilder()
41+
.centAmount(p.getCentAmount())
42+
.currencyCode(p.getCurrencyCode())
43+
.preciseAmount(((com.commercetools.api.models.common.HighPrecisionMoney) p).getPreciseAmount())
44+
: v.centPrecisionBuilder()
45+
.centAmount(p.getCentAmount())
46+
.currencyCode(p.getCurrencyCode())
47+
.fractionDigits(p.getFractionDigits());
48+
}
49+
50+
public static com.commercetools.importapi.models.customfields.Custom getImportApiCustom(CustomFields customFields) {
51+
return com.commercetools.importapi.models.customfields.Custom.builder()
52+
.type(getTypeReference(customFields.getType()))
53+
.fields(getImportApiFields(customFields.getFields()))
54+
.build();
55+
}
56+
57+
private static com.commercetools.importapi.models.customfields.FieldContainer getImportApiFields(
58+
FieldContainer fields) {
59+
return com.commercetools.importapi.models.customfields.FieldContainer.builder()
60+
.values(mapCustomField(fields.values()))
61+
.build();
62+
}
63+
64+
static Map<String, CustomField> mapCustomField(
65+
Map<String, Object> customFieldsValues) {
66+
if (customFieldsValues == null) return null;
67+
return customFieldsValues.entrySet()
68+
.stream()
69+
.collect(Collectors.toMap(
70+
Map.Entry::getKey,
71+
e -> mapCustomField(e.getValue())
72+
));
73+
}
74+
75+
static CustomField mapCustomField(Object value) {
76+
if (value instanceof String) {
77+
return CustomField.stringBuilder().value((String) value).build();
78+
}
79+
if (value instanceof Boolean) {
80+
return CustomField.booleanBuilder().value((Boolean) value).build();
81+
}
82+
if (value instanceof Double) {
83+
return CustomField.numberBuilder().value((Double) value).build();
84+
}
85+
if (value instanceof Integer) {
86+
return CustomField.numberBuilder().value(((Integer) value).doubleValue()).build();
87+
}
88+
if (value instanceof Long) {
89+
return CustomField.numberBuilder().value(((Long) value).doubleValue()).build();
90+
}
91+
if (value instanceof LocalizedString) {
92+
return CustomField.localizedStringBuilder()
93+
.value(getLocalizedStringBuilder((LocalizedString) value).build())
94+
.build();
95+
}
96+
if (value instanceof LocalDate) {
97+
return CustomField.dateBuilder().value((LocalDate) value).build();
98+
}
99+
if (value instanceof ZonedDateTime) {
100+
return CustomField.dateTimeBuilder().value((ZonedDateTime) value).build();
101+
}
102+
if (value instanceof LocalTime) {
103+
return CustomField.timeBuilder().value((LocalTime) value).build();
104+
}
105+
if (value instanceof Money) {
106+
return CustomField.moneyBuilder()
107+
.value(v -> importApiTypedMoney(
108+
(com.commercetools.api.models.common.TypedMoney) value, v))
109+
.build();
110+
}
111+
throw new IllegalArgumentException("Unsupported custom field type: " + value.getClass());
112+
}
113+
114+
private static com.commercetools.importapi.models.common.TypeKeyReference getTypeReference(TypeReference typeRef) {
115+
return TypeKeyReference.builder()
116+
.key(typeRef.getId())
117+
.build();
118+
}
119+
}

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

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,13 @@
2020
import com.commercetools.importapi.models.productdrafts.PriceDraftImport;
2121
import com.commercetools.importapi.models.productdrafts.ProductDraftImport;
2222
import com.commercetools.importapi.models.productdrafts.ProductVariantDraftImport;
23+
import com.commercetools.importapi.models.products.ProductImport;
2324
import com.commercetools.importapi.models.productvariants.Attribute;
2425

2526
import io.vrap.rmf.base.client.Builder;
2627

28+
import static com.commercetools.sdk.CommonImportUtil.*;
29+
2730
public class ProductUtil {
2831
private final KeyResolverService keyResolverService;
2932
public ProductUtil() {
@@ -41,12 +44,12 @@ public ProductDraftImport toProductDraftImport(ProductProjection product) {
4144
.name(l -> getLocalizedStringBuilder(product.getName()))
4245
.slug(l -> getLocalizedStringBuilder(product.getSlug()))
4346
.description(Optional.ofNullable(product.getDescription())
44-
.map(ProductUtil::getLocalizedStringBuilder)
47+
.map(CommonImportUtil::getLocalizedStringBuilder)
4548
.map(LocalizedStringBuilder::build)
4649
.orElse(null))
4750
.categories(extractCategoryKeyReference(product))
4851
.metaTitle(Optional.ofNullable(product.getMetaTitle())
49-
.map(ProductUtil::getLocalizedStringBuilder)
52+
.map(CommonImportUtil::getLocalizedStringBuilder)
5053
.map(LocalizedStringBuilder::build)
5154
.orElse(null))
5255
.metaDescription(
@@ -62,8 +65,8 @@ public ProductDraftImport toProductDraftImport(ProductProjection product) {
6265
return draft.build();
6366
}
6467

65-
private static LocalizedStringBuilder getLocalizedStringBuilder(LocalizedString s) {
66-
return com.commercetools.importapi.models.common.LocalizedString.builder().values(s.values());
68+
public ProductImport toProductImport(ProductProjection product) {
69+
6770
}
6871

6972
private com.commercetools.importapi.models.common.ProductPriceModeEnum mapPriceModeToImportApi(
@@ -131,32 +134,6 @@ private static List<PriceDraftImport> mapPricesToImportApi(ProductVariant varian
131134
.collect(Collectors.toList());
132135
}
133136

134-
private static Builder<? extends TypedMoney> importApiTypedMoney(com.commercetools.api.models.common.TypedMoney p,
135-
TypedMoneyBuilder v) {
136-
return (p instanceof HighPrecisionMoney)
137-
? v.highPrecisionBuilder()
138-
.centAmount(p.getCentAmount())
139-
.currencyCode(p.getCurrencyCode())
140-
.preciseAmount(((com.commercetools.api.models.common.HighPrecisionMoney) p).getPreciseAmount())
141-
: v.centPrecisionBuilder()
142-
.centAmount(p.getCentAmount())
143-
.currencyCode(p.getCurrencyCode())
144-
.fractionDigits(p.getFractionDigits());
145-
}
146-
147-
private static List<com.commercetools.importapi.models.common.Asset> importAssets(
148-
List<com.commercetools.api.models.common.Asset> assets) {
149-
if (assets == null) {
150-
return null;
151-
}
152-
return assets.stream()
153-
.map(a -> com.commercetools.importapi.models.common.Asset.builder()
154-
.key(a.getKey())
155-
.name(getLocalizedStringBuilder(a.getName()).build())
156-
.build())
157-
.collect(Collectors.toList());
158-
}
159-
160137
private List<CategoryKeyReference> extractCategoryKeyReference(ProductProjection product) {
161138
return product.getCategories()
162139
.stream()

0 commit comments

Comments
 (0)