Class DefaultProductAssetService<P extends ProductAsset>

java.lang.Object
com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
com.broadleafcommerce.catalog.service.asset.DefaultProductAssetService<P>
All Implemented Interfaces:
ProductAssetService<P>, com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService<P>

public class DefaultProductAssetService<P extends ProductAsset> extends com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P> implements ProductAssetService<P>
Author:
Samarth Dhruva (samarthd)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
     
    protected static final com.broadleafcommerce.data.tracking.core.filtering.fetch.rsql.EmptyNode
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    DefaultProductAssetService(ProductAssetRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, com.broadleafcommerce.common.extension.cache.CacheStateManager cacheStateManager)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    long
    countNonProductionRecordsByProductIdsInTenant(@NonNull Collection<String> productIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Returns the count of non-production records that match the given productContextIds and the given tenant context.
    create(P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.
    createAll(List<P> businessInstances, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.
    com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse<P>
    createAllAllowingPartialSuccess(List<P> businessInstances, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.
    protected com.broadleafcommerce.common.extension.cache.key.ContextKeyGen
     
    protected com.broadleafcommerce.common.extension.cache.CacheStateManager
     
     
    protected ProductAssetRepository<com.broadleafcommerce.data.tracking.core.Trackable>
     
     
    readAllByProductIdIn(Collection<String> productIds, @NonNull cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Reads all of the product assets which are associated with any of the given productIds.
    readAllByProductIdIn(Collection<String> productIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Reads all of the product assets which are associated with any of the given productIds.
    readAllPrimaryAssetsByProductIds(Iterable<String> productIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    Reads all of the primary ProductAssets for the given product IDs.
    readAllPrimaryAssetsByProductIdsExcludeAssetIds(Iterable<String> productIds, Iterable<String> assetIdsToExclude, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    Reads all the primary ProductAssets for the given product IDs excluding given asset IDs.
    readByProductIdAndPrimaryTrue(String productId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    Finds the primary ProductAsset for the given ProductAsset.productId.
    replace(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.
    replaceAll(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> replacements, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.
    com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse<P>
    replaceAllAllowingPartialSuccess(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> replacements, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.
    org.springframework.data.domain.Page<P>
    searchAllWithProductId(String productId, Boolean isSorted, String searchString, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    Finds all ProductAssets for the given product ID, optionally filtering by additional search/filter arguments.
    void
    setCacheByProductAssetKeyGen(com.broadleafcommerce.common.extension.cache.key.ContextKeyGen cacheByProductAssetKeyGen)
     
    void
     
    update(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.
    updateAll(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> updates, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.
    com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse<P>
    updateAllAllowingPartialSuccess(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> updates, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Overridden to enable automatic un-setting of the existing primary.

    Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService

    getRsqlHelper, readAll, readAll, readAll, readAll

    Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService

    convertFromPersistentDomain, convertToPersistentDomain, delete, getHelper, getSortPositionStrategy, readAll, readAll, readAll, readAllByContextId, readByContextId, setSortPositionStrategy, updateSort

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService

    delete, readAll, readAll, readAll, readAllByContextId, readByContextId, updateSort

    Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService

    readAll, readAll, readAll, readAll
  • Field Details

    • EMPTY_NODE

      protected static final com.broadleafcommerce.data.tracking.core.filtering.fetch.rsql.EmptyNode EMPTY_NODE
    • CACHE_BY_PRODUCT_ASSET

      public static final String CACHE_BY_PRODUCT_ASSET
      See Also:
  • Constructor Details

    • DefaultProductAssetService

      public DefaultProductAssetService(ProductAssetRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, @Nullable com.broadleafcommerce.common.extension.cache.CacheStateManager cacheStateManager)
  • Method Details

    • setPrimaryAssetCollisionResolverService

      @Autowired public void setPrimaryAssetCollisionResolverService(AbstractPrimaryAssetCollisionService<P> primaryAssetCollisionResolverService)
    • create

      public P create(P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      create in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      create in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      businessInstance - The business domain instance. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      the created entity
    • update

      public P update(String id, P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      update in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      update in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      id - The context id for the entity. This is the id by which the business recognizes the item.
      businessInstance - The business domain instance. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      the updated entity
    • replace

      public P replace(String id, P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      replace in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      replace in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      id - The context id for the entity. This is the id by which the business recognizes the item.
      businessInstance - The payload type that domain class should be converted to. In general, the payload is what the rest API responds with.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      the entity after replacement
    • createAll

      public List<P> createAll(List<P> businessInstances, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      createAll in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      createAll in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      businessInstances - The list of business domain instances. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      the list of created entities
    • updateAll

      public List<P> updateAll(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> updates, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      updateAll in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      updateAll in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      updates - The list of updates of the business domain instances. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      the list of updated entities
    • replaceAll

      public List<P> replaceAll(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> replacements, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      replaceAll in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      replaceAll in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      replacements - The list of updates of the business domain instances. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      the list of replaced entities
    • createAllAllowingPartialSuccess

      public com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse<P> createAllAllowingPartialSuccess(List<P> businessInstances, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      createAllAllowingPartialSuccess in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      createAllAllowingPartialSuccess in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      businessInstances - The list of the business domain instances. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      a response containing a list of any entities which failed, and a list of the successfully created, narrowed entity instances in the form of a payload instance
    • updateAllAllowingPartialSuccess

      public com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse<P> updateAllAllowingPartialSuccess(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> updates, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      updateAllAllowingPartialSuccess in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      updateAllAllowingPartialSuccess in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      updates - The list of updates of the business domain instances. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      a response containing a list of any entities which failed, and a list of the successfully updated, narrowed entity instances in the form of a payload instance
    • replaceAllAllowingPartialSuccess

      public com.broadleafcommerce.data.tracking.core.service.BulkPersistenceResponse<P> replaceAllAllowingPartialSuccess(List<com.broadleafcommerce.data.tracking.core.service.Update<P>> replacements, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Overridden to enable automatic un-setting of the existing primary.
      Specified by:
      replaceAllAllowingPartialSuccess in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ProductAsset>
      Overrides:
      replaceAllAllowingPartialSuccess in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
      Parameters:
      replacements - The list of updates of the business domain instances. In general, the DomainMapperManager is responsible for converting to a repository platform type for persistence.
      context - Context information used to discriminate the correct version of an entity by context id when multiple versions may be available across sandboxes, catalogs and applications.
      Returns:
      a response containing a list of any entities which failed, and a list of the successfully replaced, narrowed entity instances in the form of a payload instance
    • searchAllWithProductId

      public org.springframework.data.domain.Page<P> searchAllWithProductId(String productId, @Nullable Boolean isSorted, @Nullable String searchString, @NonNull cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: ProductAssetService
      Finds all ProductAssets for the given product ID, optionally filtering by additional search/filter arguments.

      If searchString is provided, then this method will search for assets whose EntityAsset.url, EntityAsset.title, EntityAsset.altText, or EntityAsset.tags contain it.

      If no searchString is provided, then this method will simply return all assets for the given product.

      This method also supports RSQL filtration via filters.

      Specified by:
      searchAllWithProductId in interface ProductAssetService<P extends ProductAsset>
      Parameters:
      productId - the value which the product ID should match against
      isSorted - (optional) if not-null, will restrict results to only include ProductAssets where ProductAsset.sorted has the given value
      searchString - (optional) a string which should be found in EntityAsset.url, EntityAsset.title, EntityAsset.altText, or EntityAsset.tags
      filters - additional filters to apply in the query. Should be EmptyNode if no additional filters should be applied.
      page - the requested page of results from the database
      contextInfo - the context to query within
      Returns:
      the assets in the database with the given product ID, optionally filtered by the given search/filter arguments (if provided)
    • readAllByProductIdIn

      public List<P> readAllByProductIdIn(Collection<String> productIds, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: ProductAssetService
      Reads all of the product assets which are associated with any of the given productIds.
      Specified by:
      readAllByProductIdIn in interface ProductAssetService<P extends ProductAsset>
      Parameters:
      productIds - a collection of product IDs which the results must be associated with
      context - context information surrounding sandboxing and multitenant state
      Returns:
      all of the product assets which are associated with any of the given productIds
    • readAllByProductIdIn

      public List<P> readAllByProductIdIn(Collection<String> productIds, @NonNull @NonNull cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: ProductAssetService
      Reads all of the product assets which are associated with any of the given productIds.
      Specified by:
      readAllByProductIdIn in interface ProductAssetService<P extends ProductAsset>
      Parameters:
      productIds - a collection of product IDs which the results must be associated with
      filters - additional filters to apply in the query. Should be EmptyNode if no additional filters should be applied.
      context - context information surrounding sandboxing and multitenant state
      Returns:
      all of the product assets which are associated with any of the given productIds
    • readByProductIdAndPrimaryTrue

      public Optional<P> readByProductIdAndPrimaryTrue(String productId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: ProductAssetService
      Finds the primary ProductAsset for the given ProductAsset.productId.
      Specified by:
      readByProductIdAndPrimaryTrue in interface ProductAssetService<P extends ProductAsset>
      Parameters:
      productId - the value to match against ProductAsset.productId
      contextInfo - context information around sandboxing and multitenant state
      Returns:
      an optional containing the primary asset for a product, empty otherwise
    • readAllPrimaryAssetsByProductIds

      public List<P> readAllPrimaryAssetsByProductIds(Iterable<String> productIds, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: ProductAssetService
      Reads all of the primary ProductAssets for the given product IDs.
      Specified by:
      readAllPrimaryAssetsByProductIds in interface ProductAssetService<P extends ProductAsset>
      Parameters:
      productIds - IDs of the products for which to read primary assets
      contextInfo - context information around sandboxing and multitenant state
      Returns:
      all of the primary ProductAssets for the given product IDs.
    • readAllPrimaryAssetsByProductIdsExcludeAssetIds

      public List<P> readAllPrimaryAssetsByProductIdsExcludeAssetIds(Iterable<String> productIds, Iterable<String> assetIdsToExclude, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: ProductAssetService
      Reads all the primary ProductAssets for the given product IDs excluding given asset IDs.
      Specified by:
      readAllPrimaryAssetsByProductIdsExcludeAssetIds in interface ProductAssetService<P extends ProductAsset>
      Parameters:
      productIds - IDs of the products for which to find primary assets
      assetIdsToExclude - IDs of the assets to exclude
      contextInfo - context information around sandboxing and multitenant state
      Returns:
      the primary ProductAssets for the given product IDs excluding given asset IDs.
    • countNonProductionRecordsByProductIdsInTenant

      public long countNonProductionRecordsByProductIdsInTenant(@NonNull @NonNull Collection<String> productIds, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: ProductAssetService
      Returns the count of non-production records that match the given productContextIds and the given tenant context.
      Specified by:
      countNonProductionRecordsByProductIdsInTenant in interface ProductAssetService<P extends ProductAsset>
      Parameters:
      productIds - IDs of parent Products to match against
      context - Request context information around sandbox and multitenant state
      Returns:
      the count of non-production records that match the given productContextIds and the given tenant context
    • getRepositoryDomain

      public String getRepositoryDomain()
      Specified by:
      getRepositoryDomain in interface ProductAssetService<P extends ProductAsset>
    • getRepository

      protected ProductAssetRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
      Overrides:
      getRepository in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ProductAsset>
    • getCacheStateManager

      @Nullable protected com.broadleafcommerce.common.extension.cache.CacheStateManager getCacheStateManager()
    • getPrimaryAssetCollisionResolverService

      protected AbstractPrimaryAssetCollisionService<P> getPrimaryAssetCollisionResolverService()
    • setCacheByProductAssetKeyGen

      @Autowired @Qualifier("catalogCacheByProductAsset") public void setCacheByProductAssetKeyGen(@Nullable com.broadleafcommerce.common.extension.cache.key.ContextKeyGen cacheByProductAssetKeyGen)
      See Also:
    • getCacheByProductAssetKeyGen

      @Nullable protected com.broadleafcommerce.common.extension.cache.key.ContextKeyGen getCacheByProductAssetKeyGen()
      See Also: