public final class ProductUpdateActionUtils
extends java.lang.Object
Modifier and Type | Method and Description |
---|---|
static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> |
buildAddToCategoryUpdateActions(io.sphere.sdk.products.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct)
Compares the
Set of Category Reference s of a ProductDraft and a
ProductProjection . |
static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> |
buildChangeMasterVariantUpdateAction(io.sphere.sdk.products.ProductProjection 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.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct)
Compares the
LocalizedString names of a ProductDraft and a ProductProjection . |
static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> |
buildChangeSlugUpdateAction(io.sphere.sdk.products.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct)
Compares the
LocalizedString slugs of a ProductDraft and a ProductProjection . |
static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> |
buildPublishOrUnpublishUpdateAction(io.sphere.sdk.products.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct,
boolean hasNewUpdateActions)
Compares the 'published' field of a
ProductDraft and a ProductProjection 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.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct)
Compares the
Set of Category Reference s of a ProductDraft and a
ProductProjection . |
static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> |
buildSetCategoryOrderHintUpdateActions(io.sphere.sdk.products.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct)
Compares the
CategoryOrderHints of a ProductDraft and a ProductProjection . |
static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> |
buildSetDescriptionUpdateAction(io.sphere.sdk.products.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct)
Compares the
LocalizedString descriptions of a ProductDraft and a ProductProjection . |
static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> |
buildSetMetaDescriptionUpdateAction(io.sphere.sdk.products.ProductProjection 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.ProductProjection 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.ProductProjection 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.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct)
Compares the
SearchKeywords of a ProductDraft and a ProductProjection . |
static java.util.Optional<io.sphere.sdk.products.commands.updateactions.SetTaxCategory> |
buildSetTaxCategoryUpdateAction(io.sphere.sdk.products.ProductProjection 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.ProductProjection oldProduct,
io.sphere.sdk.products.ProductDraft newProduct)
Compares the
State references of an old ProductProjection and new ProductDraft . |
static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> |
buildVariantsUpdateActions(io.sphere.sdk.products.ProductProjection 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 . |
@Nonnull public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeNameUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
LocalizedString
names of a ProductDraft
and a ProductProjection
. It returns an ChangeName
as a result in an Optional
. If
both the ProductProjection
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.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new name.@Nonnull public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetDescriptionUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
LocalizedString
descriptions of a ProductDraft
and a ProductProjection
. It returns an SetDescription
as a result in an Optional
. If
both the ProductProjection
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.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new description.@Nonnull public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeSlugUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
LocalizedString
slugs of a ProductDraft
and a ProductProjection
. It returns a ChangeSlug
update action as a result in an Optional
. If both the ProductProjection
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.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new slug.@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildAddToCategoryUpdateActions(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
Set
of Category
Reference
s of a ProductDraft
and a
ProductProjection
. 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 ProductProjection
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.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new slug.@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetCategoryOrderHintUpdateActions(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
CategoryOrderHints
of a ProductDraft
and a ProductProjection
. It returns a SetCategoryOrderHint
update action as a result in an
List
. If both the ProductProjection
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.
ProductProjection
which should be updated.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new categoryOrderHints.@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildRemoveFromCategoryUpdateActions(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
Set
of Category
Reference
s of a ProductDraft
and a
ProductProjection
. 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 ProductProjection
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.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new slug.@Nonnull public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetSearchKeywordsUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
SearchKeywords
of a ProductDraft
and a ProductProjection
.
It returns a SetSearchKeywords
update action as a result in an Optional
. If
both the ProductProjection
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.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new search keywords.@Nonnull public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaDescriptionUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
LocalizedString
meta descriptions of a ProductDraft
and a Product
. It returns a SetMetaDescription
update action as a result in an Optional
. If both the ProductProjection
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.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new meta description.@Nonnull public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaKeywordsUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
LocalizedString
meta keywordss of a ProductDraft
and a Product
. It returns a SetMetaKeywords
update action as a result in an Optional
. If both the ProductProjection
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.
oldProduct
- the productProjection which should be updated.newProduct
- the product draft where we get the new meta keywords.@Nonnull public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildSetMetaTitleUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
LocalizedString
meta titles of a ProductDraft
and a Product
. It returns a SetMetaTitle
update action as a result in an Optional
.
If both the ProductProjection
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.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft where we get the new meta title.@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildVariantsUpdateActions(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct, @Nonnull ProductSyncOptions syncOptions, @Nonnull java.util.Map<java.lang.String,AttributeMetaData> attributesMetaData)
ProductDraft
and a Product
. It returns a List
of variant related update actions. For example:
AddVariant
RemoveVariant
ChangeMasterVariant
SetAttribute
SetAttributeInAllVariants
SetSku
AddExternalImage
RemoveImage
AddPrice
ProductProjection
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.
ProductProjection
which should be updated.
oldProduct
- the productprojection 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.@Nonnull public static java.util.List<io.sphere.sdk.products.ProductVariantDraft> getAllVariants(@Nonnull io.sphere.sdk.products.ProductDraft productDraft)
ProductDraft
.productDraft
- the product draft that has the variants and master variant that should be
returned.ProductDraft
.@Nonnull public static java.util.Optional<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildPublishOrUnpublishUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct, boolean hasNewUpdateActions)
ProductDraft
and a ProductProjection
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.
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.
oldProduct
- the productprojection 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.@Nonnull public static java.util.List<io.sphere.sdk.commands.UpdateAction<io.sphere.sdk.products.Product>> buildChangeMasterVariantUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct, @Nonnull ProductSyncOptions syncOptions)
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.
oldProduct
- old productprojections with variantsnewProduct
- new product draft with variants with resolved references prices
referencessyncOptions
- the sync options wrapper which contains options related to the sync processChangeMasterVariant
if the keys are different,
optionally followed by RemoveVariant
if the changed variant does not exist in the
new variants list.@Nonnull public static java.util.Optional<io.sphere.sdk.products.commands.updateactions.SetTaxCategory> buildSetTaxCategoryUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
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.
ProductProjection
which should be updated.
oldProduct
- the productprojection which should be updated.newProduct
- the product draft with new TaxCategory
reference.SetTaxCategory
update action.@Nonnull public static java.util.Optional<io.sphere.sdk.products.commands.updateactions.TransitionState> buildTransitionStateUpdateAction(@Nonnull io.sphere.sdk.products.ProductProjection oldProduct, @Nonnull io.sphere.sdk.products.ProductDraft newProduct)
State
references of an old ProductProjection
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
oldProduct
- the productprojection which should be updated.newProduct
- the product draft with new State
reference.TransitionState
update action.