public class CoreQueryAndFetchPageProvider extends AbstractPageProvider<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.
Modifier and Type | Field and Description |
---|---|
static String |
CHECK_QUERY_CACHE_PROPERTY |
static String |
CORE_SESSION_PROPERTY |
protected List<Map<String,Serializable>> |
currentItems |
static String |
LANGUAGE_PROPERTY |
protected String |
query |
static String |
USE_UNRESTRICTED_SESSION_PROPERTY
Boolean property stating that query should be unrestricted.
|
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
DEFAULT_MAX_PAGE_SIZE, DEFAULT_MAX_PAGE_SIZE_RUNTIME_PROP, HIGHLIGHT_CTX_DATA, PAGE_LIMIT_UNKNOWN, UNKNOWN_SIZE, UNKNOWN_SIZE_AFTER_QUERY
Constructor and Description |
---|
CoreQueryAndFetchPageProvider() |
Modifier and Type | Method and Description |
---|---|
protected void |
buildQuery() |
protected void |
checkQueryCache() |
protected CoreSession |
getCoreSession() |
List<Map<String,Serializable>> |
getCurrentPage()
Returns the list of current page items.
|
String |
getCurrentQuery() |
PageSelections<Map<String,Serializable>> |
getCurrentSelectPage()
Returns the current page of results wrapped in a
PageSelection item. |
protected String |
getQueryLanguage() |
protected void |
pageChanged()
Page change hook, to override for custom behavior
|
void |
refresh()
Refresh hook, to override for custom behavior
|
protected boolean |
useUnrestrictedSession() |
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, getSearchDocumentModel, getSortInfo, getSortInfoIndex, getSortInfos, hasAggregateSupport, hasChangedParameters, hasError, incorporateAggregates, isLastPageAvailable, isNextEntryAvailable, isNextPageAvailable, isPreviousEntryAvailable, isPreviousPageAvailable, 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
public static final String CORE_SESSION_PROPERTY
public static final String CHECK_QUERY_CACHE_PROPERTY
public static final String USE_UNRESTRICTED_SESSION_PROPERTY
public static final String LANGUAGE_PROPERTY
protected List<Map<String,Serializable>> currentItems
public CoreQueryAndFetchPageProvider()
protected CoreSession getCoreSession()
public List<Map<String,Serializable>> getCurrentPage()
AbstractPageProvider
Custom implementation can be added here, based on the page provider properties, parameters and
WhereClauseDefinition
on the PageProviderDefinition
, 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()
and AbstractPageProvider.refresh()
.
Fields AbstractPageProvider.errorMessage
and AbstractPageProvider.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 in CoreQueryAndFetchPageProvider
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()
and AbstractPageProvider.setCurrentHigherNonEmptyPageIndex(int)
. In this case,
CoreQueryDocumentPageProvider
is a good example.
getCurrentPage
in interface PageProvider<Map<String,Serializable>>
getCurrentPage
in class AbstractPageProvider<Map<String,Serializable>>
protected void buildQuery()
public PageSelections<Map<String,Serializable>> getCurrentSelectPage()
PageProvider
PageSelection
item.
By default, no entry is selected, unless PageProvider.setSelectedEntries(List)
has been called before.
getCurrentSelectPage
in interface PageProvider<Map<String,Serializable>>
getCurrentSelectPage
in class AbstractPageProvider<Map<String,Serializable>>
protected void checkQueryCache()
protected boolean useUnrestrictedSession()
protected String getQueryLanguage()
public String getCurrentQuery()
protected void pageChanged()
AbstractPageProvider
When overriding it, call super.pageChanged()
as last statement to make sure that the
PageProviderChangedListener
is called with the up-to-date @{code PageProvider} state.
pageChanged
in class AbstractPageProvider<Map<String,Serializable>>
public void refresh()
AbstractPageProvider
When overriding it, call super.refresh()
as last statement to make sure that the
PageProviderChangedListener
is called with the up-to-date @{code PageProvider} state.
refresh
in interface PageProvider<Map<String,Serializable>>
refresh
in class AbstractPageProvider<Map<String,Serializable>>
Copyright © 2017 Nuxeo. All rights reserved.