Class ProductUpdateActionUtils


  • public final class ProductUpdateActionUtils
    extends java.lang.Object
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildAddToCategoryUpdateActions​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the Set of Category References of a ProductDraft and a Product.
      static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeMasterVariantUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct, ProductSyncOptions syncOptions)
      Create update action, if newProduct has #masterVariant#key different than oldProduct staged #masterVariant#key.
      static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeNameUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the LocalizedString names of a ProductDraft and a Product.
      static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeSlugUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the LocalizedString slugs of a ProductDraft and a Product.
      static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildPublishOrUnpublishUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct, boolean hasNewUpdateActions)
      Compares the 'published' field of a ProductDraft and a Product with the new update actions and hasStagedChanges of the old product.
      static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildRemoveFromCategoryUpdateActions​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the Set of Category References of a ProductDraft and a Product.
      static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetCategoryOrderHintUpdateActions​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the CategoryOrderHints of a ProductDraft and a Product.
      static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetDescriptionUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the LocalizedString descriptions of a ProductDraft and a Product.
      static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaDescriptionUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the LocalizedString meta descriptions of a ProductDraft and a Product.
      static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaKeywordsUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the LocalizedString meta keywordss of a ProductDraft and a Product.
      static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaTitleUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the LocalizedString meta titles of a ProductDraft and a Product.
      static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetSearchKeywordsUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the SearchKeywords of a ProductDraft and a Product.
      static java.util.Optional<io.sphere.sdk.products.commands.updateactions.SetTaxCategory> buildSetTaxCategoryUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the TaxCategory references of an old Product and new ProductDraft.
      static java.util.Optional<io.sphere.sdk.products.commands.updateactions.TransitionState> buildTransitionStateUpdateAction​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct)
      Compares the State references of an old Product and new ProductDraft.
      static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildVariantsUpdateActions​(io.sphere.sdk.products.Product oldProduct, io.sphere.sdk.products.ProductDraft newProduct, ProductSyncOptions syncOptions, java.util.Map<java.lang.String,​AttributeMetaData> attributesMetaData)
      Compares the variants (including the master variants) of a ProductDraft and a Product.
      static java.util.List<io.sphere.sdk.products.ProductVariantDraft> getAllVariants​(io.sphere.sdk.products.ProductDraft productDraft)
      Returns a list containing all the variants (including the master variant) of the supplied ProductDraft.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • buildChangeNameUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeNameUpdateAction​(@Nonnull
                                                                                                                                          io.sphere.sdk.products.Product oldProduct,
                                                                                                                                          @Nonnull
                                                                                                                                          io.sphere.sdk.products.ProductDraft newProduct)
        Compares the LocalizedString names of a ProductDraft and a Product. It returns an ChangeName as a result in an Optional. If both the Product and the ProductDraft have the same name, then no update action is needed and hence an empty Optional is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new name.
        Returns:
        A filled optional with the update action or an empty optional if the names are identical.
      • buildSetDescriptionUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetDescriptionUpdateAction​(@Nonnull
                                                                                                                                              io.sphere.sdk.products.Product oldProduct,
                                                                                                                                              @Nonnull
                                                                                                                                              io.sphere.sdk.products.ProductDraft newProduct)
        Compares the LocalizedString descriptions of a ProductDraft and a Product. It returns an SetDescription as a result in an Optional. If both the Product and the ProductDraft have the same description, then no update action is needed and hence an empty Optional is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new description.
        Returns:
        A filled optional with the update action or an empty optional if the descriptions are identical.
      • buildChangeSlugUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeSlugUpdateAction​(@Nonnull
                                                                                                                                          io.sphere.sdk.products.Product oldProduct,
                                                                                                                                          @Nonnull
                                                                                                                                          io.sphere.sdk.products.ProductDraft newProduct)
        Compares the LocalizedString slugs of a ProductDraft and a Product. It returns a ChangeSlug update action as a result in an Optional. If both the Product and the ProductDraft have the same slug, then no update action is needed and hence an empty Optional is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new slug.
        Returns:
        A filled optional with the update action or an empty optional if the slugs are identical.
      • buildAddToCategoryUpdateActions

        @Nonnull
        public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildAddToCategoryUpdateActions​(@Nonnull
                                                                                                                                          io.sphere.sdk.products.Product oldProduct,
                                                                                                                                          @Nonnull
                                                                                                                                          io.sphere.sdk.products.ProductDraft newProduct)
        Compares the Set of Category References of a ProductDraft and a Product. It returns a List of AddToCategory update actions as a result, if the old product needs to be added to a category to have the same set of categories as the new product. If both the Product and the ProductDraft have the same set of categories, then no update actions are needed and hence an empty List is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new slug.
        Returns:
        A list containing the update actions or an empty list if the category sets are identical.
      • buildSetCategoryOrderHintUpdateActions

        @Nonnull
        public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetCategoryOrderHintUpdateActions​(@Nonnull
                                                                                                                                                 io.sphere.sdk.products.Product oldProduct,
                                                                                                                                                 @Nonnull
                                                                                                                                                 io.sphere.sdk.products.ProductDraft newProduct)
        Compares the CategoryOrderHints of a ProductDraft and a Product. It returns a SetCategoryOrderHint update action as a result in an List. If both the Product and the ProductDraft have the same categoryOrderHints, then no update actions are needed and hence an empty List is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new categoryOrderHints.
        Returns:
        A list containing the update actions or an empty list if the categoryOrderHints are identical.
      • buildRemoveFromCategoryUpdateActions

        @Nonnull
        public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildRemoveFromCategoryUpdateActions​(@Nonnull
                                                                                                                                               io.sphere.sdk.products.Product oldProduct,
                                                                                                                                               @Nonnull
                                                                                                                                               io.sphere.sdk.products.ProductDraft newProduct)
        Compares the Set of Category References of a ProductDraft and a Product. It returns a List of RemoveFromCategory update actions as a result, if the old product needs to be removed from a category to have the same set of categories as the new product. If both the Product and the ProductDraft have the same set of categories, then no update actions are needed and hence an empty List is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new slug.
        Returns:
        A list containing the update actions or an empty list if the category sets are identical.
      • buildSetSearchKeywordsUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetSearchKeywordsUpdateAction​(@Nonnull
                                                                                                                                                 io.sphere.sdk.products.Product oldProduct,
                                                                                                                                                 @Nonnull
                                                                                                                                                 io.sphere.sdk.products.ProductDraft newProduct)
        Compares the SearchKeywords of a ProductDraft and a Product. It returns a SetSearchKeywords update action as a result in an Optional. If both the Product and the ProductDraft have the same search keywords, then no update action is needed and hence an empty Optional is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new search keywords.
        Returns:
        A filled optional with the update action or an empty optional if the search keywords are identical.
      • buildSetMetaDescriptionUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaDescriptionUpdateAction​(@Nonnull
                                                                                                                                                  io.sphere.sdk.products.Product oldProduct,
                                                                                                                                                  @Nonnull
                                                                                                                                                  io.sphere.sdk.products.ProductDraft newProduct)
        Compares the LocalizedString meta descriptions of a ProductDraft and a Product. It returns a SetMetaDescription update action as a result in an Optional. If both the Product and the ProductDraft have the same meta description, then no update action is needed and hence an empty Optional is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new meta description.
        Returns:
        A filled optional with the update action or an empty optional if the meta descriptions are identical.
      • buildSetMetaKeywordsUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaKeywordsUpdateAction​(@Nonnull
                                                                                                                                               io.sphere.sdk.products.Product oldProduct,
                                                                                                                                               @Nonnull
                                                                                                                                               io.sphere.sdk.products.ProductDraft newProduct)
        Compares the LocalizedString meta keywordss of a ProductDraft and a Product. It returns a SetMetaKeywords update action as a result in an Optional. If both the Product and the ProductDraft have the same meta keywords, then no update action is needed and hence an empty Optional is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new meta keywords.
        Returns:
        A filled optional with the update action or an empty optional if the meta keywords are identical.
      • buildSetMetaTitleUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaTitleUpdateAction​(@Nonnull
                                                                                                                                            io.sphere.sdk.products.Product oldProduct,
                                                                                                                                            @Nonnull
                                                                                                                                            io.sphere.sdk.products.ProductDraft newProduct)
        Compares the LocalizedString meta titles of a ProductDraft and a Product. It returns a SetMetaTitle update action as a result in an Optional. If both the Product and the ProductDraft have the same meta title, then no update action is needed and hence an empty Optional is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new meta title.
        Returns:
        A filled optional with the update action or an empty optional if the meta titles are identical.
      • buildVariantsUpdateActions

        @Nonnull
        public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildVariantsUpdateActions​(@Nonnull
                                                                                                                                     io.sphere.sdk.products.Product oldProduct,
                                                                                                                                     @Nonnull
                                                                                                                                     io.sphere.sdk.products.ProductDraft newProduct,
                                                                                                                                     @Nonnull
                                                                                                                                     ProductSyncOptions syncOptions,
                                                                                                                                     @Nonnull
                                                                                                                                     java.util.Map<java.lang.String,​AttributeMetaData> attributesMetaData)
        Compares the variants (including the master variants) of a ProductDraft and a Product. It returns a List of variant related update actions. For example:
        • AddVariant
        • RemoveVariant
        • ChangeMasterVariant
        • SetAttribute
        • SetAttributeInAllVariants
        • SetSku
        • AddExternalImage
        • RemoveImage
        • AddPrice
        • ... and more variant level update actions.
        If both the Product and the ProductDraft have identical variants, then no update actions are needed and hence an empty List is returned.

        NOTE: Comparison is done against the staged projection of the old product.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new meta title.
        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 (See ProductSyncOptions for more info).
        attributesMetaData - a map of attribute name -> AttributeMetaData; which defines attribute information: its name and whether it has the constraint "SameForAll" or not.
        Returns:
        A list of product variant-specific update actions.
      • getAllVariants

        @Nonnull
        public static java.util.List<io.sphere.sdk.products.ProductVariantDraft> getAllVariants​(@Nonnull
                                                                                                io.sphere.sdk.products.ProductDraft productDraft)
        Returns a list containing all the variants (including the master variant) of the supplied ProductDraft.
        Parameters:
        productDraft - the product draft that has the variants and master variant that should be returned.
        Returns:
        a list containing all the variants (including the master variant) of the supplied ProductDraft.
      • buildPublishOrUnpublishUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildPublishOrUnpublishUpdateAction​(@Nonnull
                                                                                                                                                  io.sphere.sdk.products.Product oldProduct,
                                                                                                                                                  @Nonnull
                                                                                                                                                  io.sphere.sdk.products.ProductDraft newProduct,
                                                                                                                                                  boolean hasNewUpdateActions)
        Compares the 'published' field of a ProductDraft and a Product with the new update actions and hasStagedChanges of the old product. Accordingly it returns a Publish or Unpublish update action as a result in an Optional. Check the calculation table below for all different combinations named as states.
        Mapping of product publish/unpublish update action calculation
        State New draft publish Old product publish New update actions Old product hasStagedChanges Action
        State 1 false false false false -
        State 2 false false false true -
        State 3 false false true false -
        State 4 false false true true -
        State 5 false true false false unpublish
        State 6 false true false true unpublish
        State 7 false true true false unpublish
        State 8 false true true true unpublish
        State 9 true false false false publish
        State 10 true false false true publish
        State 11 true false true false publish
        State 12 true false true true publish
        State 13 true true false false -
        State 14 true true false true publish
        State 15 true true true false publish
        State 16 true true true true publish

        NOTE: Comparison is done against the staged projection of the old product. If the new product's 'published' field is null, then the default false value is assumed.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft where we get the new published field value.
        hasNewUpdateActions - the product draft has other update actions set.
        Returns:
        A filled optional with the update action or an empty optional if the flag values are identical.
      • buildChangeMasterVariantUpdateAction

        @Nonnull
        public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeMasterVariantUpdateAction​(@Nonnull
                                                                                                                                               io.sphere.sdk.products.Product oldProduct,
                                                                                                                                               @Nonnull
                                                                                                                                               io.sphere.sdk.products.ProductDraft newProduct,
                                                                                                                                               @Nonnull
                                                                                                                                               ProductSyncOptions syncOptions)
        Create update action, if newProduct has #masterVariant#key different than oldProduct staged #masterVariant#key.

        If update action is created - it is created of newProduct.getMasterVariant().getSku()

        If old master variant is missing in the new variants list - add RemoveVariant action at the end.

        Parameters:
        oldProduct - old product with variants
        newProduct - new product draft with variants with resolved references prices references
        syncOptions - the sync options wrapper which contains options related to the sync process
        Returns:
        a list of maximum two elements: ChangeMasterVariant if the keys are different, optionally followed by RemoveVariant if the changed variant does not exist in the new variants list.
      • buildSetTaxCategoryUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.products.commands.updateactions.SetTaxCategory> buildSetTaxCategoryUpdateAction​(@Nonnull
                                                                                                                                       io.sphere.sdk.products.Product oldProduct,
                                                                                                                                       @Nonnull
                                                                                                                                       io.sphere.sdk.products.ProductDraft newProduct)
        Compares the TaxCategory references of an old Product and new ProductDraft. If they are different - return SetTaxCategory update action.

        If the old value is set, but the new one is empty - the command will unset the tax category.

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft with new TaxCategory reference.
        Returns:
        An optional with SetTaxCategory update action.
      • buildTransitionStateUpdateAction

        @Nonnull
        public static java.util.Optional<io.sphere.sdk.products.commands.updateactions.TransitionState> buildTransitionStateUpdateAction​(@Nonnull
                                                                                                                                         io.sphere.sdk.products.Product oldProduct,
                                                                                                                                         @Nonnull
                                                                                                                                         io.sphere.sdk.products.ProductDraft newProduct)
        Compares the State references of an old Product and new ProductDraft. If they are different - return TransitionState update action.

        If the old value is set, but the new one is empty - return empty object, because unset transition state is not possible.

        Note: the transition state action is called with force == true, i.e. the platform won't verify transition

        Parameters:
        oldProduct - the product which should be updated.
        newProduct - the product draft with new State reference.
        Returns:
        An optional with TransitionState update action.