Class ItemValueFilterProcessor<O extends ValueFilter<?,?>>

java.lang.Object
com.evolveum.midpoint.repo.sqlbase.filtering.item.ItemValueFilterProcessor<O>
All Implemented Interfaces:
FilterProcessor<O>, RightHandProcessor
Direct Known Subclasses:
AuditCustomColumnItemFilterProcessor, DetailTableItemFilterProcessor, ExtensionItemFilterProcessor, PolyStringItemFilterProcessor, RefItemFilterProcessor, RefTableItemFilterProcessor, SinglePathItemFilterProcessor

public abstract class ItemValueFilterProcessor<O extends ValueFilter<?,?>> extends Object implements FilterProcessor<O>, RightHandProcessor
Type of FilterProcessor for a single Prism item (not necessarily one SQL column). These are executed as "leaves" of filter processing tree returning terminal predicates. These are used in QueryTableMapping objects. This superclass contains support methods for determining operator from filter, getting single value and other typical operations needed by item filter processors. See ValueFilterProcessor for details how complex paths are resolved to its last part.
  • Field Details

  • Constructor Details

    • ItemValueFilterProcessor

      protected ItemValueFilterProcessor(SqlQueryContext<?,?,?> context)
  • Method Details

    • getSingleValue

      @Nullable protected <T> T getSingleValue(PropertyValueFilter<T> filter)
      Returns the single "real" value from the property filter (or null).
    • operation

      protected FilterOperation operation(ValueFilter<?,?> filter) throws QueryException
      Throws:
      QueryException
    • isIgnoreCaseFilter

      protected boolean isIgnoreCaseFilter(ValueFilter<?,?> filter)
      Returns true, if the filter implies ignore-case behavior. Used when filter is transformed to SQL operation, or to determine whether operands need some treatment (e.g. `lower()` function). Can be overridden to cover other matching rules, e.g. for poly-strings.
    • createBinaryCondition

      @NotNull protected <T> @NotNull com.querydsl.core.types.Predicate createBinaryCondition(ValueFilter<?,?> filter, com.querydsl.core.types.Path<T> path, ValueFilterValues<?,T> values) throws QueryException
      Throws:
      QueryException
    • fuzzyStringPredicate

      protected com.querydsl.core.types.Predicate fuzzyStringPredicate(FuzzyStringMatchFilter<?> filter, com.querydsl.core.types.Expression<?> path, ValueFilterValues<?,?> values) throws QueryException
      Throws:
      QueryException
    • singleValuePredicateWithNotTreated

      protected com.querydsl.core.types.Predicate singleValuePredicateWithNotTreated(com.querydsl.core.types.Expression<?> path, FilterOperation operation, Object value)
      Creates predicate for specified path and value using the provided operator. If the value is not Querydsl Expression it is changed to constant expression, otherwise the expression is passed as-is. Technically, any expression can be used on path side as well.
    • singleValuePredicate

      protected com.querydsl.core.types.Predicate singleValuePredicate(com.querydsl.core.types.Expression<?> path, FilterOperation operation, Object value)
    • predicateWithNotTreated

      protected com.querydsl.core.types.Predicate predicateWithNotTreated(com.querydsl.core.types.Expression<?> path, com.querydsl.core.types.Predicate predicate)
      Returns the predicate or (predicate AND path IS NOT NULL) if NOT is used somewhere above. This makes NOT truly complementary to non-NOT result.
    • rightHand

      public com.querydsl.core.types.Expression<?> rightHand(ValueFilter<?,?> filter) throws RepositoryException
      Specified by:
      rightHand in interface RightHandProcessor
      Throws:
      RepositoryException