Class CoreQueryDocumentPageProvider
- All Implemented Interfaces:
- Serializable,- PageProvider<DocumentModel>
- Direct Known Subclasses:
- ElasticSearchNxqlPageProvider
It builds the query at each call so that it can refresh itself when the query changes.
 The page provider property named CORE_SESSION_PROPERTY is used to pass the CoreSession instance that
 will perform the query. The optional property CHECK_QUERY_CACHE_PROPERTY can be set to "true" to avoid
 performing the query again if it did not change.
 
 Since 6.0, the page provider property named USE_UNRESTRICTED_SESSION_PROPERTY allows specifying whether the
 query should be run as unrestricted. When such a property is set to "true", the additional property
 DETACH_DOCUMENTS_PROPERTY is used to detach documents (defaults to true when session is unrestricted).
- Since:
- 5.4
- Author:
- Anahide Tchertchian
- See Also:
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringprotected List<DocumentModel>static final Stringstatic final Stringstatic final Stringstatic final StringBoolean property stating that documents should be detached, only useful when propertyUSE_UNRESTRICTED_SESSION_PROPERTYis set to true.static final Stringprotected Longstatic final Stringprotected Stringstatic final StringBoolean property stating that query should be unrestricted.Fields inherited from class org.nuxeo.ecm.platform.query.api.AbstractPageProvidercurrentEntryIndex, currentHigherNonEmptyPageIndex, currentSelectPage, definition, error, errorMessage, highlights, maxPageSize, name, offset, PAGEPROVIDER_TRACK_PROPERTY_NAME, pageProviderChangedListener, pageSize, pageSizeOptions, parameters, properties, quickFilters, resultsCount, searchDocumentModel, selectedEntries, SKIPPED_SCHEMAS_FOR_SEARCHFIELD, sortable, sortInfos, trackingFields inherited from interface org.nuxeo.ecm.platform.query.api.PageProviderDEFAULT_MAX_PAGE_SIZE, DEFAULT_MAX_PAGE_SIZE_RUNTIME_PROP, HIGHLIGHT_CTX_DATA, PAGE_LIMIT_UNKNOWN, SKIP_AGGREGATES_PROP, UNKNOWN_SIZE, UNKNOWN_SIZE_AFTER_QUERY
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidbuildQuery(CoreSession coreSession) protected voidprotected booleanprotected CoreSessionReturns the list of current page items.Returns the current page of results wrapped in aPageSelectionitem.protected FilterFilter to use when processing results.longReturns the maximum number of results or0if there is no limit.longReturns the page limit.longLimit of number of results beyond which the page provider may not be able to computePageProvider.getResultsCount()or navigate.protected voidPage change hook, to override for custom behaviorvoidrefresh()Refresh hook, to override for custom behaviorprotected voidFetch a page that can be selected.voidsetMaxResults(long maxResults) Sets the maximum number of result elements.protected booleanMethods inherited from class org.nuxeo.ecm.platform.query.api.AbstractPageProvideraddQuickFilter, addSortInfo, fireSearchEvent, firstPage, getAggregateDefinitions, getAggregates, getAvailableQuickFilters, getBooleanProperty, getCurrentEntry, getCurrentHigherNonEmptyPageIndex, getCurrentPageIndex, getCurrentPageOffset, getCurrentPageSize, getCurrentPageStatus, getDefaultMaxPageSize, getDefinition, getError, getErrorMessage, getHighlights, getMaxNumberOfEmptyPages, getMaxPageSize, getMinMaxPageSize, getName, getNumberOfPages, getPageSize, getPageSizeOptions, getParameters, getParametersChanged, getProperties, getQuickFilters, getResultsCount, getSearchDocumentModel, getSortInfo, getSortInfoIndex, getSortInfos, hasAggregateSupport, hasChangedParameters, hasError, incorporateAggregates, isLastPageAvailable, isNextEntryAvailable, isNextPageAvailable, isPreviousEntryAvailable, isPreviousPageAvailable, isSkipAggregates, isSortable, isTrackingEnabled, lastPage, nextEntry, nextPage, notifyPageChanged, notifyRefresh, previousEntry, previousPage, searchDocumentModelChanged, setCurrentEntry, setCurrentEntryIndex, setCurrentHigherNonEmptyPageIndex, setCurrentPage, setCurrentPageIndex, setCurrentPageOffset, setDefinition, setHighlights, setMaxPageSize, setName, setPageProviderChangedListener, setPageSize, setPageSizeOptions, setParameters, setProperties, setQuickFilters, setResultsCount, setSearchDocumentModel, setSelectedEntries, setSortable, setSortInfo, setSortInfo, setSortInfos, sortInfoChanged
- 
Field Details- 
CORE_SESSION_PROPERTY- See Also:
 
- 
MAX_RESULTS_PROPERTY- See Also:
 
- 
DEFAULT_NAVIGATION_RESULTS_KEY- See Also:
 
- 
PAGE_SIZE_RESULTS_KEY- See Also:
 
- 
DEFAULT_NAVIGATION_RESULTS_PROPERTY- See Also:
 
- 
DEFAULT_NAVIGATION_RESULTS_VALUE- See Also:
 
- 
CHECK_QUERY_CACHE_PROPERTY- See Also:
 
- 
USE_UNRESTRICTED_SESSION_PROPERTYBoolean property stating that query should be unrestricted.- Since:
- 6.0
- See Also:
 
- 
DETACH_DOCUMENTS_PROPERTYBoolean property stating that documents should be detached, only useful when propertyUSE_UNRESTRICTED_SESSION_PROPERTYis set to true.When an unrestricted session is used, this property defaults to true. - Since:
- 6.0
- See Also:
 
- 
query
- 
currentPageDocuments
- 
maxResults
 
- 
- 
Constructor Details- 
CoreQueryDocumentPageProviderpublic CoreQueryDocumentPageProvider()
 
- 
- 
Method Details- 
getCurrentPageDescription copied from class:AbstractPageProviderReturns the list of current page items.Custom implementation can be added here, based on the page provider properties, parameters and WhereClauseDefinitionon thePageProviderDefinition, as well as search document, sort information, etc...Implementation of this method usually consists in setting a non-null value to a field caching current items, and nullifying this field by overriding AbstractPageProvider.pageChanged()andAbstractPageProvider.refresh().Fields AbstractPageProvider.errorMessageandAbstractPageProvider.errorcan also be filled to provide accurate feedback in case an error occurs during the search.When items are retrieved, a call to AbstractPageProvider.setResultsCount(long)should be made to ensure proper pagination as implemented in this abstract class. The implementation inCoreQueryAndFetchPageProvideris a good example when the total results count is known.If for performance reasons, for instance, the number of results cannot be known, a fall-back strategy can be applied to provide the "next" button but not the "last" one, by calling AbstractPageProvider.getCurrentHigherNonEmptyPageIndex()andAbstractPageProvider.setCurrentHigherNonEmptyPageIndex(int). In this case,CoreQueryDocumentPageProvideris a good example.- Specified by:
- getCurrentPagein interface- PageProvider<DocumentModel>
- Specified by:
- getCurrentPagein class- AbstractPageProvider<DocumentModel>
- Returns:
- the current page
 
- 
buildQuery
- 
checkQueryCacheprotected void checkQueryCache()
- 
useUnrestrictedSessionprotected boolean useUnrestrictedSession()
- 
detachDocumentsprotected boolean detachDocuments()
- 
getCoreSession
- 
getMaxResultspublic long getMaxResults()Returns the maximum number of results or0if there is no limit.- Since:
- 5.6
 
- 
getResultsCountLimitpublic long getResultsCountLimit()Description copied from interface:PageProviderLimit of number of results beyond which the page provider may not be able to computePageProvider.getResultsCount()or navigate.Requesting results beyond this limit may result in error. When PageProvider.getResultsCount()is negative, it means there may be more results than this limit.0 means there is no limit. - Specified by:
- getResultsCountLimitin interface- PageProvider<DocumentModel>
- Overrides:
- getResultsCountLimitin class- AbstractPageProvider<DocumentModel>
 
- 
getPageLimitpublic long getPageLimit()Returns the page limit. The n first page we know they exist. We don't compute the number of page beyond this limit.- Specified by:
- getPageLimitin interface- PageProvider<DocumentModel>
- Overrides:
- getPageLimitin class- AbstractPageProvider<DocumentModel>
- Since:
- 5.8
 
- 
setMaxResultspublic void setMaxResults(long maxResults) Sets the maximum number of result elements.- Since:
- 5.6
 
- 
getCurrentSelectPageDescription copied from interface:PageProviderReturns the current page of results wrapped in aPageSelectionitem.By default, no entry is selected, unless PageProvider.setSelectedEntries(List)has been called before.- Specified by:
- getCurrentSelectPagein interface- PageProvider<DocumentModel>
- Overrides:
- getCurrentSelectPagein class- AbstractPageProvider<DocumentModel>
 
- 
getCurrentQuery
- 
rewindSelectablePageprotected void rewindSelectablePage()Fetch a page that can be selected. It loads the last page if we're targeting a page beyond the last one or the first page if there are no results to show and we're targeting anything other than the first page. Fix for NXP-8564.
- 
getFilterFilter to use when processing results.Defaults to null (no filter applied), method to be overridden by subclasses. - Since:
- 6.0
 
- 
pageChangedprotected void pageChanged()Description copied from class:AbstractPageProviderPage change hook, to override for custom behaviorWhen overriding it, call super.pageChanged()as last statement to make sure that thePageProviderChangedListeneris called with the up-to-date @{code PageProvider} state.- Overrides:
- pageChangedin class- AbstractPageProvider<DocumentModel>
 
- 
refreshpublic void refresh()Description copied from class:AbstractPageProviderRefresh hook, to override for custom behaviorWhen overriding it, call super.refresh()as last statement to make sure that thePageProviderChangedListeneris called with the up-to-date @{code PageProvider} state.- Specified by:
- refreshin interface- PageProvider<DocumentModel>
- Overrides:
- refreshin class- AbstractPageProvider<DocumentModel>
 
 
-