Class BeCPGQueryBuilder

All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean

@Service("beCPGQueryBuilder") public class BeCPGQueryBuilder extends AbstractBeCPGQueryBuilder implements org.springframework.beans.factory.InitializingBean

BeCPGQueryBuilder class.

Version:
$Id: $Id
Author:
matthieu
  • Field Details

    • logger

      private static final org.apache.commons.logging.Log logger
      Constant logger
    • DEFAULT_FIELD_NAME

      private static final String DEFAULT_FIELD_NAME
      Constant DEFAULT_FIELD_NAME="keywords"
      See Also:
    • CANNED_QUERY_FILEFOLDER_LIST

      private static final String CANNED_QUERY_FILEFOLDER_LIST
      Constant CANNED_QUERY_FILEFOLDER_LIST="fileFolderGetChildrenCannedQueryFactory"
      See Also:
    • ENABLE_INDEX_TYPES_KEY

      private static final String ENABLE_INDEX_TYPES_KEY
      Constant ENABLE_INDEX_TYPES_KEY="beCPG.solr.enableIndexForTypes"
      See Also:
    • INSTANCE

      private static BeCPGQueryBuilder INSTANCE
      Constant INSTANCE
    • searchService

      @Autowired @Qualifier("SearchService") private org.alfresco.service.cmr.search.SearchService searchService
    • namespaceService

      @Autowired private org.alfresco.service.namespace.NamespaceService namespaceService
    • cannedQueryRegistry

      @Autowired @Qualifier("fileFolderCannedQueryRegistry") private org.alfresco.util.registry.NamedObjectRegistry<org.alfresco.query.CannedQueryFactory<org.alfresco.service.cmr.repository.NodeRef>> cannedQueryRegistry
    • entityDictionaryService

      @Autowired private EntityDictionaryService entityDictionaryService
    • tenantService

      @Autowired private org.alfresco.repo.tenant.TenantService tenantService
    • systemConfigurationService

      @Autowired private SystemConfigurationService systemConfigurationService
    • nodeService

      @Autowired private org.alfresco.service.cmr.repository.NodeService nodeService
    • repository

      @Autowired private org.alfresco.repo.model.Repository repository
    • maxResults

      private Integer maxResults
    • page

      private Integer page
    • parentNodeRef

      private org.alfresco.service.cmr.repository.NodeRef parentNodeRef
    • parentNodeRefs

      private final Set<org.alfresco.service.cmr.repository.NodeRef> parentNodeRefs
    • type

      private org.alfresco.service.namespace.QName type
    • types

      private final Set<org.alfresco.service.namespace.QName> types
    • boostedTypes

      private final Set<org.alfresco.util.Pair<org.alfresco.service.namespace.QName,Integer>> boostedTypes
    • typesToExcludeFromIndex

      private Set<org.alfresco.service.namespace.QName> typesToExcludeFromIndex
    • aspects

      private final Set<org.alfresco.service.namespace.QName> aspects
    • subPath

      private String subPath
    • path

      private String path
    • inSite

      private String inSite
    • excludePath

      private String excludePath
    • membersPath

      private String membersPath
    • ids

      private final Set<org.alfresco.service.cmr.repository.NodeRef> ids
    • notIds

      private final Set<org.alfresco.service.cmr.repository.NodeRef> notIds
    • notNullProps

      private final Set<org.alfresco.service.namespace.QName> notNullProps
    • nullProps

      private final Set<org.alfresco.service.namespace.QName> nullProps
    • nullOrUnsetProps

      private final Set<org.alfresco.service.namespace.QName> nullOrUnsetProps
    • propQueriesMap

      private final Map<org.alfresco.service.namespace.QName,String> propQueriesMap
    • propBetweenQueriesMap

      private final Map<org.alfresco.service.namespace.QName,org.alfresco.util.Pair<String,String>> propBetweenQueriesMap
    • propOrBetweenQueriesMap

      private final Map<org.alfresco.service.namespace.QName,org.alfresco.util.Pair<String,String>> propOrBetweenQueriesMap
    • propBetweenOrNullQueriesMap

      private final Map<org.alfresco.service.namespace.QName,org.alfresco.util.Pair<String,String>> propBetweenOrNullQueriesMap
    • propQueriesEqualMap

      private final Map<org.alfresco.service.namespace.QName,String> propQueriesEqualMap
    • ftsQueries

      private final Set<String> ftsQueries
    • excludedAspects

      private final Set<org.alfresco.service.namespace.QName> excludedAspects
    • excludedTypes

      private final Set<org.alfresco.service.namespace.QName> excludedTypes
    • excludedPropQueriesMap

      private final Map<org.alfresco.service.namespace.QName,List<String>> excludedPropQueriesMap
    • queryConsistancy

      private org.alfresco.service.cmr.search.QueryConsistency queryConsistancy
    • isExactType

      private boolean isExactType
    • searchTemplate

      private String searchTemplate
    • operator

      private org.alfresco.service.cmr.search.SearchParameters.Operator operator
    • locale

      private Locale locale
    • store

      private org.alfresco.service.cmr.repository.StoreRef store
    • isBulkFetchEnabled

      private boolean isBulkFetchEnabled
    • sortProps

      Map<String,Boolean> sortProps
  • Constructor Details

    • BeCPGQueryBuilder

      private BeCPGQueryBuilder()

      Constructor for BeCPGQueryBuilder.

  • Method Details

    • includeReportInSearch

      private Boolean includeReportInSearch()

      includeReportInSearch.

      Returns:
      a Boolean object
    • defaultSearchTemplate

      private String defaultSearchTemplate()

      defaultSearchTemplate.

      Returns:
      a String object
    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
    • isInit

      public boolean isInit()

      isInit.

      Returns:
      a boolean.
    • setTypesToExcludeFromIndex

      public void setTypesToExcludeFromIndex(Set<org.alfresco.service.namespace.QName> typesToExcludeFromIndex)

      Setter for the field typesToExcludeFromIndex.

      Parameters:
      typesToExcludeFromIndex - a Set object
    • getTypesExcludedFromIndex

      public static Set<org.alfresco.service.namespace.QName> getTypesExcludedFromIndex()

      getTypesExcludedFromIndex.

      Returns:
      a Set object
    • isExcludedFromIndex

      public static boolean isExcludedFromIndex(org.alfresco.service.namespace.QName type)

      isExcludedFromIndex.

      Parameters:
      type - a QName object
      Returns:
      a boolean
    • createQuery

      public static BeCPGQueryBuilder createQuery()

      createQuery.

      Returns:
      a BeCPGQueryBuilder object.
    • inStore

      public BeCPGQueryBuilder inStore(org.alfresco.service.cmr.repository.StoreRef store)

      inStore.

      Parameters:
      store - a StoreRef object
      Returns:
      a BeCPGQueryBuilder object
    • ofType

      public BeCPGQueryBuilder ofType(org.alfresco.service.namespace.QName typeQname)

      ofType.

      Parameters:
      typeQname - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • ofExactType

      public BeCPGQueryBuilder ofExactType(org.alfresco.service.namespace.QName typeQname)

      ofExactType.

      Parameters:
      typeQname - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • bulkFetchEnabled

      public BeCPGQueryBuilder bulkFetchEnabled(boolean isBulkFetchEnabled)

      bulkFetchEnabled.

      Parameters:
      isBulkFetchEnabled - a boolean
      Returns:
      a BeCPGQueryBuilder object
    • inType

      public BeCPGQueryBuilder inType(org.alfresco.service.namespace.QName typeQname)

      inType.

      Parameters:
      typeQname - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • inBoostedType

      public BeCPGQueryBuilder inBoostedType(org.alfresco.service.namespace.QName typeQname, Integer boostFactor)

      inBoostedType.

      Parameters:
      typeQname - a QName object.
      boostFactor - a Integer object.
      Returns:
      a BeCPGQueryBuilder object.
    • withAspect

      public BeCPGQueryBuilder withAspect(org.alfresco.service.namespace.QName aspect)

      withAspect.

      Parameters:
      aspect - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • includeAspect

      public BeCPGQueryBuilder includeAspect(org.alfresco.service.namespace.QName aspect)

      includeAspect.

      Parameters:
      aspect - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • inParent

      public BeCPGQueryBuilder inParent(org.alfresco.service.cmr.repository.NodeRef parentNodeRef)

      inParent.

      Parameters:
      parentNodeRef - a NodeRef object.
      Returns:
      a BeCPGQueryBuilder object.
    • maxResults

      public BeCPGQueryBuilder maxResults(int maxResults)

      maxResults.

      Parameters:
      maxResults - a int.
      Returns:
      a BeCPGQueryBuilder object.
    • page

      public BeCPGQueryBuilder page(int page)

      skipCount.

      Parameters:
      page - a int
      Returns:
      a BeCPGQueryBuilder object.
    • page

      public BeCPGQueryBuilder page(org.alfresco.query.PagingRequest pagingRequest)

      page.

      Parameters:
      pagingRequest - a PagingRequest object
      Returns:
      a BeCPGQueryBuilder object
    • andOperator

      public BeCPGQueryBuilder andOperator()

      andOperator.

      Returns:
      a BeCPGQueryBuilder object.
    • locale

      public BeCPGQueryBuilder locale(Locale locale)

      locale.

      Parameters:
      locale - a Locale object.
      Returns:
      a BeCPGQueryBuilder object.
    • parent

      public BeCPGQueryBuilder parent(org.alfresco.service.cmr.repository.NodeRef parentNodeRef)

      parent.

      Parameters:
      parentNodeRef - a NodeRef object.
      Returns:
      a BeCPGQueryBuilder object.
    • members

      public BeCPGQueryBuilder members(String path)

      members.

      Parameters:
      path - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • inPath

      public BeCPGQueryBuilder inPath(String path)

      inPath.

      Parameters:
      path - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • inSubPath

      public BeCPGQueryBuilder inSubPath(String subPath)

      inSubPath.

      Parameters:
      subPath - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • excludePath

      public BeCPGQueryBuilder excludePath(String excludePath)

      excludePath.

      Parameters:
      excludePath - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • inDB

      public BeCPGQueryBuilder inDB()

      inDB.

      Returns:
      a BeCPGQueryBuilder object.
    • inDBIfPossible

      public BeCPGQueryBuilder inDBIfPossible()

      inDBIfPossible.

      Returns:
      a BeCPGQueryBuilder object.
    • cmisLanguage

      public BeCPGQueryBuilder cmisLanguage()

      cmisLanguage.

      Returns:
      a BeCPGQueryBuilder object.
    • inSite

      public BeCPGQueryBuilder inSite(String siteId, String containerId)

      inSite.

      Parameters:
      siteId - a String object.
      containerId - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • andID

      public BeCPGQueryBuilder andID(org.alfresco.service.cmr.repository.NodeRef nodeRef)

      andID.

      Parameters:
      nodeRef - a NodeRef object.
      Returns:
      a BeCPGQueryBuilder object.
    • andIDs

      public BeCPGQueryBuilder andIDs(Set<org.alfresco.service.cmr.repository.NodeRef> nodeRefs)

      andIDs.

      Parameters:
      nodeRefs - a Set object.
      Returns:
      a BeCPGQueryBuilder object.
    • andNotID

      public BeCPGQueryBuilder andNotID(org.alfresco.service.cmr.repository.NodeRef nodeRef)

      andNotID.

      Parameters:
      nodeRef - a NodeRef object.
      Returns:
      a BeCPGQueryBuilder object.
    • andNotIDs

      public BeCPGQueryBuilder andNotIDs(Set<org.alfresco.service.cmr.repository.NodeRef> nodeRefs)

      andNotIDs.

      Parameters:
      nodeRefs - a Set object.
      Returns:
      a BeCPGQueryBuilder object.
    • addSort

      public BeCPGQueryBuilder addSort(Map<String,Boolean> sortMap)

      addSort.

      Parameters:
      sortMap - a Map object.
      Returns:
      a BeCPGQueryBuilder object.
    • addSort

      public BeCPGQueryBuilder addSort(org.alfresco.service.namespace.QName propToSort, boolean sortOrder)

      addSort.

      Parameters:
      propToSort - a QName object.
      sortOrder - a boolean.
      Returns:
      a BeCPGQueryBuilder object.
    • isNotNull

      public BeCPGQueryBuilder isNotNull(org.alfresco.service.namespace.QName propQName)

      isNotNull.

      Parameters:
      propQName - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • isNull

      public BeCPGQueryBuilder isNull(org.alfresco.service.namespace.QName propQName)

      isNull.

      Parameters:
      propQName - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • isNullOrUnset

      public BeCPGQueryBuilder isNullOrUnset(org.alfresco.service.namespace.QName propQName)

      isNullOrUnset.

      Parameters:
      propQName - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • andFTSQuery

      public BeCPGQueryBuilder andFTSQuery(String ftsQuery)

      andFTSQuery.

      Parameters:
      ftsQuery - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • clearFTSQuery

      public BeCPGQueryBuilder clearFTSQuery()

      clearFTSQuery.

      Returns:
      a BeCPGQueryBuilder object.
    • andPropEquals

      public BeCPGQueryBuilder andPropEquals(org.alfresco.service.namespace.QName propQName, String value)

      andPropEquals.

      Parameters:
      propQName - a QName object.
      value - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • andPropQuery

      public BeCPGQueryBuilder andPropQuery(org.alfresco.service.namespace.QName propQName, String propQuery)

      andPropQuery.

      Parameters:
      propQName - a QName object.
      propQuery - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • isPropQueryNull

      private boolean isPropQueryNull(String value)

      isPropQueryNull.

      Parameters:
      value - a String object
      Returns:
      a boolean
    • isPropQueryNotNull

      private boolean isPropQueryNotNull(String value)

      isPropQueryNotNull.

      Parameters:
      value - a String object
      Returns:
      a boolean
    • andBetween

      public BeCPGQueryBuilder andBetween(org.alfresco.service.namespace.QName propQName, String start, String end)

      andBetween.

      Parameters:
      propQName - a QName object.
      start - a String object.
      end - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • orBetween

      public BeCPGQueryBuilder orBetween(org.alfresco.service.namespace.QName propQName, String start, String end)

      orBetween.

      Parameters:
      propQName - a QName object
      start - a String object
      end - a String object
      Returns:
      a BeCPGQueryBuilder object
    • andBetweenOrNull

      public BeCPGQueryBuilder andBetweenOrNull(org.alfresco.service.namespace.QName propQName, String start, String end)

      andBetweenOrNull.

      Parameters:
      propQName - a QName object.
      start - a String object.
      end - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • excludeProp

      public BeCPGQueryBuilder excludeProp(org.alfresco.service.namespace.QName propName, String query)

      excludeProp.

      Parameters:
      propName - a QName object.
      query - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • excludeType

      public BeCPGQueryBuilder excludeType(org.alfresco.service.namespace.QName type)

      excludeType.

      Parameters:
      type - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • excludeAspect

      public BeCPGQueryBuilder excludeAspect(org.alfresco.service.namespace.QName aspect)

      excludeAspect.

      Parameters:
      aspect - a QName object.
      Returns:
      a BeCPGQueryBuilder object.
    • excludeVersions

      public BeCPGQueryBuilder excludeVersions()

      excludeVersions.

      Returns:
      a BeCPGQueryBuilder object.
    • excludeDefaults

      public BeCPGQueryBuilder excludeDefaults()

      excludeDefaults.

      Returns:
      a BeCPGQueryBuilder object.
    • excludeSystems

      public BeCPGQueryBuilder excludeSystems()

      excludeSystems.

      Returns:
      a BeCPGQueryBuilder object.
    • excludeSearch

      public BeCPGQueryBuilder excludeSearch()

      excludeSearch.

      Returns:
      a BeCPGQueryBuilder object.
    • excludeArchivedEntities

      public BeCPGQueryBuilder excludeArchivedEntities()

      excludeArchivedEntities.

      Returns:
      a BeCPGQueryBuilder object
    • selectNodeByPath

      public org.alfresco.service.cmr.repository.NodeRef selectNodeByPath(String xPath)

      selectNodeByPath.

      Parameters:
      xPath - a String object
      Returns:
      a NodeRef object
    • selectNodeByPath

      public org.alfresco.service.cmr.repository.NodeRef selectNodeByPath(org.alfresco.service.cmr.repository.NodeRef parentNodeRef, String xPath)

      selectNodeByPath.

      Parameters:
      parentNodeRef - a NodeRef object.
      xPath - a String object.
      Returns:
      a NodeRef object.
    • selectNodesByPath

      public List<org.alfresco.service.cmr.repository.NodeRef> selectNodesByPath(org.alfresco.service.cmr.repository.NodeRef parentNodeRef, String xPath)

      selectNodesByPath.

      Parameters:
      parentNodeRef - a NodeRef object.
      xPath - a String object.
      Returns:
      a List object.
    • list

      public List<org.alfresco.service.cmr.repository.NodeRef> list()

      list.

      Returns:
      a List object.
    • pagingResults

      public org.alfresco.query.PagingResults<org.alfresco.service.cmr.repository.NodeRef> pagingResults()

      pagingResults.

      Returns:
      a PagingResults object
    • singleValue

      public org.alfresco.service.cmr.repository.NodeRef singleValue()

      singleValue.

      Returns:
      a NodeRef object.
    • buildQuery

      private String buildQuery()

      buildQuery.

      Returns:
      a String object
    • buildCmisQuery

      private String buildCmisQuery()

      buildCmisQuery.

      Returns:
      a String object
    • sanitizeProperty

      private String sanitizeProperty(String prop)

      sanitizeProperty.

      Parameters:
      prop - a String object
      Returns:
      a String object
    • getCmisPrefix

      private String getCmisPrefix(org.alfresco.service.namespace.QName tmpQName)

      getCmisPrefix.

      Parameters:
      tmpQName - a QName object
      Returns:
      a String object
    • isCmis

      private boolean isCmis()

      isCmis.

      Returns:
      a boolean
    • isDbIdPostFilter

      private boolean isDbIdPostFilter()

      Returns true when ID based filters (andID/andNotID) must be applied as a Java post-filter on the result set instead of being pushed into the query.

      The Alfresco database query engine (DB-AFTS) does not support the special ID field: such a clause is parsed as a cm:ID property and fails with No prop def for ...ID. The CMIS engine handles it natively through cmis:objectId and Solr supports the ID field, so post-filtering is only required for transactional (database) FTS queries.

      Returns:
      a boolean
    • applyIdPostFilter

      private List<org.alfresco.service.cmr.repository.NodeRef> applyIdPostFilter(List<org.alfresco.service.cmr.repository.NodeRef> nodes)

      Filters out the nodes that do not match the configured ID based filters.

      Parameters:
      nodes - the nodes returned by the search engine
      Returns:
      the nodes kept after applying the include (ids) and exclude (notIds) filters
    • inSearchTemplate

      public BeCPGQueryBuilder inSearchTemplate(String searchTemplate)

      inSearchTemplate.

      Parameters:
      searchTemplate - a String object.
      Returns:
      a BeCPGQueryBuilder object.
    • ftsLanguage

      public BeCPGQueryBuilder ftsLanguage()

      ftsLanguage.

      Returns:
      a BeCPGQueryBuilder object.
    • buildSearchParameters

      private org.alfresco.service.cmr.search.SearchParameters buildSearchParameters(String runnedQuery)

      Builds the search parameters shared by every execution of the current query: store, locale, language, full text template and consistency. Only the paging and the sort are left to the caller.

      Parameters:
      runnedQuery - a String object
      Returns:
      a SearchParameters object
    • search

      private org.alfresco.query.PagingResults<org.alfresco.service.cmr.repository.NodeRef> search(String runnedQuery, Map<String,Boolean> sort, int page, int maxResults)

      search.

      Parameters:
      runnedQuery - a String object
      sort - a Map object
      page - a int
      maxResults - a int
      Returns:
      a PagingResults object
    • isExactCount

      private boolean isExactCount(int numberFound, boolean hasMore, int skipCount, int maxResults)

      Tells whether the number of matches reported by the engine is the exact total.

      The transactional engine stops reading one row past the requested page, so as soon as another page exists its count is only a lower bound. The index, on the contrary, always reports the whole number of matches, whatever the page asked for.

      Parameters:
      numberFound - the number of matches reported by the engine
      hasMore - whether another page follows the current one
      skipCount - the number of rows skipped before the current page
      maxResults - the size of the requested page
      Returns:
      true when the count can be published as a total
    • asPagingResults

      private org.alfresco.query.PagingResults<org.alfresco.service.cmr.repository.NodeRef> asPagingResults(List<org.alfresco.service.cmr.repository.NodeRef> nodes, boolean hasMore, org.alfresco.util.Pair<Integer,Integer> total)

      asPagingResults.

      Parameters:
      nodes - a List object
      hasMore - a boolean
      total - a Pair object
      Returns:
      a PagingResults object
    • count

      public Long count()

      count.

      This method can be very slow for high result counts and saturate nodeDao cache
      Returns:
      a Long object.
    • indexedCount

      public Long indexedCount()

      indexedCount.

      Number of nodes matching the query, read from the index. Unlike count(), the matching nodes are not read back: the index reports the number of matches on its own, which keeps the call cheap whatever the size of the result set. The counterpart is the eventual consistency of the index, so the count can lag behind a transaction that has just been committed.
      Returns:
      a Long object.
    • extractSortQname

      public org.alfresco.service.namespace.QName extractSortQname(String sortProp)

      extractSortQname.

      Parameters:
      sortProp - a String object.
      Returns:
      a QName object.
    • childFileFolders

      public org.alfresco.query.PagingResults<org.alfresco.service.cmr.repository.NodeRef> childFileFolders(org.alfresco.query.PagingRequest pageRequest)

      childFileFolders.

      Parameters:
      pageRequest - a PagingRequest object.
      Returns:
      a PagingResults object.
    • internalList

      private org.alfresco.query.PagingResults<org.alfresco.service.cmr.repository.NodeRef> internalList(org.alfresco.service.cmr.repository.NodeRef rootNodeRef, Set<org.alfresco.service.namespace.QName> searchTypeQNames, Set<org.alfresco.service.namespace.QName> ignoreAspectQNames, List<org.alfresco.util.Pair<org.alfresco.service.namespace.QName,Boolean>> sortProps, org.alfresco.query.PagingRequest pagingRequest)

      internalList.

      Parameters:
      rootNodeRef - a NodeRef object
      searchTypeQNames - a Set object
      ignoreAspectQNames - a Set object
      sortProps - a List object
      pagingRequest - a PagingRequest object
      Returns:
      a PagingResults object
    • getPagingResults

      private org.alfresco.query.PagingResults<org.alfresco.service.cmr.repository.NodeRef> getPagingResults(org.alfresco.query.PagingRequest pagingRequest, org.alfresco.query.CannedQueryResults<org.alfresco.service.cmr.repository.NodeRef> results)

      getPagingResults.

      Parameters:
      pagingRequest - a PagingRequest object
      results - a CannedQueryResults object
      Returns:
      a PagingResults object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • clone

      public BeCPGQueryBuilder clone()
      Overrides:
      clone in class Object