Class DescriptiveModelCriteria<M,Self extends DescriptiveModelCriteria<M,Self>>
java.lang.Object
org.keycloak.models.map.storage.criteria.DescriptiveModelCriteria<M,Self>
- All Implemented Interfaces:
ModelCriteriaBuilder<M,
Self>
- Direct Known Subclasses:
DefaultModelCriteria
,FileCriteriaBuilder
public abstract class DescriptiveModelCriteria<M,Self extends DescriptiveModelCriteria<M,Self>>
extends Object
implements ModelCriteriaBuilder<M,Self>
Descriptive model criteria implementation which in other words represents a Boolean formula on searchable fields.
- Author:
- hmlnarik
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Nested classes/interfaces inherited from interface org.keycloak.models.map.storage.ModelCriteriaBuilder
ModelCriteriaBuilder.Operator
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionCreates and returns a new instance ofModelCriteriaBuilder
that combines the given builders with the Boolean AND operator.compare
(SearchableModelField<? super M> modelField, ModelCriteriaBuilder.Operator op, Object... value) Adds a constraint for the given model field to this criteria builder and returns a criteria builder that is combined with the the new constraint.<C extends ModelCriteriaBuilder<M,
C>>
CflashToModelCriteriaBuilder
(C mcb) Copies contents of thisModelCriteriaBuilder
into anotherModelCriteriaBuilder
.getNode()
<T extends DescriptiveModelCriteria<?,
?>>
ObjectgetSingleRestrictionArgument
(String fieldName) Returns the realm ID which limits the results of this criteria.protected abstract Self
instantiateForNode
(ModelCriteriaNode<M> targetNode) boolean
isEmpty()
Creates and returns a new instance ofModelCriteriaBuilder
that negates the given builder.optimize()
Optimizes this formula into anotherModelCriteriaBuilder
, using the values ofModelCriteriaNode.ExtOperator.__TRUE__
andModelCriteriaNode.ExtOperator.__FALSE__
accordingly.Creates and returns a new instance ofModelCriteriaBuilder
that combines the given builders with the Boolean OR operator.toString()
-
Field Details
-
node
-
-
Constructor Details
-
DescriptiveModelCriteria
-
-
Method Details
-
compare
public Self compare(SearchableModelField<? super M> modelField, ModelCriteriaBuilder.Operator op, Object... value) Description copied from interface:ModelCriteriaBuilder
Adds a constraint for the given model field to this criteria builder and returns a criteria builder that is combined with the the new constraint. The resulting constraint is a logical conjunction (i.e. AND) of the original constraint present in thisModelCriteriaBuilder
and the given operator.- Specified by:
compare
in interfaceModelCriteriaBuilder<M,
Self extends DescriptiveModelCriteria<M, Self>> - Parameters:
modelField
- Field on the logical model to be constrainedop
- Operatorvalue
- Additional operands of the operator.- Returns:
-
instantiateForNode
-
and
Description copied from interface:ModelCriteriaBuilder
Creates and returns a new instance ofModelCriteriaBuilder
that combines the given builders with the Boolean AND operator.Predicate coming out of
and
on an empty array ofbuilders
(i.e. empty conjunction) is alwaystrue
.cb = storage.getCriteriaBuilder(); storage.read(cb.or( cb.and(cb.compare(FIELD1, EQ, 1), cb.compare(FIELD2, EQ, 2)), cb.and(cb.compare(FIELD1, EQ, 3), cb.compare(FIELD2, EQ, 4)) );
- Specified by:
and
in interfaceModelCriteriaBuilder<M,
Self extends DescriptiveModelCriteria<M, Self>>
-
or
Description copied from interface:ModelCriteriaBuilder
Creates and returns a new instance ofModelCriteriaBuilder
that combines the given builders with the Boolean OR operator.Predicate coming out of
or
on an empty array ofbuilders
(i.e. empty disjunction) is alwaysfalse
.cb = storage.getCriteriaBuilder(); storage.read(cb.or( cb.compare(FIELD1, EQ, 1).compare(FIELD2, EQ, 2), cb.compare(FIELD1, EQ, 3).compare(FIELD2, EQ, 4) );
- Specified by:
or
in interfaceModelCriteriaBuilder<M,
Self extends DescriptiveModelCriteria<M, Self>>
-
not
Description copied from interface:ModelCriteriaBuilder
Creates and returns a new instance ofModelCriteriaBuilder
that negates the given builder.Note that if the
builder
has no condition yet, there is nothing to negate: empty negation is alwaystrue
.- Specified by:
not
in interfaceModelCriteriaBuilder<M,
Self extends DescriptiveModelCriteria<M, Self>> - Returns:
-
flashToModelCriteriaBuilder
Copies contents of thisModelCriteriaBuilder
into anotherModelCriteriaBuilder
.- Parameters:
mcb
-ModelCriteriaBuilder
to copy the contents onto- Returns:
- Updated
ModelCriteriaBuilder
-
partiallyEvaluate
-
optimize
Optimizes this formula into anotherModelCriteriaBuilder
, using the values ofModelCriteriaNode.ExtOperator.__TRUE__
andModelCriteriaNode.ExtOperator.__FALSE__
accordingly.- Returns:
- New instance of
-
getSingleRestrictionArgument
public <T extends DescriptiveModelCriteria<?,?>> Object getSingleRestrictionArgument(String fieldName) Returns the realm ID which limits the results of this criteria. Does not support formulae which include negation of a condition containing the given field. Only supports plain equality (ModelCriteriaBuilder.Operator.EQ
), ignores all instances of the field comparison which do not use plain equality.- Returns:
null
if the field is not contained in the formula, there are multiple mutually different field values in the formula, or the formula contains field check within a negation.
-
isEmpty
public boolean isEmpty() -
getNode
-
toString
-