Class JpaCustomizedCategoryProductRepository<D extends JpaCategoryProduct>

java.lang.Object
com.broadleafcommerce.catalog.provider.jpa.repository.JpaCustomizedCategoryProductRepository<D>
All Implemented Interfaces:
CustomizedCategoryProductRepository<D>, org.springframework.beans.factory.InitializingBean

public class JpaCustomizedCategoryProductRepository<D extends JpaCategoryProduct> extends Object implements CustomizedCategoryProductRepository<D>, org.springframework.beans.factory.InitializingBean
Author:
Nathan Moore (nathandmoore)
  • Constructor Summary

    Constructors
    Constructor
    Description
    JpaCustomizedCategoryProductRepository(com.broadleafcommerce.data.tracking.core.TrackableBehaviorUtil behaviorUtil, List<com.broadleafcommerce.data.tracking.core.service.RsqlQueryTransformer> rsqlQueryTransformers, cz.jirutka.rsql.parser.ast.RSQLVisitor<jakarta.persistence.criteria.Predicate,Class<?>> rsqlVisitor, com.broadleafcommerce.data.tracking.jpa.filtering.fetch.rsql.JpaFiltersCriteriaBuilder catalogFilterRuleCriteriaBuilder, com.broadleafcommerce.common.jpa.RepositoryEntityTypeManager repositoryEntityTypeManager)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    applyRsqlCriteria(cz.jirutka.rsql.parser.ast.Node filters, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder, jakarta.persistence.criteria.CriteriaQuery<D> nativeQuery, Map<String,Object> nativeQueryParams, List<jakarta.persistence.criteria.Predicate> nativePredicates)
    Processes the given filters to build and apply the necessary Predicate for RSQL.
    protected jakarta.persistence.criteria.Predicate
    buildCategoryContextIdFilter(jakarta.persistence.criteria.Root<D> categoryProductEntity, String categoryContextId, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder, Map<String,Object> parameterValues)
     
    protected jakarta.persistence.criteria.Predicate
    buildProductContextIdInFilter(Collection<String> productContextIds, jakarta.persistence.criteria.Root<D> categoryProductEntity, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder, Map<String,Object> parameterValues)
     
    long
    countNonProductionRecordsByProductIdsInTenant(@NonNull Iterable<String> productContextIds, 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.
    org.springframework.data.domain.Page<D>
    findAllByCategoryIdAndIsSorted(String categoryContextId, boolean isSorted, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Returns all CategoryProducts for the given Category.id where Sortable.getSorted() is true.
    protected org.springframework.data.domain.Page<D>
    findAllByCategoryIdAndOptions(String categoryContextId, List<String> productIds, Boolean isSorted, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    org.springframework.data.domain.Page<D>
    findAllByCategoryIdAndProductIds(String categoryContextId, List<String> productIds, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    Returns all CategoryProducts for the given Category.id and Product's ID.
    org.springframework.data.domain.Page<D>
    findAllByCategoryIdAndProductIdsAndIsSorted(String categoryContextId, List<String> productIds, boolean isSorted, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Returns all CategoryProducts for the given Category.id and Product's ID where Sortable.getSorted() is true.
    findAllByProductContextIdIn(Collection<String> productContextIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    Reads all of the category products which are associated with any of the given productContextIds.
     
    void
     
    void
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • JpaCustomizedCategoryProductRepository

      public JpaCustomizedCategoryProductRepository(com.broadleafcommerce.data.tracking.core.TrackableBehaviorUtil behaviorUtil, List<com.broadleafcommerce.data.tracking.core.service.RsqlQueryTransformer> rsqlQueryTransformers, cz.jirutka.rsql.parser.ast.RSQLVisitor<jakarta.persistence.criteria.Predicate,Class<?>> rsqlVisitor, com.broadleafcommerce.data.tracking.jpa.filtering.fetch.rsql.JpaFiltersCriteriaBuilder catalogFilterRuleCriteriaBuilder, com.broadleafcommerce.common.jpa.RepositoryEntityTypeManager repositoryEntityTypeManager)
  • Method Details

    • afterPropertiesSet

      public void afterPropertiesSet()
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
    • setRepository

      @Autowired @Lazy public void setRepository(CategoryProductRepository<D> repository)
    • findAllByCategoryIdAndIsSorted

      @NonNull public org.springframework.data.domain.Page<D> findAllByCategoryIdAndIsSorted(@NonNull String categoryContextId, boolean isSorted, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @NonNull org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: CustomizedCategoryProductRepository
      Returns all CategoryProducts for the given Category.id where Sortable.getSorted() is true.
      Specified by:
      findAllByCategoryIdAndIsSorted in interface CustomizedCategoryProductRepository<D extends JpaCategoryProduct>
      Parameters:
      categoryContextId - a Category's ID for which to find all sorted CategoryProducts.
      isSorted - Whether to return CategoryProducts where CategoryProduct.sorted is true else where false.
      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
      context - context surrounding sandboxing and multitenant state
      Returns:
      all CategoryProducts for the given Category.id where Sortable.getSorted() is true.
    • findAllByCategoryIdAndProductIdsAndIsSorted

      @NonNull public org.springframework.data.domain.Page<D> findAllByCategoryIdAndProductIdsAndIsSorted(@NonNull String categoryContextId, @Nullable List<String> productIds, boolean isSorted, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @NonNull org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: CustomizedCategoryProductRepository
      Returns all CategoryProducts for the given Category.id and Product's ID where Sortable.getSorted() is true.
      Specified by:
      findAllByCategoryIdAndProductIdsAndIsSorted in interface CustomizedCategoryProductRepository<D extends JpaCategoryProduct>
      Parameters:
      categoryContextId - a Category's ID for which to find all sorted CategoryProducts.
      productIds - the list of Product's ID to retrieve
      isSorted - Whether to return CategoryProducts where CategoryProduct.sorted is true else where false.
      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
      context - context surrounding sandboxing and multitenant state
      Returns:
      all CategoryProducts for the given Category.id where Sortable.getSorted() is true.
    • findAllByCategoryIdAndProductIds

      @NonNull public org.springframework.data.domain.Page<D> findAllByCategoryIdAndProductIds(@NonNull String categoryContextId, @Nullable List<String> productIds, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @NonNull org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CustomizedCategoryProductRepository
      Returns all CategoryProducts for the given Category.id and Product's ID.
      Specified by:
      findAllByCategoryIdAndProductIds in interface CustomizedCategoryProductRepository<D extends JpaCategoryProduct>
      Parameters:
      categoryContextId - a Category's ID for which to find all sorted CategoryProducts.
      productIds - the list of Product's ID to retrieve
      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 - context surrounding sandboxing and multitenant state
      Returns:
      all CategoryProducts for the given Category.id where Sortable.getSorted() is true.
    • findAllByCategoryIdAndOptions

      protected org.springframework.data.domain.Page<D> findAllByCategoryIdAndOptions(@NonNull String categoryContextId, @Nullable List<String> productIds, @Nullable Boolean isSorted, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @NonNull org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • buildCategoryContextIdFilter

      protected jakarta.persistence.criteria.Predicate buildCategoryContextIdFilter(jakarta.persistence.criteria.Root<D> categoryProductEntity, String categoryContextId, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder, Map<String,Object> parameterValues)
    • applyRsqlCriteria

      protected LinkedRSQLQueryDetails applyRsqlCriteria(cz.jirutka.rsql.parser.ast.Node filters, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder, jakarta.persistence.criteria.CriteriaQuery<D> nativeQuery, Map<String,Object> nativeQueryParams, List<jakarta.persistence.criteria.Predicate> nativePredicates)
      Processes the given filters to build and apply the necessary Predicate for RSQL.
      Parameters:
      filters - RSQL filters to apply in the query. Should be EmptyNode if no additional filters should be applied.
      criteriaBuilder - the criteria builder used to generate parameters/predicates. Only used as an argument to populate the CriteriaContext in CriteriaContext.withBuilder(CriteriaBuilder).
      nativeQuery - the native query for the original request. Only used as an argument to populate the CriteriaContext in CriteriaContext.withCriteriaQuery(AbstractQuery).
      nativeQueryParams - the parameter values for the nativeQuery. Only used as an argument to populate the CriteriaContext in CriteriaContext.withNarrowingParams(Map).
      nativePredicates - the list of predicates that will be applied on nativeQuery. If the filters are not for linked fields, then the Predicate will be added to this list.
      Returns:
      the CriteriaContext.getLinkedQuery() and CriteriaContext.getLinkedNarrowingParams() that were produced during processing. While the wrapper object will not be null, any/all of its fields can be (for example, if the filters were not on linked fields). These values are useful for ultimately being supplied to JpaNarrowingHelper.JpaCriterias.
    • findAllByProductContextIdIn

      @Policy(operationTypes=READ) public Stream<D> findAllByProductContextIdIn(Collection<String> productContextIds, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CustomizedCategoryProductRepository
      Reads all of the category products which are associated with any of the given productContextIds.
      Specified by:
      findAllByProductContextIdIn in interface CustomizedCategoryProductRepository<D extends JpaCategoryProduct>
      Parameters:
      productContextIds - a collection of product context IDs which the results must be associated with
      contextInfo - context information surrounding sandboxing and multitenant state
      Returns:
      all of the category products which are associated with any of the given productContextIds
    • countNonProductionRecordsByProductIdsInTenant

      public long countNonProductionRecordsByProductIdsInTenant(@NonNull @NonNull Iterable<String> productContextIds, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: CustomizedCategoryProductRepository
      Returns the count of non-production records that match the given productContextIds and the given tenant context.
      Specified by:
      countNonProductionRecordsByProductIdsInTenant in interface CustomizedCategoryProductRepository<D extends JpaCategoryProduct>
      Parameters:
      productContextIds - 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
    • buildProductContextIdInFilter

      protected jakarta.persistence.criteria.Predicate buildProductContextIdInFilter(Collection<String> productContextIds, jakarta.persistence.criteria.Root<D> categoryProductEntity, jakarta.persistence.criteria.CriteriaBuilder criteriaBuilder, Map<String,Object> parameterValues)
    • getCatalogQueryHelper

      protected JpaCatalogQueryHelper getCatalogQueryHelper()
    • setCatalogQueryHelper

      @Autowired public void setCatalogQueryHelper(JpaCatalogQueryHelper catalogQueryHelper)