Class Predicate
- All Implemented Interfaces:
Cloneable
- Direct Known Subclasses:
PredicateGroup
Predicate is a single constraint for a Query. It is a
pure data model object, consisting of a parameter map based on key-value
string pairs.
Each Predicate has a type (getType()) that is used to find
the right PredicateEvaluator that will handle this predicate and eg.
translate it into an XPath statement.
Using the composite pattern, the subclass PredicateGroup allows to
group multiple predicates into one. This allows the query to actually consist
of a predicate tree and reflects more complex queries that include sub-terms.
The methods getName(), getPath() and
invalid reference
#getParent()SearchResult.getFacets()).
The parameters are set via the set(String, String) method and
retrieved via get(String), get(String, String) or
getParameters(). Predicates are also Cloneable, so that it
is easy to copy them.
- Since:
- 5.2
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final StringParameter onorderbyto control whether sorting is case insensitive or not.static final Stringstatic final Stringstatic final StringIf true, this allows the implementation to optimize the query and return just a guessedcount.static final Stringstatic final Stringstatic final StringTranslated into Query Option 'index tag'static final StringHow to handle traversals - translated into Query Option 'traversal'.static final StringParameter onorderbyto control whether the sort order is ascending (default) or descending.static final Stringstatic final Stringstatic final Stringstatic final Stringstatic final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionclone()Clones this predicate so that the returned clone can be used completely independently from this original.clone(boolean resetName) Clones this predicate so that the returned clone can be used completely independently from this original.booleanReturns the value for the given parameter name ornullif that parameter is not set.Returns the value for the given parameter name or the given default value if that parameter is not set.booleanReturns the boolean value for the given parameter name orfalseif that parameter is not set, ie.getName()Returns the name of this predicate.Returns an unmodifiable map of all parameters and their values.getPath()Returns the path in a predicate tree ofPredicateGroupsto this predicate, eg.getType()Returns the predicate type name for finding the rightPredicateEvaluator.inthashCode()booleanhasNonEmptyValue(String parameterName) Returnstruewhen there is a parameter present with the given name and if the string value is not empty.booleanignored()This is used only during evaluation and indicates that this predicate is marked as "invisible" for anyPredicateEvaluatorthat will encounter it.Sets the parameter 'parameterName' to the value given by 'value'.voidsetIgnored(boolean ignore) This is used only during evaluation and marks this predicate as "invisible" for anyPredicateEvaluatorthat will encounter it.toString()Overwrites the standardObject.toString()implementation and returns a debug-friendly string representation of the predicate.
-
Field Details
-
PARAM_OFFSET
- See Also:
-
PARAM_LIMIT
- See Also:
-
PARAM_EXCERPT
- See Also:
-
PARAM_FACET_STRATEGY
- See Also:
-
PARAM_OPTIONS_TRAVERSAL
How to handle traversals - translated into Query Option 'traversal'. Valid values = ok|fail|warnp.traversal=ok
- See Also:
-
TRAVERSAL_OK
- See Also:
-
TRAVERSAL_FAIL
- See Also:
-
TRAVERSAL_WARN
- See Also:
-
PARAM_OPTIONS_INDEXTAG
Translated into Query Option 'index tag'p.indexTag=tagName
- See Also:
-
PARAM_GUESS_TOTAL
If true, this allows the implementation to optimize the query and return just a guessedcount. Defaults to false, in which case the total is always accurate.- Since:
- 5.4
- See Also:
-
ORDER_BY
- See Also:
-
PARAM_SORT
Parameter onorderbyto control whether the sort order is ascending (default) or descending. Possible values areascanddesc.orderby.sort=desc
- See Also:
-
SORT_ASCENDING
- See Also:
-
SORT_DESCENDING
- See Also:
-
PARAM_CASE
Parameter onorderbyto control whether sorting is case insensitive or not. Only the valueignoreis supported, in which case "a" comes before "B". If empty or left out, sorting is case sensitive, e.g. "B" comes before "a".orderby.case=ignore
- See Also:
-
IGNORE_CASE
- See Also:
-
-
Constructor Details
-
Predicate
Creates aPredicateof the given type. Note that the type cannot be changed later. The name will be deducted automatically, seegetName(). Initially no parameters will be set and no parent will be present.- Parameters:
type- predicate type name for finding the rightPredicateEvaluator
-
Predicate
Creates aPredicatewith the given name and type. Note that name and type cannot be changed later. Initially no parameters will be set and no parent will be present.The name should not be
null- this case is reserved for a rootPredicateGroup(usingPredicateGroup()).- Parameters:
name- identifying name for this predicatetype- predicate type name for finding the rightPredicateEvaluator
-
-
Method Details
-
getType
Returns the predicate type name for finding the rightPredicateEvaluator. -
getName
Returns the name of this predicate. The name is used to allow round-trip serialization of predicate trees (where the order is encoded in the names) and for identifying predicates in thefacet map, in logging or other debug output.When a predicate is included in
PredicateGroup, the names of the parent predicates will make up thepath, eg.parent.child.grandchild. The name must not be changed after the predicate is passed to aQuery.If no name was set previously, it will be automatically created. If this predicate is part of a group, it will get a name of the form "N_type" where N is the 1-based index of its position in the parent group and "type" is it's
type. If it does not have a parent group, the name will only consist of the type.- Returns:
- identifying name for this predicate (can be
nullif no name was set)
-
getPath
Returns the path in a predicate tree ofPredicateGroupsto this predicate, eg.parent.child.grandchild. This can benullif no name was set. The path is used for identifying predicates in thefacet map, in logging or other debug output. -
get
Returns the value for the given parameter name ornullif that parameter is not set. Parameters always haveStringvalues. -
get
Returns the value for the given parameter name or the given default value if that parameter is not set. Parameters always haveStringvalues. -
getBool
Returns the boolean value for the given parameter name orfalseif that parameter is not set, ie. it assumesfalseas the default of the boolean parameter.Since actual parameter values are strings, it is considered
trueif the string value is either "true" or "on" (used by HTTP forms for checkboxes). -
set
Sets the parameter 'parameterName' to the value given by 'value'. Parameters have alwaysStringvalues.- Returns:
- returns itself for simple one-liners:
group.add(new Predicate("mytype", "type").set("type", "nt:file"));
-
hasNonEmptyValue
Returnstruewhen there is a parameter present with the given name and if the string value is not empty. Parameters always haveStringvalues. -
getParameters
Returns an unmodifiable map of all parameters and their values. -
setIgnored
public void setIgnored(boolean ignore) This is used only during evaluation and marks this predicate as "invisible" for anyPredicateEvaluatorthat will encounter it. Don't use that method when creating a query.- Parameters:
ignore-trueif this predicate should be ignored by evaluators (default isfalse)
-
ignored
public boolean ignored()This is used only during evaluation and indicates that this predicate is marked as "invisible" for anyPredicateEvaluatorthat will encounter it. This method has no use for clients of the querybuilder API.- Returns:
trueif this predicate should be ignored by evaluators (default isfalse)
-
clone
Clones this predicate so that the returned clone can be used completely independently from this original. Same asclone(false). -
clone
Clones this predicate so that the returned clone can be used completely independently from this original. Allows for automatic reset of the name.- Parameters:
resetName- whether to reset the name tonullso that they will be automatically deducted (seegetName())
-
equals
-
hashCode
public int hashCode() -
toString
Overwrites the standardObject.toString()implementation and returns a debug-friendly string representation of the predicate.
-