public class DefaultPaginatedFlexibleSearchService extends java.lang.Object implements PaginatedFlexibleSearchService
PaginatedFlexibleSearchService| Modifier and Type | Class and Description |
|---|---|
protected class |
DefaultPaginatedFlexibleSearchService.SearchResultInfo |
| Constructor and Description |
|---|
DefaultPaginatedFlexibleSearchService() |
| Modifier and Type | Method and Description |
|---|---|
protected java.lang.String |
buildSortsAppliedQuery(java.lang.String query,
SearchPageData searchPageData,
java.util.Map<java.lang.String,java.lang.String> sortCodeToQueryAlias)
Builds a requested sorts applied query based on given query by appending list of
SortData passed from given
searchPageData. |
protected <T> SearchPageData<T> |
createPagedSearchResult(SearchResult<T> searchResult,
SearchPageData searchPageData,
DefaultPaginatedFlexibleSearchService.SearchResultInfo searchResultInfo)
Returns an instance of {link SearchPageData} with given
SearchResult. |
protected <T> PaginationData |
createPagination(SearchPageData searchPageDataInput,
DefaultPaginatedFlexibleSearchService.SearchResultInfo searchResultInfo)
Creates
PaginationData based on searchPageDataInput.pagination and calculates the numberOfPages based on the
totalNumberOfResults. |
protected <T> SearchPageData<T> |
createSearchPageData()
Returns a new instance of
SearchPageData |
protected java.util.List<SortData> |
filterSearchPageDataSorts(SearchPageData searchPageData,
java.util.Map<java.lang.String,java.lang.String> sortCodeToQueryAlias)
Returns a list of
SortData where each of it exists from given sortCodeToQueryAlias map. |
protected AbstractQueryHelper |
getAbstractQueryHelper() |
protected FlexibleSearchService |
getFlexibleSearchService() |
protected SortDataParsingStrategy |
getSortDataParsingStrategy() |
protected FlexibleSearchQuery |
populateSearchQuery(SearchPageData searchPageData,
FlexibleSearchQuery searchQuery,
java.util.Map<java.lang.String,java.lang.String> sortCodeToQueryAlias,
boolean nextElementAdded)
Populates a
FlexibleSearchQuery based on given searchQuery by appending "ORDER BY" clause if given
searchPageData has list of SortData. |
<T> SearchPageData<T> |
search(PaginatedFlexibleSearchParameter parameter)
Searches according to
PaginatedFlexibleSearchParameter. |
void |
setAbstractQueryHelper(AbstractQueryHelper abstractQueryHelper) |
void |
setFlexibleSearchService(FlexibleSearchService flexibleSearchService) |
void |
setSortDataParsingStrategy(SortDataParsingStrategy sortDataParsingStrategy) |
protected void |
validatePaginatedFlexibleSearchParameter(PaginatedFlexibleSearchParameter parameter)
Validates if the given
PaginatedFlexibleSearchParameter contains valid parameters. |
public DefaultPaginatedFlexibleSearchService()
public <T> SearchPageData<T> search(PaginatedFlexibleSearchParameter parameter)
PaginatedFlexibleSearchServicePaginatedFlexibleSearchParameter.search in interface PaginatedFlexibleSearchServiceT - The type of item returned from the searchparameter - A parameter object containing all attributes needed for paginated flexible search. The sort info should
be only populated in PaginatedFlexibleSearchParameter.searchPageData
PaginatedFlexibleSearchParameter.flexibleSearchQuery - The flexible search query containing
String query and flexible search query parameters as Map<String, Object>PaginatedFlexibleSearchParameter.searchPageData - The search page data containing requested
pagination and sort dataPaginatedFlexibleSearchParameter.sortCodeToQueryAlias - The map between sort code and query
alias which will be used to dynamically generate "ORDER BY" clause by appending to the given flexible
search query based on requested sorts.SearchPageData containing the search results with applied sorts and pagination dataprotected void validatePaginatedFlexibleSearchParameter(PaginatedFlexibleSearchParameter parameter)
PaginatedFlexibleSearchParameter contains valid parameters.parameter - the PaginatedFlexibleSearchParameterjava.lang.IllegalArgumentException - if parameter contains invalid dataprotected FlexibleSearchQuery populateSearchQuery(SearchPageData searchPageData, FlexibleSearchQuery searchQuery, java.util.Map<java.lang.String,java.lang.String> sortCodeToQueryAlias, boolean nextElementAdded)
FlexibleSearchQuery based on given searchQuery by appending "ORDER BY" clause if given
searchPageData has list of SortData.searchPageData - the searchPageData contains requested pagination and sorting informationsearchQuery - the searchQuerysortCodeToQueryAlias - the sortCodeToQueryAlias contains mapping between sort code and query alias which will be used to
dynamically generate "ORDER BY" clause.nextElementAdded - FlexibleSearchQuery with requested sorts appliedprotected java.util.List<SortData> filterSearchPageDataSorts(SearchPageData searchPageData, java.util.Map<java.lang.String,java.lang.String> sortCodeToQueryAlias)
SortData where each of it exists from given sortCodeToQueryAlias map. The intention of
method is to filter out the undefined sort code from given SearchPageData.getSorts() based on given
sortCodeToQueryAlias map, so that once
buildSortsAppliedQuery(String, SearchPageData, Map) is called,
sortDataParsingStrategy is guaranteed to return the mapped query alias for each sort code.
It also converts sortData's code to lower case to meet the expectation of
SortDataParsingStrategy
searchPageData - the searchPageData contains list of SortData which will be used as requested sort listsortCodeToQueryAlias - the sortCodeToQueryAlias contains mapping between sort code and query alias which will be used to generate
"ORDER BY" clause dynamically based on requested sort codesSortData where each of them found from given sortCodeToQueryAliasSortDataParsingStrategyprotected java.lang.String buildSortsAppliedQuery(java.lang.String query,
SearchPageData searchPageData,
java.util.Map<java.lang.String,java.lang.String> sortCodeToQueryAlias)
SortData passed from given
searchPageData. It uses SortDataParsingStrategy to properly generate "ORDER BY {queryAlias:sortCode}
asc|desc" search query dynamically based on the requested sorts. If the list of SortData from given
searchPageData is empty, the given query will be returned without any modification.query - the querysearchPageData - the searchPageData contains requested pagination and sorting informationsortCodeToQueryAlias - the sortCodeToQueryAlias contains mapping between sort code and query alias which will be used to generate
"ORDER BY" clause dynamically based on requested sort codesprotected <T> SearchPageData<T> createPagedSearchResult(SearchResult<T> searchResult, SearchPageData searchPageData, DefaultPaginatedFlexibleSearchService.SearchResultInfo searchResultInfo)
SearchResult. It also contains updated pagination and
applied sorts informationT - the type of item returned from the searchsearchResult - the searchResultsearchPageData - the searchPageData containing pagination and sorting informationsearchResultInfo - the search result info needed to properly calculate slicing (hasNext, hasPrevious values)SearchPageData with searchResult, pagination and sorting informationprotected <T> PaginationData createPagination(SearchPageData searchPageDataInput, DefaultPaginatedFlexibleSearchService.SearchResultInfo searchResultInfo)
PaginationData based on searchPageDataInput.pagination and calculates the numberOfPages based on the
totalNumberOfResults.T - the type of item returned from the searchsearchPageDataInput - the searchPageDataInput contains pagination and sorting informationsearchResultInfo - the search result info needed to properly calculate slicing (hasNext, hasPrevious values)protected <T> SearchPageData<T> createSearchPageData()
SearchPageDataT - The type of item returned from the searchSearchPageDataprotected FlexibleSearchService getFlexibleSearchService()
public void setFlexibleSearchService(FlexibleSearchService flexibleSearchService)
protected SortDataParsingStrategy getSortDataParsingStrategy()
public void setSortDataParsingStrategy(SortDataParsingStrategy sortDataParsingStrategy)
protected AbstractQueryHelper getAbstractQueryHelper()
public void setAbstractQueryHelper(AbstractQueryHelper abstractQueryHelper)
Copyright © 2018 SAP SE. All Rights Reserved.