Class SearchComponentHelper
java.lang.Object
org.ametys.web.frontoffice.search.requesttime.impl.SearchComponentHelper
- All Implemented Interfaces:
Component
,Serviceable
A helper for all search component
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected ContextQueriesWrapper
_createContextQueriesWrapper
(SearchContext searchContext, Site currentSite, SitemapElement currentPage, String currentLang) Creates aContextQueriesWrapper
given oneSearchContext
and the current site, page and lang.buildQuery
(AbstractTreeNode<FOSearchCriterion> criterionTree, Map<String, Object> userCriteria, Collection<Returnable> returnables, Collection<Searchable> searchables, AdditionalParameterValueMap additionalParameters, String currentLang, Predicate<FOSearchCriterion> filterCriterionPredicate, Map<String, Object> contextualParameters) Builds the query of the criterion treecheckValidInputs
(AbstractTreeNode<FOSearchCriterion> criterionTree, Map<String, Object> userCriteria, boolean isFromUserPref, Logger logger) Checks the user inputs are valid.protected void
checkValidInputSingleValue
(Object userCriterionSingleValue, String criterionId, FOSearchCriterionMode mode, Optional<EnumeratedValues.RestrictedValues> optionalRestrictedValues, Validator validator, boolean isMandatory) Checks a single value of one user input for one criterion is validprotected void
checkValidInputValues
(Object userCriterionValues, String criterionId, FOSearchCriterionMode mode, Optional<EnumeratedValues.RestrictedValues> optionalRestrictedValues, Validator validator, boolean isMandatory) Checks the user inputs for one criterion (can be multiple) are validgetCriterionTreeQuery
(SearchComponentArguments args, boolean checkValidInputs, boolean logTree) Get the criterion tree query from argumentsGet the filter query from argumentsRetrieves aMap
of contextual parametersvoid
service
(ServiceManager manager) singleCriterionToQuery
(FOSearchCriterion searchCriterion, Map<String, Object> userCriteria, Collection<Returnable> returnables, Collection<Searchable> searchables, AdditionalParameterValueMap additionalParameters, String currentLang, Predicate<FOSearchCriterion> filterCriterionPredicate, Map<String, Object> contextualParameters) Builds the query of the single criterion
-
Field Details
-
ROLE
The avalon role. -
EMPTY_QUERY
TheQuery
building to the empty string -
_advancedQueryBuilder
The builder of advanced queries -
_treeMaker
The Advanced tree maker -
_i18nUtils
The utils for i18nizable texts
-
-
Constructor Details
-
SearchComponentHelper
public SearchComponentHelper()
-
-
Method Details
-
service
- Specified by:
service
in interfaceServiceable
- Throws:
ServiceException
-
getCriterionTreeQuery
public Query getCriterionTreeQuery(SearchComponentArguments args, boolean checkValidInputs, boolean logTree) throws org.ametys.web.frontoffice.search.requesttime.impl.InvalidUserInputException Get the criterion tree query from arguments- Parameters:
args
- the search argumentscheckValidInputs
- true if inputs needs to be checkedlogTree
- true if the criterion tree need to be logged- Returns:
- the criterion tree query
- Throws:
org.ametys.web.frontoffice.search.requesttime.impl.InvalidUserInputException
- if an invalid user input occurred
-
checkValidInputs
protected Map<String,Object> checkValidInputs(AbstractTreeNode<FOSearchCriterion> criterionTree, Map<String, Object> userCriteria, boolean isFromUserPref, Logger logger) throws org.ametys.web.frontoffice.search.requesttime.impl.InvalidUserInputExceptionChecks the user inputs are valid.- Parameters:
criterionTree
- The criterion tree of the service instanceuserCriteria
- The user input criteriaisFromUserPref
-true
if the criteria are from user pref. Then return only the valid input, otherwise throw an exceptionlogger
- The logger- Returns:
- the filtered user criteria
- Throws:
org.ametys.web.frontoffice.search.requesttime.impl.InvalidUserInputException
- if at least one user input is invalid
-
checkValidInputValues
protected void checkValidInputValues(Object userCriterionValues, String criterionId, FOSearchCriterionMode mode, Optional<EnumeratedValues.RestrictedValues> optionalRestrictedValues, Validator validator, boolean isMandatory) throws org.ametys.web.frontoffice.search.requesttime.impl.InvalidUserInputException Checks the user inputs for one criterion (can be multiple) are valid- Parameters:
userCriterionValues
- The multiple user values (then it is a List) or the single user valuecriterionId
- The criterion idmode
- The criterion modeoptionalRestrictedValues
- TheEnumeratedValues.RestrictedValues
if mode isFOSearchCriterionMode.RESTRICTED_USER_INPUT
validator
- The criterion validatorisMandatory
- true if the criterion is linked to a mandatory data- Throws:
org.ametys.web.frontoffice.search.requesttime.impl.InvalidUserInputException
- if at least one user input is invalid
-
checkValidInputSingleValue
protected void checkValidInputSingleValue(Object userCriterionSingleValue, String criterionId, FOSearchCriterionMode mode, Optional<EnumeratedValues.RestrictedValues> optionalRestrictedValues, Validator validator, boolean isMandatory) throws org.ametys.web.frontoffice.search.requesttime.impl.InvalidUserInputException Checks a single value of one user input for one criterion is valid- Parameters:
userCriterionSingleValue
- The single user valuecriterionId
- The criterion idmode
- The criterion modeoptionalRestrictedValues
- TheEnumeratedValues.RestrictedValues
if mode isFOSearchCriterionMode.RESTRICTED_USER_INPUT
validator
- The criterion validatorisMandatory
- true if the criterion is linked to a mandatory data- Throws:
org.ametys.web.frontoffice.search.requesttime.impl.InvalidUserInputException
- if the user input is invalid
-
buildQuery
public Query buildQuery(AbstractTreeNode<FOSearchCriterion> criterionTree, Map<String, Object> userCriteria, Collection<Returnable> returnables, Collection<Searchable> searchables, AdditionalParameterValueMap additionalParameters, String currentLang, Predicate<FOSearchCriterion> filterCriterionPredicate, Map<String, Object> contextualParameters) Builds the query of the criterion tree- Parameters:
criterionTree
- The criterion tree of the service instanceuserCriteria
- The user input criteriareturnables
- The returnables of the service instancesearchables
- The searchables of the service instanceadditionalParameters
- The values of additional parameters of the service instancecurrentLang
- The current langfilterCriterionPredicate
- A function to filter criterion. Can be null for TruePredicatecontextualParameters
- the search contextual parameters.- Returns:
- The query of the criterion tree
-
singleCriterionToQuery
public Query singleCriterionToQuery(FOSearchCriterion searchCriterion, Map<String, Object> userCriteria, Collection<Returnable> returnables, Collection<Searchable> searchables, AdditionalParameterValueMap additionalParameters, String currentLang, Predicate<FOSearchCriterion> filterCriterionPredicate, Map<String, Object> contextualParameters) Builds the query of the single criterion- Parameters:
searchCriterion
- The criterionuserCriteria
- The user input criteriareturnables
- The returnables of the service instancesearchables
- The searchables of the service instanceadditionalParameters
- The values of additional parameters of the service instancecurrentLang
- The current langfilterCriterionPredicate
- A function to filter criterioncontextualParameters
- the search contextual parameters.- Returns:
- The query of the single criterion
-
getFilterQuery
Get the filter query from arguments- Parameters:
args
- the search arguments- Returns:
- the filter query
-
_createContextQueriesWrapper
protected ContextQueriesWrapper _createContextQueriesWrapper(SearchContext searchContext, Site currentSite, SitemapElement currentPage, String currentLang) Creates aContextQueriesWrapper
given oneSearchContext
and the current site, page and lang.- Parameters:
searchContext
- The search contextcurrentSite
- The current sitecurrentPage
- The current pagecurrentLang
- The current lang- Returns:
- The created wrapper of queries of a
SearchContext
-
getSearchComponentContextualParameters
public static Map<String,Object> getSearchComponentContextualParameters(SearchComponentArguments args) Retrieves aMap
of contextual parameters- Parameters:
args
- the search component arguments- Returns:
- the
Map
of contextual parameters
-