Class Predicate<T>

  • Type Parameters:
    T - type of object the predicate can evaluate in memory.
    Direct Known Subclasses:
    AndPredicate, ApprovalPredicate, IndexedQuery, NotPredicate, OperatorPredicate, OrPredicate

    public abstract class Predicate<T>
    extends Object
    An abstract predicate tree for any form of query.

    Implementations should be immutable, such that the meaning of a predicate never changes once constructed. They should ensure their immutable promise by defensively copying any structures which might be modified externally, but was passed into the object's constructor.

    However, implementations may retain non-thread-safe caches internally, to speed up evaluation operations within the context of one thread's evaluation of the predicate. As a result, callers should assume predicates are not thread-safe, but that two predicate graphs produce the same results given the same inputs if they are equals(Object).

    Predicates should support deep inspection whenever possible, so that generic algorithms can be written to operate against them. Predicates which contain other predicates should override getChildren() to return the list of children nested within the predicate.

    • Constructor Detail

      • Predicate

        public Predicate()
    • Method Detail

      • getPredicateString

        public String getPredicateString()
      • isLeaf

        public boolean isLeaf()
      • any

        public static <T> Predicate<T> any()
        A predicate that matches any input, always, with no cost.
      • and

        public static <T> Predicate<T> and​(Collection<? extends Predicate<T>> that)
        Combine the passed predicates into a single AND node.
      • not

        public static <T> Predicate<T> not​(Predicate<T> that)
        Invert the passed node.
      • getChildren

        public List<Predicate<T>> getChildren()
        Get the children of this predicate, if any.
      • getChildCount

        public int getChildCount()
        Same as getChildren().size()
      • getChild

        public Predicate<T> getChild​(int i)
        Same as getChildren().get(i)
      • getLeafCount

        public int getLeafCount()
        Get the number of leaf terms in this predicate.
      • getFlattenedPredicateList

        public List<Predicate<T>> getFlattenedPredicateList()
        Returns a list of this predicate and all its descendants.
      • isMatchable

        public boolean isMatchable()
      • supportedForQueries

        public boolean supportedForQueries()
        Whether this predicate can be used in search queries.
      • estimateCost

        public int estimateCost()
        Returns a cost estimate to run this predicate, higher figures cost more.
      • hashCode

        public abstract int hashCode()
        Overrides:
        hashCode in class Object
      • equals

        public abstract boolean equals​(Object other)
        Overrides:
        equals in class Object