Class ProductVariantUpdateActionUtils
- java.lang.Object
 - 
- com.commercetools.sync.products.utils.ProductVariantUpdateActionUtils
 
 
- 
public final class ProductVariantUpdateActionUtils extends java.lang.Object 
- 
- 
Field Summary
Fields Modifier and Type Field Description static java.lang.StringFAILED_TO_BUILD_ATTRIBUTE_UPDATE_ACTIONstatic java.lang.StringNULL_PRODUCT_VARIANT_ATTRIBUTE 
- 
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.util.List<io.sphere.sdk.products.commands.updateactions.MoveImageToPosition>buildMoveImageToPositionUpdateActions(int variantId, java.util.List<io.sphere.sdk.products.Image> oldImages, java.util.List<io.sphere.sdk.products.Image> newImages)Compares an oldListofImages and a new one and returns aListofMoveImageToPositionwith the givenvariantId.static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>>buildProductVariantAssetsUpdateActions(io.sphere.sdk.products.ProductProjection oldProduct, io.sphere.sdk.products.ProductDraft newProduct, io.sphere.sdk.products.ProductVariant oldProductVariant, io.sphere.sdk.products.ProductVariantDraft newProductVariant, ProductSyncOptions syncOptions)Compares theListofAssetDrafts of aProductVariantDraftand aProductVariantand returns aListofUpdateAction<Product>.static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>>buildProductVariantAttributesUpdateActions(io.sphere.sdk.products.ProductProjection oldProduct, io.sphere.sdk.products.ProductDraft newProduct, io.sphere.sdk.products.ProductVariant oldProductVariant, io.sphere.sdk.products.ProductVariantDraft newProductVariant, java.util.Map<java.lang.String,AttributeMetaData> attributesMetaData, ProductSyncOptions syncOptions)Compares the attributes of aProductVariantDraftand aProductVariantto build eitherSetAttributeorSetAttributeInAllVariantsupdate actions.static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>>buildProductVariantImagesUpdateActions(io.sphere.sdk.products.ProductVariant oldProductVariant, io.sphere.sdk.products.ProductVariantDraft newProductVariant)Compares theListofImages of aProductVariantDraftand aProductVariantand returns aListofUpdateAction<Product>.static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>>buildProductVariantPricesUpdateActions(io.sphere.sdk.products.ProductProjection oldProduct, io.sphere.sdk.products.ProductDraft newProduct, io.sphere.sdk.products.ProductVariant oldProductVariant, io.sphere.sdk.products.ProductVariantDraft newProductVariant, ProductSyncOptions syncOptions)Compares theListofPrices of aProductVariantDraftand aProductVariantand returns aListofUpdateAction<Product>.static java.util.Optional<io.sphere.sdk.products.commands.updateactions.SetSku>buildProductVariantSkuUpdateAction(io.sphere.sdk.products.ProductVariant oldProductVariant, io.sphere.sdk.products.ProductVariantDraft newProductVariant)Compares the SKUs of aProductVariantDraftand aProductVariant. 
 - 
 
- 
- 
Field Detail
- 
FAILED_TO_BUILD_ATTRIBUTE_UPDATE_ACTION
public static final java.lang.String FAILED_TO_BUILD_ATTRIBUTE_UPDATE_ACTION
- See Also:
 - Constant Field Values
 
 
- 
NULL_PRODUCT_VARIANT_ATTRIBUTE
public static final java.lang.String NULL_PRODUCT_VARIANT_ATTRIBUTE
- See Also:
 - Constant Field Values
 
 
 - 
 
- 
Method Detail
- 
buildProductVariantSkuUpdateAction
@Nonnull public static java.util.Optional<io.sphere.sdk.products.commands.updateactions.SetSku> buildProductVariantSkuUpdateAction(@Nonnull io.sphere.sdk.products.ProductVariant oldProductVariant, @Nonnull io.sphere.sdk.products.ProductVariantDraft newProductVariant)Compares the SKUs of aProductVariantDraftand aProductVariant. It returns aSetSkuupdate action as a result in anOptional. If both theProductVariantDraftand theProductVarianthave identical identical SKUs, then no update action is needed and hence an emptyOptionalis returned.- Parameters:
 oldProductVariant- the variant which should be updated.newProductVariant- the variant draft where we get the new SKU.- Returns:
 - A filled optional with the update action or an empty optional if the SKUs are identical.
 
 
- 
buildProductVariantPricesUpdateActions
@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildProductVariantPricesUpdateActions(@Nullable io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct, @Nonnull io.sphere.sdk.products.ProductVariant oldProductVariant, @Nonnull io.sphere.sdk.products.ProductVariantDraft newProductVariant, @Nonnull ProductSyncOptions syncOptions)Compares theListofPrices of aProductVariantDraftand aProductVariantand returns aListofUpdateAction<Product>. If both theProductVariantDraftand theProductVarianthave identical list of prices, then no update action is needed and hence an emptyListis returned.- Parameters:
 oldProduct- the product which should be updated.newProduct- the product draft.oldProductVariant- theProductVariantwhich should be updated.newProductVariant- theProductVariantDraftwhere we get the new list of prices.syncOptions- the sync options wrapper which contains options related to the sync process supplied by the user. For example, custom callbacks to call in case of warnings or errors occurring on the build update action process. And other options (SeeProductSyncOptionsfor more info).- Returns:
 - a list that contains all the update actions needed, otherwise an empty list if no update actions are needed.
 
 
- 
buildProductVariantImagesUpdateActions
@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildProductVariantImagesUpdateActions(@Nonnull io.sphere.sdk.products.ProductVariant oldProductVariant, @Nonnull io.sphere.sdk.products.ProductVariantDraft newProductVariant)Compares theListofImages of aProductVariantDraftand aProductVariantand returns aListofUpdateAction<Product>. If both theProductVariantDraftand theProductVarianthave identical list of images, then no update action is needed and hence an emptyListis returned.- Parameters:
 oldProductVariant- theProductVariantwhich should be updated.newProductVariant- theProductVariantDraftwhere we get the new list of images.- Returns:
 - a list that contains all the update actions needed, otherwise an empty list if no update actions are needed.
 
 
- 
buildMoveImageToPositionUpdateActions
public static java.util.List<io.sphere.sdk.products.commands.updateactions.MoveImageToPosition> buildMoveImageToPositionUpdateActions(int variantId, @Nonnull java.util.List<io.sphere.sdk.products.Image> oldImages, @Nonnull java.util.List<io.sphere.sdk.products.Image> newImages)Compares an oldListofImages and a new one and returns aListofMoveImageToPositionwith the givenvariantId. If both the lists are identical, then no update action is needed and hence an emptyListis returned.This method expects the two lists two contain the same images only in different order. Otherwise, an
IllegalArgumentExceptionwould be thrown.Note: the solution is still not optimized and may contain
MoveImageToPositionactions for items which are already on desired positions (after previous moves in the sequence). This will be re-optimized in the next releases.- Parameters:
 variantId- the variantId for theMoveImageToPositionupdate actions.oldImages- the old list of images.newImages- the new list of images.- Returns:
 - a list that contains all the update actions needed, otherwise an empty list if no update actions are needed.
 
 
- 
buildProductVariantAssetsUpdateActions
@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildProductVariantAssetsUpdateActions(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct, @Nonnull io.sphere.sdk.products.ProductVariant oldProductVariant, @Nonnull io.sphere.sdk.products.ProductVariantDraft newProductVariant, @Nonnull ProductSyncOptions syncOptions)Compares theListofAssetDrafts of aProductVariantDraftand aProductVariantand returns aListofUpdateAction<Product>. If both theProductVariantDraftand theProductVarianthave identical list of assets, then no update action is needed and hence an emptyListis returned. In case, the new product variant draft has a list of assets in which a duplicate key exists, the error callback is triggered and an empty list is returned.- Parameters:
 oldProduct- old Product, whose variant assets should be updated.newProduct- new product draft, which provides the assets to update.oldProductVariant- theProductVariantwhich should be updated.newProductVariant- theProductVariantDraftwhere we get the new list of assets.syncOptions- responsible for supplying the sync options to the sync utility method. It is used for triggering the error callback within the utility, in case of errors.- Returns:
 - a list that contains all the update actions needed, otherwise an empty list if no update actions are needed.
 
 
- 
buildProductVariantAttributesUpdateActions
@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildProductVariantAttributesUpdateActions(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct, @Nonnull io.sphere.sdk.products.ProductVariant oldProductVariant, @Nonnull io.sphere.sdk.products.ProductVariantDraft newProductVariant, @Nonnull java.util.Map<java.lang.String,AttributeMetaData> attributesMetaData, @Nonnull ProductSyncOptions syncOptions)Compares the attributes of aProductVariantDraftand aProductVariantto build eitherSetAttributeorSetAttributeInAllVariantsupdate actions. If both theProductVariantDraftand theProductVarianthave identical list of attributes, then no update action is needed and hence an emptyListis returned.- Parameters:
 oldProduct- the product that the variants belong to. It is used only in the error messages if any.newProduct- the new product draft.oldProductVariant- theProductVariantwhich should be updated.newProductVariant- theProductVariantDraftwhere we get the new list of attributes.attributesMetaData- a map of attribute name ->AttributeMetaData; which defines attribute information: its name, whether a value is required or not and whether it has the constraint "SameForAll" or not.syncOptions- the sync options wrapper which contains options related to the sync process supplied by the user. For example, custom callbacks to call in case of warnings or errors occurring on the build update action process. And other options (SeeProductSyncOptionsfor more info).- Returns:
 - a list that contains all the update actions needed, otherwise an empty list if no update actions are needed.
 
 
 - 
 
 -