java.lang.Object
com.broadleafcommerce.catalog.domain.product.option.ItemChoice
All Implemented Interfaces:
Serializable

public class ItemChoice extends Object implements Serializable
Configuration state for DefaultProductOptionType.ITEM_CHOICE.
Author:
Phillip Verheyden (phillipuniverse)
See Also:
  • Constructor Details

    • ItemChoice

      public ItemChoice()
  • Method Details

    • getAttribute

      public <T> T getAttribute(String name)
    • getDefaultPrice

      public javax.money.MonetaryAmount getDefaultPrice()
      Gets the default price as appropriate for the targetType.
      Returns:
      The default price as appropriate for the targetType.
    • getFirstChoicesDefaultPrice

      protected javax.money.MonetaryAmount getFirstChoicesDefaultPrice()
    • isDiscountAllowed

      public boolean isDiscountAllowed()
    • getTargetType

      public String getTargetType()
      Identifies the type of items that a customer can choose from, whether specific products, specific variants, or products from a specific category.
      Returns:
      the DefaultItemChoiceTargetType of this item choice
      See Also:
    • getSelectionType

      public String getSelectionType()
      Describes restrictions placed on the customer's ability to select items from the targeted set. Generally, this is a restriction on how many choices can be selected for a single add-to-cart request and, potentially, how quantity is distributed among multiple selected choices.
      Returns:
      the DefaultItemChoiceSelectionType of this item choice
      See Also:
    • getChoiceKey

      public String getChoiceKey()
      The key used during the validation of cart item's configuration to relate this ItemChoice to one of the cart item's dependent items.
      Returns:
      The key used during the validation of cart item's configuration to relate this ItemChoice to one of the cart item's dependent items.
    • getMaximumQuantity

      public Integer getMaximumQuantity()
      The maximum amount of this item that a customer can purchase at a time. If null, this would allow a customer to specify their own quantity for how many of these items they can add to the cart.
      Returns:
      the maximum quantity of the choice's target product(s) that can be added
    • getMinimumQuantity

      public Integer getMinimumQuantity()
      The minimum amount of the item that a customer must purchase.
      Returns:
      the minimum quantity of the choice's target product(s)
    • getOverridePrice

      public javax.money.MonetaryAmount getOverridePrice()

      The price of this choice. If no pricing is specified here, the price of the target product, getDefaultVariant() () variant}, or selected product from the category will be used.

      If this is a DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS or DefaultItemChoiceTargetType.SPECIFIC_VARIANTS then any price set here will be overridden by the item pricing set on any of the specificChoices for that choice.

      Returns:
      the price of this choice
    • getPricingKey

      public String getPricingKey()
      System-wide unique identifier to configure specific pricing for the choice. Relevant if pricing data is managed in a separate system or data store, like the Broadleaf pricing services.
      Returns:
      a unique key to identify this choice
    • getCategory

      public Category getCategory()
      The Category which the choice will be chosen from by the customer if the targetType is DefaultItemChoiceTargetType.CATEGORY.
      Returns:
      the category from which the choice will be chosen from or {@link null} if targetType is not DefaultItemChoiceTargetType.CATEGORY
    • getDefaultProductInCategory

      public Product getDefaultProductInCategory()
      The default product that can be used when driving customer selections if the targetType is DefaultItemChoiceTargetType.CATEGORY.
      Returns:
      the defaulted selection for this choice if the targetType is DefaultItemChoiceTargetType.CATEGORY, null otherwise or if there is no default selection
    • getDefaultProduct

      public Product getDefaultProduct()
      The default product that can be used when driving customer selections if the targetType is DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS. Can be null.
      Returns:
      the defaulted selection for this choice if the targetType is DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS, null otherwise or if there is no default selection
    • getDefaultVariant

      public Variant getDefaultVariant()
      The default variant that can be used when driving customer selections if the targetType is DefaultItemChoiceTargetType.SPECIFIC_VARIANTS. Can be null.
      Returns:
      the defaulted selection for this choice if the targetType is DefaultItemChoiceTargetType.SPECIFIC_VARIANTS, null otherwise or if there is no default selection
    • getSpecificChoices

      public List<SpecificItemChoice> getSpecificChoices()
      If the targetType is DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS or DefaultItemChoiceTargetType.SPECIFIC_VARIANTS this holds the manually-curated options that the customer can choose from. This also allows for specific override pricing on an item-by-item basis
      Returns:
      the explicit choices for DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS or DefaultItemChoiceTargetType.SPECIFIC_VARIANTS value of the targetType
    • getSpecificItemChoice

      public SpecificItemChoice getSpecificItemChoice()
      If the targetType is DefaultItemChoiceTargetType.SPECIFIC_PRODUCT or DefaultItemChoiceTargetType.SPECIFIC_VARIANT this holds the manually selected option that the customer can choose to add on. This also allows for specific override pricing.
      Returns:
      the explicit choice for DefaultItemChoiceTargetType.SPECIFIC_PRODUCT or DefaultItemChoiceTargetType.SPECIFIC_VARIANT value of the targetType
    • getAttributes

      public Map<String,Object> getAttributes()
      Miscellaneous attributes for this tag.
      Returns:
      Miscellaneous attributes for this tag.
    • setTargetType

      public void setTargetType(String targetType)
      Identifies the type of items that a customer can choose from, whether specific products, specific variants, or products from a specific category.
      Parameters:
      targetType - the DefaultItemChoiceTargetType of this item choice
      See Also:
    • setSelectionType

      public void setSelectionType(String selectionType)
      Describes restrictions placed on the customer's ability to select items from the targeted set. Generally, this is a restriction on how many choices can be selected for a single add-to-cart request and, potentially, how quantity is distributed among multiple selected choices.
      Parameters:
      selectionType - the DefaultItemChoiceSelectionType of this item choice
      See Also:
    • setChoiceKey

      public void setChoiceKey(String choiceKey)
      The key used during the validation of cart item's configuration to relate this ItemChoice to one of the cart item's dependent items.
      Parameters:
      choiceKey - The key used during the validation of cart item's configuration to relate this ItemChoice to one of the cart item's dependent items.
    • setMaximumQuantity

      public void setMaximumQuantity(Integer maximumQuantity)
      The maximum amount of this item that a customer can purchase at a time. If null, this would allow a customer to specify their own quantity for how many of these items they can add to the cart.
      Parameters:
      maximumQuantity - the maximum quantity of the choice's target product(s) that can be added
    • setMinimumQuantity

      public void setMinimumQuantity(Integer minimumQuantity)
      The minimum amount of the item that a customer must purchase.
      Parameters:
      minimumQuantity - the minimum quantity of the choice's target product(s)
    • setOverridePrice

      public void setOverridePrice(javax.money.MonetaryAmount overridePrice)

      The price of this choice. If no pricing is specified here, the price of the target product, getDefaultVariant() () variant}, or selected product from the category will be used.

      If this is a DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS or DefaultItemChoiceTargetType.SPECIFIC_VARIANTS then any price set here will be overridden by the item pricing set on any of the specificChoices for that choice.

      Parameters:
      overridePrice - the price of this choice
    • setDiscountAllowed

      public void setDiscountAllowed(boolean discountAllowed)
      Dictates whether or not discounts are allowed to be applied to this choice.
      Parameters:
      discountAllowed - true if discounts are allowed to be applied to this choice, false otherwise
    • setPricingKey

      public void setPricingKey(String pricingKey)
      System-wide unique identifier to configure specific pricing for the choice. Relevant if pricing data is managed in a separate system or data store, like the Broadleaf pricing services.
      Parameters:
      pricingKey - a unique key to identify this choice (usually a UUID)
    • setCategory

      public void setCategory(Category category)
      The Category which the choice will be chosen from by the customer if the targetType is DefaultItemChoiceTargetType.CATEGORY.
      Parameters:
      category - the category from which the choice will be chosen from
    • setDefaultProductInCategory

      public void setDefaultProductInCategory(Product defaultProductInCategory)
      The default product that can be used when driving customer selections if the targetType is DefaultItemChoiceTargetType.CATEGORY.
      Parameters:
      defaultProduct - the default product that is automatically selected when the targetType is DefaultItemChoiceTargetType.CATEGORY. Should come from within the category
    • setDefaultProduct

      public void setDefaultProduct(Product defaultProduct)
      The default product that can be used when driving customer selections if the targetType is DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS. Can be null.
      Parameters:
      defaultProduct - the default product that is automatically selected when the targetType is { DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS. Should come from the specific set of products in specificChoices
    • setDefaultVariant

      public void setDefaultVariant(Variant defaultVariant)
      The default variant that can be used when driving customer selections if the targetType is DefaultItemChoiceTargetType.SPECIFIC_VARIANTS. Can be null.
      Parameters:
      defaultVariant - the default variant that is automatically selected when the targetType is DefaultItemChoiceTargetType.SPECIFIC_VARIANTS. Should come from the explicit set of variants in specificChoices
    • setSpecificChoices

      public void setSpecificChoices(List<SpecificItemChoice> specificChoices)
      If the targetType is DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS or DefaultItemChoiceTargetType.SPECIFIC_VARIANTS this holds the manually-curated options that the customer can choose from. This also allows for specific override pricing on an item-by-item basis
      Parameters:
      specificChoices - manually-curated options for the user to choose from for this choice
    • setSpecificItemChoice

      public void setSpecificItemChoice(SpecificItemChoice specificItemChoice)
      If the targetType is DefaultItemChoiceTargetType.SPECIFIC_PRODUCT or DefaultItemChoiceTargetType.SPECIFIC_VARIANT this holds the manually selected option that the customer can choose to add on. This also allows for specific override pricing.
      Parameters:
      specificChoice - manually selected option for the user to choose to add on
    • setAttributes

      public void setAttributes(Map<String,Object> attributes)
      Miscellaneous attributes for this tag.
      Parameters:
      attributes - Miscellaneous attributes for this tag.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • canEqual

      protected boolean canEqual(Object other)
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object