Class ProductOption

java.lang.Object
com.broadleafcommerce.cartoperation.domain.ProductOption
All Implemented Interfaces:
Serializable

public class ProductOption extends Object implements Serializable
A "product option" encapsulates additional, variable information about a Product explicitly designed for customer-facing input. This can be info necessary for distinguishing particular variants such as shirt size, color, or material, or it can be some custom user-input such as a name to emboss on the back of a jersey. Finally, it can even drive additional products that should be added to the cart along with the product that it is configured for.
Author:
Chad Harchar (charchar)
See Also:
  • Constructor Details

    • ProductOption

      public ProductOption()
  • Method Details

    • addAttribute

      public void addAttribute(String name, Object value)
      Takes in any additional attributes passed in the request not matching any defined properties.
      Parameters:
      name - Name of the additional attribute
      value - Value of the additional attribute
    • getAttribute

      public Map<String,Object> getAttribute()
      Return any additional attributes passed in the request not matching any defined properties.
      Returns:
      any additional attributes passed in the request not matching any defined properties.
    • getType

      public String getType()
      Controls both how the customer should be inputting values to fill out this option as well as storage of where the value will go once added to the cart.
      Returns:
      which type of input this option is configured for
      See Also:
    • getLabel

      public String getLabel()
      The label shown to customers when displaying this option. This helps communicate to customers how they should fill out the input
      Returns:
      the display shown to customer for this option
    • getItemChoice

      public ItemChoice getItemChoice()
      Configuration for the ProductOptionType.ITEM_CHOICE. Drives customer selection of an additional item to add to their cart
      Returns:
      configuration if the type of this option is an ProductOptionType.ITEM_CHOICE, otherwise null
    • getAttributeChoice

      public AttributeChoice getAttributeChoice()

      Configuration when the type of this option is one of:

      1. ProductOptionType.VARIANT_DISTINGUISHING - drives customer further specifying their choices into a specific Variant that contains a unique SKU code, pricing concerns, etc.
      2. ProductOptionType.CART_ITEM_ATTRIBUTE - Customer input will flow directly in the item attributes within their cart
      3. ProductOptionType.CART_ATTRIBUTE. Customer input will flow directly in the global cart attribute. Any previously-set attribute should be replaced with new values.
      Returns:
      attributeChoice if the type of this option is an ProductOptionType.VARIANT_DISTINGUISHING, ProductOptionType.CART_ITEM_ATTRIBUTE or ProductOptionType.CART_ATTRIBUTE, otherwise null
    • getAttributes

      public Map<String,Object> getAttributes()
      Map holding any additional attributes passed in the request not matching any defined properties.
    • setType

      public void setType(String type)
      Controls both how the customer should be inputting values to fill out this option as well as storage of where the value will go once added to the cart.
      Parameters:
      type - the type of input that the drives customer selection, defaults from ProductOptionType
      See Also:
    • setLabel

      public void setLabel(String label)
      The label shown to customers when displaying this option. This helps communicate to customers how they should fill out the input
      Parameters:
      label - the display shown to customers for this option
    • setItemChoice

      public void setItemChoice(ItemChoice itemChoice)
      Configuration for the ProductOptionType.ITEM_CHOICE. Drives customer selection of an additional item to add to their cart
      Parameters:
      itemChoice - configuration only when type is ProductOptionType.ITEM_CHOICE
    • setAttributeChoice

      public void setAttributeChoice(AttributeChoice attributeChoice)

      Configuration when the type of this option is one of:

      1. ProductOptionType.VARIANT_DISTINGUISHING - drives customer further specifying their choices into a specific Variant that contains a unique SKU code, pricing concerns, etc.
      2. ProductOptionType.CART_ITEM_ATTRIBUTE - Customer input will flow directly in the item attributes within their cart
      3. ProductOptionType.CART_ATTRIBUTE. Customer input will flow directly in the global cart attribute. Any previously-set attribute should be replaced with new values.
      Parameters:
      attributeChoice - configuration for customer-driven values that flow into an attribute
    • setAttributes

      public void setAttributes(Map<String,Object> attributes)
      Map holding any additional attributes passed in the request not matching any defined properties.
    • 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