Class CoreQueryAndFetchPageProvider
- All Implemented Interfaces:
Serializable
,PageProvider<Map<String,
Serializable>>
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 LANGUAGE_PROPERTY
allows specifying the query language (NXQL,
NXTAG,...).
Also since 6.0, the page provider property named USE_UNRESTRICTED_SESSION_PROPERTY
allows specifying whether
the query should be run as unrestricted.
- Since:
- 5.4
- Author:
- Anahide Tchertchian
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
protected List<Map<String,
Serializable>> static final String
protected String
static final String
Boolean property stating that query should be unrestricted.Fields inherited from class org.nuxeo.ecm.platform.query.api.AbstractPageProvider
currentEntryIndex, 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, tracking
Fields inherited from interface org.nuxeo.ecm.platform.query.api.PageProvider
DEFAULT_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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
protected void
protected CoreSession
Returns the list of current page items.Returns the current page of results wrapped in aPageSelection
item.protected String
protected void
Page change hook, to override for custom behaviorvoid
refresh()
Refresh hook, to override for custom behaviorprotected void
Fetch a page that can be selected.protected boolean
Methods inherited from class org.nuxeo.ecm.platform.query.api.AbstractPageProvider
addQuickFilter, addSortInfo, fireSearchEvent, firstPage, getAggregateDefinitions, getAggregates, getAvailableQuickFilters, getBooleanProperty, getCurrentEntry, getCurrentHigherNonEmptyPageIndex, getCurrentPageIndex, getCurrentPageOffset, getCurrentPageSize, getCurrentPageStatus, getDefaultMaxPageSize, getDefinition, getError, getErrorMessage, getHighlights, getMaxNumberOfEmptyPages, getMaxPageSize, getMinMaxPageSize, getName, getNumberOfPages, getPageLimit, getPageSize, getPageSizeOptions, getParameters, getParametersChanged, getProperties, getQuickFilters, getResultsCount, getResultsCountLimit, 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:
-
CHECK_QUERY_CACHE_PROPERTY
- See Also:
-
USE_UNRESTRICTED_SESSION_PROPERTY
Boolean property stating that query should be unrestricted.- Since:
- 6.0
- See Also:
-
LANGUAGE_PROPERTY
- Since:
- 6.0: alow specifying the query language (NXQL, NXTAG,...)
- See Also:
-
query
-
currentItems
-
-
Constructor Details
-
CoreQueryAndFetchPageProvider
public CoreQueryAndFetchPageProvider()
-
-
Method Details
-
getCoreSession
-
getCurrentPage
Description copied from class:AbstractPageProvider
Returns the list of current page items.Custom implementation can be added here, based on the page provider properties, parameters and
WhereClauseDefinition
on 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.errorMessage
andAbstractPageProvider.error
can 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 inCoreQueryAndFetchPageProvider
is 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,CoreQueryDocumentPageProvider
is a good example.- Specified by:
getCurrentPage
in interfacePageProvider<Map<String,
Serializable>> - Specified by:
getCurrentPage
in classAbstractPageProvider<Map<String,
Serializable>> - Returns:
- the current page
-
buildQuery
protected void buildQuery() -
getCurrentSelectPage
Description copied from interface:PageProvider
Returns the current page of results wrapped in aPageSelection
item.By default, no entry is selected, unless
PageProvider.setSelectedEntries(List)
has been called before.- Specified by:
getCurrentSelectPage
in interfacePageProvider<Map<String,
Serializable>> - Overrides:
getCurrentSelectPage
in classAbstractPageProvider<Map<String,
Serializable>>
-
rewindSelectablePage
protected 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. -
checkQueryCache
protected void checkQueryCache() -
useUnrestrictedSession
protected boolean useUnrestrictedSession() -
getQueryLanguage
-
getCurrentQuery
-
pageChanged
protected void pageChanged()Description copied from class:AbstractPageProvider
Page change hook, to override for custom behaviorWhen overriding it, call
super.pageChanged()
as last statement to make sure that thePageProviderChangedListener
is called with the up-to-date @{code PageProvider} state.- Overrides:
pageChanged
in classAbstractPageProvider<Map<String,
Serializable>>
-
refresh
public void refresh()Description copied from class:AbstractPageProvider
Refresh hook, to override for custom behaviorWhen overriding it, call
super.refresh()
as last statement to make sure that thePageProviderChangedListener
is called with the up-to-date @{code PageProvider} state.- Specified by:
refresh
in interfacePageProvider<Map<String,
Serializable>> - Overrides:
refresh
in classAbstractPageProvider<Map<String,
Serializable>>
-