Class CoreQueryAndFetchPageProvider
- java.lang.Object
-
- org.nuxeo.ecm.platform.query.api.AbstractPageProvider<Map<String,Serializable>>
-
- org.nuxeo.ecm.platform.query.nxql.CoreQueryAndFetchPageProvider
-
- All Implemented Interfaces:
Serializable,PageProvider<Map<String,Serializable>>
public class CoreQueryAndFetchPageProvider extends AbstractPageProvider<Map<String,Serializable>>
Page provider performing a queryAndFetch on a core session.It builds the query at each call so that it can refresh itself when the query changes.
The page provider property named
CORE_SESSION_PROPERTYis used to pass theCoreSessioninstance that will perform the query. The optional propertyCHECK_QUERY_CACHE_PROPERTYcan be set to "true" to avoid performing the query again if it did not change.Since 6.0, the page provider property named
LANGUAGE_PROPERTYallows specifying the query language (NXQL, NXTAG,...).Also since 6.0, the page provider property named
USE_UNRESTRICTED_SESSION_PROPERTYallows specifying whether the query should be run as unrestricted.- Since:
- 5.4
- Author:
- Anahide Tchertchian
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static StringCHECK_QUERY_CACHE_PROPERTYstatic StringCORE_SESSION_PROPERTYprotected List<Map<String,Serializable>>currentItemsstatic StringLANGUAGE_PROPERTYprotected Stringquerystatic StringUSE_UNRESTRICTED_SESSION_PROPERTYBoolean 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
Constructors Constructor Description CoreQueryAndFetchPageProvider()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidbuildQuery()protected voidcheckQueryCache()protected CoreSessiongetCoreSession()List<Map<String,Serializable>>getCurrentPage()Returns the list of current page items.StringgetCurrentQuery()PageSelections<Map<String,Serializable>>getCurrentSelectPage()Returns the current page of results wrapped in aPageSelectionitem.protected StringgetQueryLanguage()protected voidpageChanged()Page change hook, to override for custom behaviorvoidrefresh()Refresh hook, to override for custom behaviorprotected voidrewindSelectablePage()Fetch a page that can be selected.protected booleanuseUnrestrictedSession()-
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 Detail
-
CORE_SESSION_PROPERTY
public static final String CORE_SESSION_PROPERTY
- See Also:
- Constant Field Values
-
CHECK_QUERY_CACHE_PROPERTY
public static final String CHECK_QUERY_CACHE_PROPERTY
- See Also:
- Constant Field Values
-
USE_UNRESTRICTED_SESSION_PROPERTY
public static final String USE_UNRESTRICTED_SESSION_PROPERTY
Boolean property stating that query should be unrestricted.- Since:
- 6.0
- See Also:
- Constant Field Values
-
LANGUAGE_PROPERTY
public static final String LANGUAGE_PROPERTY
- Since:
- 6.0: alow specifying the query language (NXQL, NXTAG,...)
- See Also:
- Constant Field Values
-
query
protected String query
-
currentItems
protected List<Map<String,Serializable>> currentItems
-
-
Method Detail
-
getCoreSession
protected CoreSession getCoreSession()
-
getCurrentPage
public List<Map<String,Serializable>> getCurrentPage()
Description 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 interfacePageProvider<Map<String,Serializable>>- Specified by:
getCurrentPagein classAbstractPageProvider<Map<String,Serializable>>- Returns:
- the current page
-
buildQuery
protected void buildQuery()
-
getCurrentSelectPage
public PageSelections<Map<String,Serializable>> getCurrentSelectPage()
Description 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 interfacePageProvider<Map<String,Serializable>>- Overrides:
getCurrentSelectPagein 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
protected String getQueryLanguage()
-
getCurrentQuery
public String getCurrentQuery()
-
pageChanged
protected 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 classAbstractPageProvider<Map<String,Serializable>>
-
refresh
public 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 interfacePageProvider<Map<String,Serializable>>- Overrides:
refreshin classAbstractPageProvider<Map<String,Serializable>>
-
-