Interface VariantsService

All Known Subinterfaces:
BackofficeVariantsService
All Known Implementing Classes:
DefaultBackofficeVariantsService, DefaultVariantsService

public interface VariantsService
Service to provide generic access to variant product attributes. This is necessary because variant product types may be created during runtime and therefore no actual model class is available providing appropriate attribute accessor methods.
Spring Bean ID:
variantsService
  • Method Details

    • getVariantTypeForCode

      VariantTypeModel getVariantTypeForCode(String code)
      Returns a VariantTypeModel instance for the given code.
      Parameters:
      code - the variant type code. Must exists in the system and must be not null.
      Returns:
      a VariantTypeModel for the given code.
      Throws:
      UnknownIdentifierException - if there is no VariantTypeModel for given code
      IllegalArgumentException - if given code is null
    • getVariantAttributes

      Set<String> getVariantAttributes(String variantProductType)
      Returns a set of variant attribute qualifiers for the given variantProductType.
      Parameters:
      variantProductType - the variant type code. Must exists in the system and must be a variant type.
      Returns:
      an empty set if for the given variantProductType no variant attributes were found.
      Throws:
      UnknownIdentifierException - if the given variantProductType does not exists or is not a variant type
    • getVariantAttributeValue

      Object getVariantAttributeValue(VariantProductModel variant, String qualifier)
      Returns for the given VariantProductModel and given attribute qualifier the value of this attribute.
      Parameters:
      variant - the variant product
      qualifier - the attribute qualifier
      Returns:
      what is stored in this attribute.
      Throws:
      SystemException - if the attribute couldn't be read
    • setVariantAttributeValue

      void setVariantAttributeValue(VariantProductModel variant, String qualifier, Object value)
      Sets in the given VariantProductModel the given value to the given attribute qualifier.
      Parameters:
      variant - the variant product
      qualifier - the attribute qualifier
      value - the value to be set
      Throws:
      SystemException - if the attribute couldn't be written
    • getAllVariantTypes

      Collection<VariantTypeModel> getAllVariantTypes()
      Searches all existing variant types.
      Returns:
      the variant types.
    • getAssignedVariantAttributes

      Map<String,Collection<Object>> getAssignedVariantAttributes(ProductModel baseProduct)
      Searches variant attributes with all assigned values for given base product.
      Parameters:
      baseProduct - the base product for all variants
      Returns:
      map "name of attribute (qualifier) ->distinct values" over all variants
    • getVariantProductForAttributeValues

      Collection<VariantProductModel> getVariantProductForAttributeValues(ProductModel baseProduct, Map<String,Object> filterValues)
      Filters a range of variants from a given base product according to the given variant attribute qualifier-value map. If not all available attributes are specified the method is likely to return more than one variant - if all attributes are specified there should be only one variant which matches them.
      Parameters:
      baseProduct - the base product to get variants for
      filterValues - the variant attribute values (attribute qualifier->value map) to match. if null or empty an empty List will be returned.
      Returns:
      collection of matching variants.
    • getVariantAttributesForVariantType

      List<VariantAttributeDescriptorModel> getVariantAttributesForVariantType(VariantTypeModel variantType)
      Returns the attribute descriptors of the given VariantType.
      Parameters:
      variantType - the variant type
      Returns:
      an attributes collection
    • setVariantAttributesForVariantType

      void setVariantAttributesForVariantType(VariantTypeModel variantType, List<VariantAttributeDescriptorModel> newAttributes)
      Tries to assign new variant attribute descriptors for the given variant type. Removes old attributes if necessary and checks if enclosing type is set correctly. This is achieved by internal save of the given variantType with new set of the VariantAttributeDescriptorModels.
      Parameters:
      variantType - the variant type
      newAttributes - the attributes which should be assigned
      Throws:
      IllegalArgumentException - if given variantType is new