Class CatalogTrackableSolrQueryContributor

  • All Implemented Interfaces:
    SolrQueryContributor, org.springframework.core.Ordered

    public class CatalogTrackableSolrQueryContributor
    extends AbstractSolrQueryContributor
    Add query filters to narrow query results down to the most specific Catalog context provided.
    • Field Summary

      • Fields inherited from interface org.springframework.core.Ordered

        HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void contributeInternal​(org.apache.solr.client.solrj.SolrQuery solrQuery, com.broadleafcommerce.search.api.domain.SearchRequest searchRequest, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, org.springframework.data.domain.Pageable page, com.broadleafcommerce.search.core.service.SearchRequestProperties properties, String locale, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Customize the provided solrQuery with some additional behavior.
      boolean contributeOnTypeAhead()  
      protected String filterOnNoCatalog()
      Create a filter for documents with no specified catalog.
      protected String filterOverriddenCatalogs​(Set<String> catalogIds)
      Create a filter to exclude documents for which more specific versions exist for this catalog context.
      protected Set<String> getApplicationCatalogs​(com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Retrieve all catalogs visible from the current application.
      protected Set<String> getCatalogsForApplication​(com.broadleafcommerce.data.tracking.core.tenant.domain.Application application, boolean isIncludePending)
      Retrieve all catalogs visible for the current application.
      protected Set<String> getForcedCatalogs​(com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Retrieve currently specified visible catalogs.
      protected boolean shouldContribute​(org.apache.solr.client.solrj.SolrQuery solrQuery, com.broadleafcommerce.search.api.domain.SearchRequest searchRequest, org.springframework.data.domain.Pageable page, com.broadleafcommerce.search.core.service.SearchRequestProperties properties, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Determines if this contributor should run.
    • Constructor Detail

      • CatalogTrackableSolrQueryContributor

        public CatalogTrackableSolrQueryContributor()
    • Method Detail

      • contributeInternal

        protected void contributeInternal​(org.apache.solr.client.solrj.SolrQuery solrQuery,
                                          com.broadleafcommerce.search.api.domain.SearchRequest searchRequest,
                                          List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions,
                                          org.springframework.data.domain.Pageable page,
                                          com.broadleafcommerce.search.core.service.SearchRequestProperties properties,
                                          @Nullable
                                          String locale,
                                          @Nullable
                                          com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from class: AbstractSolrQueryContributor
        Customize the provided solrQuery with some additional behavior.
        Specified by:
        contributeInternal in class AbstractSolrQueryContributor
        Parameters:
        solrQuery - The query to customize
        searchRequest - The search query request
        fieldDefinitions - The fields to perform the search on
        page - Page information for page to retrieve for query
        properties - Additional properties for this query
        locale - The locale of this search
        context - The context information surrounding sandboxing/multitenant state
      • getForcedCatalogs

        protected Set<String> getForcedCatalogs​(com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Retrieve currently specified visible catalogs.
        Parameters:
        context - The context information surrounding sandboxing/multitenant state
        Returns:
        Catalogs narrowed to only specified visible catalogs
      • getApplicationCatalogs

        protected Set<String> getApplicationCatalogs​(com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Retrieve all catalogs visible from the current application.
        Parameters:
        context - The context information surrounding sandboxing/multitenant state
        Returns:
        Catalogs narrowed to all catalogs visible from the current application.
      • getCatalogsForApplication

        protected Set<String> getCatalogsForApplication​(com.broadleafcommerce.data.tracking.core.tenant.domain.Application application,
                                                        boolean isIncludePending)
        Retrieve all catalogs visible for the current application. Includes catalogs from inheritance lines, and optionally pending catalogs.
        Parameters:
        application - The application to retrieve visible catalogs from
        isIncludePending - Should pending catalogs be retrieved
        Returns:
        All catalogs visible for the application context
      • filterOnNoCatalog

        protected String filterOnNoCatalog()
        Create a filter for documents with no specified catalog.

        Note that the nested negative filter must contain a "*:* AND" as well. See https://stackoverflow.com/questions/7363819

        Returns:
        A filter for documents with no specified catalog.
      • filterOverriddenCatalogs

        protected String filterOverriddenCatalogs​(Set<String> catalogIds)
        Create a filter to exclude documents for which more specific versions exist for this catalog context.
        Parameters:
        catalogIds - The IDs of the catalogs which are used for this context
        Returns:
        Filter query to exclude less specific catalog documents
      • shouldContribute

        protected boolean shouldContribute​(org.apache.solr.client.solrj.SolrQuery solrQuery,
                                           com.broadleafcommerce.search.api.domain.SearchRequest searchRequest,
                                           org.springframework.data.domain.Pageable page,
                                           com.broadleafcommerce.search.core.service.SearchRequestProperties properties,
                                           @Nullable
                                           com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from class: AbstractSolrQueryContributor
        Determines if this contributor should run.
        Specified by:
        shouldContribute in class AbstractSolrQueryContributor
        Parameters:
        solrQuery - The query to customize
        searchRequest - The search query request
        page - Page information for page to retrieve for query
        properties - Additional properties for this query.
        context - The context information surrounding sandboxing/multitenant state
        Returns:
        whether this contributor should run
      • contributeOnTypeAhead

        public boolean contributeOnTypeAhead()
        Returns:
        Should this contributor be executed on TypeAhead requests?