|
4 | 4 | import java.time.LocalDate; |
5 | 5 | import java.time.LocalTime; |
6 | 6 | import java.time.ZonedDateTime; |
| 7 | +import java.util.ArrayList; |
7 | 8 | import java.util.List; |
8 | 9 | import java.util.Map; |
9 | 10 | import java.util.stream.Collectors; |
10 | 11 |
|
11 | 12 | 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; |
12 | 15 | import com.commercetools.api.models.type.CustomFields; |
13 | 16 | import com.commercetools.api.models.type.FieldContainer; |
14 | 17 | import com.commercetools.api.models.type.TypeReference; |
15 | 18 | import com.commercetools.importapi.models.common.*; |
16 | 19 | import com.commercetools.importapi.models.customfields.CustomField; |
17 | 20 |
|
| 21 | +import com.commercetools.importapi.models.productvariants.Attribute; |
18 | 22 | import io.vrap.rmf.base.client.Builder; |
19 | 23 |
|
20 | 24 | public class CommonImportUtil { |
@@ -58,6 +62,9 @@ public static Builder<? extends TypedMoney> importApiTypedMoney(com.commercetool |
58 | 62 | } |
59 | 63 |
|
60 | 64 | public com.commercetools.importapi.models.customfields.Custom getImportApiCustom(CustomFields customFields) { |
| 65 | + if (customFields == null) { |
| 66 | + return null; |
| 67 | + } |
61 | 68 | return com.commercetools.importapi.models.customfields.Custom.builder() |
62 | 69 | .type(getTypeReference(customFields.getType())) |
63 | 70 | .fields(getImportApiFields(customFields.getFields())) |
@@ -114,6 +121,67 @@ static CustomField mapCustomField(Object value) { |
114 | 121 | .value(v -> importApiTypedMoney((com.commercetools.api.models.common.TypedMoney) value, v)) |
115 | 122 | .build(); |
116 | 123 | } |
| 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 | + } |
117 | 185 | throw new IllegalArgumentException("Unsupported custom field type: " + value.getClass()); |
118 | 186 | } |
119 | 187 |
|
|
0 commit comments