Skip to content

Commit 177562b

Browse files
committed
DEVX-813: refactoring
1 parent 8c635d4 commit 177562b

5 files changed

Lines changed: 90 additions & 18 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ public CategoryImport toCategoryImport(Category category) {
3434
.map(CommonImportUtil::getLocalizedStringBuilder)
3535
.map(LocalizedStringBuilder::build)
3636
.orElse(null))
37-
.parent(CategoryKeyReference(category.getParent()))
37+
.parent(categoryKeyReference(category.getParent()))
3838
.orderHint(category.getOrderHint())
39-
.externalId(category.getId())
39+
.externalId(category.getExternalId())
4040
.metaTitle(Optional.ofNullable(category.getMetaTitle())
4141
.map(CommonImportUtil::getLocalizedStringBuilder)
4242
.map(LocalizedStringBuilder::build)
@@ -54,7 +54,7 @@ public CategoryImport toCategoryImport(Category category) {
5454
.build();
5555
}
5656

57-
private CategoryKeyReference CategoryKeyReference(CategoryReference categoryReference) {
57+
private CategoryKeyReference categoryKeyReference(CategoryReference categoryReference) {
5858
if (categoryReference == null) {
5959
return null;
6060
}

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

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@
44
import java.time.LocalDate;
55
import java.time.LocalTime;
66
import java.time.ZonedDateTime;
7+
import java.util.ArrayList;
78
import java.util.List;
89
import java.util.Map;
910
import java.util.stream.Collectors;
1011

1112
import com.commercetools.api.models.common.LocalizedString;
13+
import com.commercetools.api.models.product_type.AttributeLocalizedEnumValue;
14+
import com.commercetools.api.models.product_type.AttributePlainEnumValue;
1215
import com.commercetools.api.models.type.CustomFields;
1316
import com.commercetools.api.models.type.FieldContainer;
1417
import com.commercetools.api.models.type.TypeReference;
1518
import com.commercetools.importapi.models.common.*;
1619
import com.commercetools.importapi.models.customfields.CustomField;
1720

21+
import com.commercetools.importapi.models.productvariants.Attribute;
1822
import io.vrap.rmf.base.client.Builder;
1923

2024
public class CommonImportUtil {
@@ -58,6 +62,9 @@ public static Builder<? extends TypedMoney> importApiTypedMoney(com.commercetool
5862
}
5963

6064
public com.commercetools.importapi.models.customfields.Custom getImportApiCustom(CustomFields customFields) {
65+
if (customFields == null) {
66+
return null;
67+
}
6168
return com.commercetools.importapi.models.customfields.Custom.builder()
6269
.type(getTypeReference(customFields.getType()))
6370
.fields(getImportApiFields(customFields.getFields()))
@@ -114,6 +121,67 @@ static CustomField mapCustomField(Object value) {
114121
.value(v -> importApiTypedMoney((com.commercetools.api.models.common.TypedMoney) value, v))
115122
.build();
116123
}
124+
if (value instanceof ArrayList) {
125+
var list = (ArrayList<?>) value;
126+
if (list.isEmpty()) {
127+
return CustomField.localizedStringSetBuilder().value().build();
128+
}
129+
if (list.get(0) instanceof LocalDate) {
130+
return CustomField.dateSetBuilder().value((ArrayList<LocalDate>) list).build();
131+
}
132+
if (list.get(0) instanceof ZonedDateTime) {
133+
return CustomField.dateTimeSetBuilder()
134+
.value((ArrayList<ZonedDateTime>) list)
135+
.build();
136+
}
137+
if (list.get(0) instanceof LocalTime) {
138+
return CustomField.timeSetBuilder().value((ArrayList<LocalTime>) list).build();
139+
}
140+
if (list.get(0) instanceof String) {
141+
return CustomField.stringSetBuilder().value((ArrayList<String>) list).build();
142+
}
143+
if (list.get(0) instanceof Integer) {
144+
return CustomField.numberSetBuilder().value((ArrayList<Double>) list).build();
145+
}
146+
if (list.get(0) instanceof Long) {
147+
return CustomField.numberSetBuilder().value((ArrayList<Double>) list).build();
148+
}
149+
if (list.get(0) instanceof Boolean) {
150+
return CustomField.booleanSetBuilder().value((ArrayList<Boolean>) list).build();
151+
}
152+
if (list.get(0) instanceof Double) {
153+
return CustomField.numberSetBuilder().value((ArrayList<Double>) list).build();
154+
}
155+
if (list.get(0) instanceof LocalizedString) {
156+
return CustomField.localizedStringSetBuilder()
157+
.value(list.stream()
158+
.map(v -> getLocalizedStringBuilder(((LocalizedString) v)).build())
159+
.collect(Collectors.toList()))
160+
.build();
161+
}
162+
if (list.get(0) instanceof AttributePlainEnumValue) {
163+
return CustomField.enumSetBuilder()
164+
.value(((ArrayList<AttributePlainEnumValue>) list).stream()
165+
.map(AttributePlainEnumValue::getKey)
166+
.collect(Collectors.toList()))
167+
.build();
168+
}
169+
if (list.get(0) instanceof AttributeLocalizedEnumValue) {
170+
return CustomField.enumSetBuilder()
171+
.value(((ArrayList<AttributeLocalizedEnumValue>) list).stream()
172+
.map(AttributeLocalizedEnumValue::getKey)
173+
.collect(Collectors.toList()))
174+
.build();
175+
}
176+
if (list.get(0) instanceof com.commercetools.api.models.common.Money) {
177+
return CustomField.moneySetBuilder()
178+
.value(list.stream()
179+
.map(v -> importApiTypedMoney((com.commercetools.api.models.common.TypedMoney) v,
180+
new TypedMoneyBuilder()).build())
181+
.collect(Collectors.toList()))
182+
.build();
183+
}
184+
}
117185
throw new IllegalArgumentException("Unsupported custom field type: " + value.getClass());
118186
}
119187

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

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public CustomerImport toCustomerImport(Customer customer) {
3636
.customerNumber(customer.getCustomerNumber())
3737
.email(customer.getEmail()) // required field
3838
.password(customer.getPassword())
39-
.stores(toImportApiStoreKeyReferences(customer.getStores())) // required field
39+
.stores(toImportApiStoreKeyReferences(customer.getStores()))
4040
.firstName(customer.getFirstName())
4141
.lastName(customer.getLastName())
4242
.middleName(customer.getMiddleName())
@@ -47,14 +47,14 @@ public CustomerImport toCustomerImport(Customer customer) {
4747
.companyName(customer.getCompanyName())
4848
.vatId(customer.getVatId())
4949
.isEmailVerified(customer.getIsEmailVerified())
50-
.customerGroup(toCustomerGroupKeyReference(customer.getCustomerGroup())) // required field
51-
.addresses(mapToCustomerAddresses(customer.getAddresses())) // required field
52-
.defaultBillingAddress(getAddressesId(customer.getDefaultBillingAddress()))
50+
.customerGroup(toCustomerGroupKeyReference(customer.getCustomerGroup()))
51+
.addresses(mapToCustomerAddresses(customer.getAddresses()))
52+
.defaultBillingAddress(getAddressesId(customer.getAddresses(), customer.getDefaultBillingAddressId()))
5353
.billingAddresses(getAddressesIds(customer.getBillingAddresses()))
5454
.shippingAddresses(getAddressesIds(customer.getShippingAddresses()))
55-
.defaultShippingAddress(getAddressesId(customer.findDefaultShippingAddress().orElse(null)))
55+
.defaultShippingAddress(getAddressesId(customer.getAddresses(), customer.getDefaultShippingAddressId()))
5656
.locale(customer.getLocale())
57-
.custom(util.getImportApiCustom(customer.getCustom())) // required field
57+
.custom(util.getImportApiCustom(customer.getCustom()))
5858
.authenticationMode(toImportApiAuthenticationMode(customer.getAuthenticationMode()))
5959
.build();
6060
}
@@ -68,7 +68,8 @@ private AuthenticationMode toImportApiAuthenticationMode(
6868
return null;
6969
}
7070

71-
public CustomerGroupKeyReference toCustomerGroupKeyReference(@NotNull CustomerGroupReference customerGroup) {
71+
public CustomerGroupKeyReference toCustomerGroupKeyReference(CustomerGroupReference customerGroup) {
72+
if (customerGroup == null) return null;
7273
return CustomerGroupKeyReference.builder().key(keyResolverService.resolveKey(customerGroup)).build();
7374
}
7475

@@ -78,14 +79,15 @@ private List<StoreKeyReference> toImportApiStoreKeyReferences(
7879
}
7980

8081
private List<Integer> getAddressesIds(List<Address> shippingAddresses) {
81-
return shippingAddresses.stream().map(CustomerUtil::getAddressesId).toList();
82+
return shippingAddresses.stream().map(a -> getAddressesId(shippingAddresses, a.getId())).toList();
8283
}
8384

84-
private static Integer getAddressesId(Address shippingAddress) {
85-
if (shippingAddress == null) {
86-
return null;
85+
private Integer getAddressesId(List<Address> addresses, String addressId) {
86+
if (addressId == null) return null;
87+
for (int i = 0; i < addresses.size(); i++) {
88+
if (addressId.equals(addresses.get(i).getId())) return i;
8789
}
88-
return parseInt(shippingAddress.getId());
90+
return null;
8991
}
9092

9193
private List<CustomerAddress> mapToCustomerAddresses(List<Address> shippingAddresses) {

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
import com.commercetools.importapi.models.productvariants.ProductVariantImport;
1212

1313
public class ProductVariantUtil {
14-
public ProductVariantImport toProductVariantImport(ProductProjection product, ProductVariant variant,
15-
String productKey) {
14+
public ProductVariantImport toProductVariantImport(ProductProjection product, ProductVariant variant) {
1615
return ProductVariantImport.builder()
1716
.key(variant.getKey()) // required field
1817
.sku(variant.getSku())
@@ -21,7 +20,7 @@ public ProductVariantImport toProductVariantImport(ProductProjection product, Pr
2120
variant.getAttributes().stream().map(ProductUtil::mapAttribute).collect(Collectors.toList()))
2221
.images(toImportImages(variant.getImages()))
2322
.assets(importAssets(variant.getAssets()))
24-
.product(p -> p.key(productKey)) // required field
23+
.product(p -> p.key(product.getKey())) // required field
2524
.build();
2625
}
2726
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ public StandalonePriceImport toStandalonePriceImport(StandalonePrice price) {
4646

4747
private static DiscountedPrice toImportApiDiscountedPrice(
4848
com.commercetools.api.models.common.DiscountedPrice discounted) {
49+
if (discounted == null) {
50+
return null;
51+
}
4952
return DiscountedPrice.builder()
5053
.value(v -> importApiTypedMoney(discounted.getValue(), v))
5154
.discount(toProductDiscountKeyReference(discounted.getDiscount()))

0 commit comments

Comments
 (0)