11
22package com .commercetools .sdk ;
33
4- import java .sql .Time ;
54import java .time .LocalDate ;
65import java .time .LocalTime ;
76import java .time .ZonedDateTime ;
87import java .util .*;
98import java .util .stream .Collectors ;
109
1110import com .commercetools .api .models .cart .CartReferenceImpl ;
12- import com .commercetools .api .models .category .CategoryReference ;
1311import com .commercetools .api .models .category .CategoryReferenceImpl ;
14- import com .commercetools .api .models .common .CentPrecisionMoney ;
1512import com .commercetools .api .models .common .LocalizedString ;
1613import com .commercetools .api .models .common .Money ;
17- import com .commercetools .api .models .common .Price ;
1814import com .commercetools .api .models .product .ProductPriceModeEnum ;
1915import com .commercetools .api .models .product .ProductProjection ;
2016import com .commercetools .api .models .product .ProductReferenceImpl ;
2117import com .commercetools .api .models .product .ProductVariant ;
2218import com .commercetools .api .models .product_type .*;
23- import com .commercetools .api .models .state .State ;
24- import com .commercetools .api .models .state .StateReference ;
25- import com .commercetools .api .models .tax_category .TaxCategory ;
26- import com .commercetools .api .models .tax_category .TaxCategoryReference ;
2719import com .commercetools .importapi .models .common .*;
2820import com .commercetools .importapi .models .productdrafts .PriceDraftImport ;
2921import com .commercetools .importapi .models .productdrafts .ProductDraftImport ;
3022import com .commercetools .importapi .models .productdrafts .ProductVariantDraftImport ;
3123import com .commercetools .importapi .models .productvariants .Attribute ;
32- import com .commercetools .importapi .models .productvariants .BooleanAttribute ;
33- import com .commercetools .importapi .models .productvariants .DateTimeAttribute ;
34- import com .commercetools .importapi .models .productvariants .NumberAttribute ;
24+
3525import io .vrap .rmf .base .client .Builder ;
26+
3627public class ProductUtil {
3728 private final KeyResolverService keyResolverService ;
3829 public ProductUtil () {
3930 keyResolverService = new ExpandObjResolverService ();
4031 }
32+
4133 public ProductUtil (final KeyResolverService resolverService ) {
4234 keyResolverService = resolverService ;
4335 }
36+
4437 public ProductDraftImport toProductDraftImport (ProductProjection product ) {
4538 var draft = ProductDraftImport .builder ()
4639 .key (product .getKey ())
@@ -140,12 +133,12 @@ private static List<PriceDraftImport> mapPricesToImportApi(ProductVariant varian
140133
141134 private static Builder <? extends TypedMoney > importApiTypedMoney (com .commercetools .api .models .common .TypedMoney p ,
142135 TypedMoneyBuilder v ) {
143- return (p instanceof HighPrecisionMoney ) ?
144- v .highPrecisionBuilder ()
136+ return (p instanceof HighPrecisionMoney )
137+ ? v .highPrecisionBuilder ()
145138 .centAmount (p .getCentAmount ())
146139 .currencyCode (p .getCurrencyCode ())
147- .preciseAmount (((com .commercetools .api .models .common .HighPrecisionMoney )p ).getPreciseAmount ()) :
148- v .centPrecisionBuilder ()
140+ .preciseAmount (((com .commercetools .api .models .common .HighPrecisionMoney ) p ).getPreciseAmount ())
141+ : v .centPrecisionBuilder ()
149142 .centAmount (p .getCentAmount ())
150143 .currencyCode (p .getCurrencyCode ())
151144 .fractionDigits (p .getFractionDigits ());
@@ -208,8 +201,10 @@ private static Attribute mapAttribute(com.commercetools.api.models.product.Attri
208201 .build ();
209202 }
210203 if (value instanceof Money ) {
211- return Attribute .moneyBuilder ().name (attribute .getName ()).value ((v -> importApiTypedMoney (
212- (com .commercetools .api .models .common .TypedMoney ) value , v ))).build ();
204+ return Attribute .moneyBuilder ()
205+ .name (attribute .getName ())
206+ .value ((v -> importApiTypedMoney ((com .commercetools .api .models .common .TypedMoney ) value , v )))
207+ .build ();
213208 }
214209 if (value instanceof LocalDate ) {
215210 return Attribute .dateBuilder ().name (attribute .getName ()).value ((LocalDate ) value ).build ();
@@ -235,7 +230,10 @@ private static Attribute mapAttribute(com.commercetools.api.models.product.Attri
235230 return Attribute .dateSetBuilder ().name (attribute .getName ()).value ((ArrayList <LocalDate >) list ).build ();
236231 }
237232 if (list .get (0 ) instanceof ZonedDateTime ) {
238- return Attribute .datetimeSetBuilder ().name (attribute .getName ()).value ((ArrayList <ZonedDateTime >) list ).build ();
233+ return Attribute .datetimeSetBuilder ()
234+ .name (attribute .getName ())
235+ .value ((ArrayList <ZonedDateTime >) list )
236+ .build ();
239237 }
240238 if (list .get (0 ) instanceof LocalTime ) {
241239 return Attribute .timeSetBuilder ().name (attribute .getName ()).value ((ArrayList <LocalTime >) list ).build ();
@@ -258,74 +256,126 @@ private static Attribute mapAttribute(com.commercetools.api.models.product.Attri
258256 if (list .get (0 ) instanceof LocalizedString ) {
259257 return Attribute .ltextSetBuilder ()
260258 .name (attribute .getName ())
261- .value (list .stream ().map (v -> getLocalizedStringBuilder (((LocalizedString ) v )).build ()).collect (
262- Collectors .toList ()))
259+ .value (list .stream ()
260+ .map (v -> getLocalizedStringBuilder (((LocalizedString ) v )).build ())
261+ .collect (Collectors .toList ()))
263262 .build ();
264263 }
265264 if (list .get (0 ) instanceof AttributePlainEnumValue ) {
266265 return Attribute .enumSetBuilder ()
267266 .name (attribute .getName ())
268- .value (((ArrayList <AttributePlainEnumValue >) list ).stream ().map (AttributePlainEnumValue ::getKey ).collect (
269- Collectors .toList ()))
267+ .value (((ArrayList <AttributePlainEnumValue >) list ).stream ()
268+ .map (AttributePlainEnumValue ::getKey )
269+ .collect (Collectors .toList ()))
270270 .build ();
271271 }
272272 if (list .get (0 ) instanceof AttributeLocalizedEnumValue ) {
273273 return Attribute .enumSetBuilder ()
274274 .name (attribute .getName ())
275- .value (((ArrayList <AttributeLocalizedEnumValue >) list ).stream ().map (AttributeLocalizedEnumValue ::getKey ).collect (
276- Collectors .toList ()))
275+ .value (((ArrayList <AttributeLocalizedEnumValue >) list ).stream ()
276+ .map (AttributeLocalizedEnumValue ::getKey )
277+ .collect (Collectors .toList ()))
277278 .build ();
278279 }
279280 if (list .get (0 ) instanceof Money ) {
280- return Attribute .moneySetBuilder ().name (attribute .getName ()).value (
281- list .stream ().map (v -> importApiTypedMoney ((
282- com .commercetools .api .models .common .TypedMoney )v , new TypedMoneyBuilder ()).build ()).collect (Collectors .toList ())).build ();
281+ return Attribute .moneySetBuilder ()
282+ .name (attribute .getName ())
283+ .value (list .stream ()
284+ .map (v -> importApiTypedMoney ((com .commercetools .api .models .common .TypedMoney ) v ,
285+ new TypedMoneyBuilder ()).build ())
286+ .collect (Collectors .toList ()))
287+ .build ();
283288 }
284289 }
285290 if (value instanceof ProductReferenceImpl ) {
286- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .productBuilder ().key (((ProductReferenceImpl ) value ).getObj ().getKey ())).build ();
291+ return Attribute .referenceBuilder ()
292+ .name (attribute .getName ())
293+ .value (r -> r .productBuilder ().key (((ProductReferenceImpl ) value ).getObj ().getKey ()))
294+ .build ();
287295 }
288296 if (value instanceof ProductTypeReferenceImpl ) {
289- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .productTypeBuilder ().key (((ProductTypeReferenceImpl ) value ).getObj ().getKey ())).build ();
297+ return Attribute .referenceBuilder ()
298+ .name (attribute .getName ())
299+ .value (r -> r .productTypeBuilder ().key (((ProductTypeReferenceImpl ) value ).getObj ().getKey ()))
300+ .build ();
290301 }
291302 if (value instanceof CartReferenceImpl ) {
292- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .cartBuilder ().key (((CartReferenceImpl ) value ).getObj ().getKey ())).build ();
303+ return Attribute .referenceBuilder ()
304+ .name (attribute .getName ())
305+ .value (r -> r .cartBuilder ().key (((CartReferenceImpl ) value ).getObj ().getKey ()))
306+ .build ();
293307 }
294308 if (value instanceof BusinessUnitKeyReferenceImpl ) {
295- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .businessUnitBuilder ().key (((BusinessUnitKeyReferenceImpl ) value ).getKey ())).build ();
309+ return Attribute .referenceBuilder ()
310+ .name (attribute .getName ())
311+ .value (r -> r .businessUnitBuilder ().key (((BusinessUnitKeyReferenceImpl ) value ).getKey ()))
312+ .build ();
296313 }
297314 if (value instanceof CategoryReferenceImpl ) {
298- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .categoryBuilder ().key (((CategoryReferenceImpl ) value ).getObj ().getKey ())).build ();
315+ return Attribute .referenceBuilder ()
316+ .name (attribute .getName ())
317+ .value (r -> r .categoryBuilder ().key (((CategoryReferenceImpl ) value ).getObj ().getKey ()))
318+ .build ();
299319 }
300320 if (value instanceof ChannelKeyReferenceImpl ) {
301- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .channelBuilder ().key (((ChannelKeyReferenceImpl ) value ).getKey ())).build ();
321+ return Attribute .referenceBuilder ()
322+ .name (attribute .getName ())
323+ .value (r -> r .channelBuilder ().key (((ChannelKeyReferenceImpl ) value ).getKey ()))
324+ .build ();
302325 }
303326 if (value instanceof CustomerKeyReferenceImpl ) {
304- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .customerBuilder ().key (((CustomerKeyReferenceImpl ) value ).getKey ())).build ();
327+ return Attribute .referenceBuilder ()
328+ .name (attribute .getName ())
329+ .value (r -> r .customerBuilder ().key (((CustomerKeyReferenceImpl ) value ).getKey ()))
330+ .build ();
305331 }
306332 if (value instanceof AssociateRoleKeyReferenceImpl ) {
307- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .associateRoleBuilder ().key (((AssociateRoleKeyReferenceImpl ) value ).getKey ())).build ();
333+ return Attribute .referenceBuilder ()
334+ .name (attribute .getName ())
335+ .value (r -> r .associateRoleBuilder ().key (((AssociateRoleKeyReferenceImpl ) value ).getKey ()))
336+ .build ();
308337 }
309338 if (value instanceof DiscountCodeKeyReferenceImpl ) {
310- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .discountCodeBuilder ().key (((DiscountCodeKeyReferenceImpl ) value ).getKey ())).build ();
339+ return Attribute .referenceBuilder ()
340+ .name (attribute .getName ())
341+ .value (r -> r .discountCodeBuilder ().key (((DiscountCodeKeyReferenceImpl ) value ).getKey ()))
342+ .build ();
311343 }
312344 if (value instanceof CustomerGroupKeyReferenceImpl ) {
313- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .customerGroupBuilder ().key (((CustomerGroupKeyReferenceImpl ) value ).getKey ())).build ();
345+ return Attribute .referenceBuilder ()
346+ .name (attribute .getName ())
347+ .value (r -> r .customerGroupBuilder ().key (((CustomerGroupKeyReferenceImpl ) value ).getKey ()))
348+ .build ();
314349 }
315350 if (value instanceof OrderKeyReferenceImpl ) {
316- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .orderBuilder ().key (((OrderKeyReferenceImpl ) value ).getKey ())).build ();
351+ return Attribute .referenceBuilder ()
352+ .name (attribute .getName ())
353+ .value (r -> r .orderBuilder ().key (((OrderKeyReferenceImpl ) value ).getKey ()))
354+ .build ();
317355 }
318356 if (value instanceof ShippingMethodKeyReferenceImpl ) {
319- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .shippingMethodBuilder ().key (((ShippingMethodKeyReferenceImpl ) value ).getKey ())).build ();
357+ return Attribute .referenceBuilder ()
358+ .name (attribute .getName ())
359+ .value (r -> r .shippingMethodBuilder ().key (((ShippingMethodKeyReferenceImpl ) value ).getKey ()))
360+ .build ();
320361 }
321362 if (value instanceof StateKeyReferenceImpl ) {
322- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .stateBuilder ().key (((StateKeyReferenceImpl ) value ).getKey ())).build ();
363+ return Attribute .referenceBuilder ()
364+ .name (attribute .getName ())
365+ .value (r -> r .stateBuilder ().key (((StateKeyReferenceImpl ) value ).getKey ()))
366+ .build ();
323367 }
324368 if (value instanceof TaxCategoryKeyReferenceImpl ) {
325- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .taxCategoryBuilder ().key (((TaxCategoryKeyReferenceImpl ) value ).getKey ())).build ();
369+ return Attribute .referenceBuilder ()
370+ .name (attribute .getName ())
371+ .value (r -> r .taxCategoryBuilder ().key (((TaxCategoryKeyReferenceImpl ) value ).getKey ()))
372+ .build ();
326373 }
327- if (value instanceof CustomObjectKeyReferenceImpl ) {
328- return Attribute .referenceBuilder ().name (attribute .getName ()).value (r -> r .keyValueDocumentBuilder ().key (((CustomObjectKeyReferenceImpl ) value ).getKey ())).build ();
374+ if (value instanceof CustomObjectKeyReferenceImpl ) {
375+ return Attribute .referenceBuilder ()
376+ .name (attribute .getName ())
377+ .value (r -> r .keyValueDocumentBuilder ().key (((CustomObjectKeyReferenceImpl ) value ).getKey ()))
378+ .build ();
329379 }
330380 /* TODO: AttributeNestedType is not supported yet */
331381 throw new IllegalArgumentException ("Unsupported type: " + value .getClass ());
0 commit comments