## Uses of Interface
com.hammurapi.extract.Predicate

- Packages that use Predicate
  Package | Description
  --- | ---
  com.hammurapi.common |
  com.hammurapi.extract |
  com.hammurapi.extract.scripting |
  com.hammurapi.store | This package contains interfaces and classes which define object store and provide foundation for implementations.
  com.hammurapi.store.local | Local (in-JVM) implementation of object store.

- - ### Uses of Predicate in com.hammurapi.common

    Methods in com.hammurapi.common with parameters of type Predicate
    Modifier and Type | Method and Description
    --- | ---
    `void` | Joiner.`addPredicate(Predicate<T,C> predicate)` Adds join predicate.
    `<T> T` | SingletonChainingContext.`lookup(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> T` | SimpleMutableContext.`lookup(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> T` | FacadeContext.`lookup(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> T` | DefaultContext.`lookup(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> T` | Context.`lookup(Class<T> serviceClass, Predicate<T,Context>... selectors)` Looks up single object (service) by type.
    `<T> T` | CompositeContext.`lookup(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> Iterator<T>` | SingletonChainingContext.`lookupAll(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> Iterator<T>` | SimpleMutableContext.`lookupAll(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> Iterator<T>` | FacadeContext.`lookupAll(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> Iterator<T>` | DefaultContext.`lookupAll(Class<T> serviceClass, Predicate<T,Context>... selectors)`
    `<T> Iterator<T>` | Context.`lookupAll(Class<T> serviceClass, Predicate<T,Context>... selectors)` Looks up all services of given type.
    `<T> Iterator<T>` | CompositeContext.`lookupAll(Class<T> serviceClass, Predicate<T,Context>... selectors)`

  - ### Uses of Predicate in com.hammurapi.extract

    Classes in com.hammurapi.extract with type parameters of type Predicate
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `CompositePredicate<T,PC extends Collection<Predicate<T,C>>,C,S extends CompositePredicate<T,PC,C,S>>` Predicate which is a composition of other predicates, e.g.

    Subinterfaces of Predicate in com.hammurapi.extract
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `CommutativeCompositePredicate<T,C,S extends CommutativeCompositePredicate<T,C,S>>` Order of parts can be changed in a commutative composite predicate can be
    `interface` | `CompositePredicate<T,PC extends Collection<Predicate<T,C>>,C,S extends CompositePredicate<T,PC,C,S>>` Predicate which is a composition of other predicates, e.g.

    Classes in com.hammurapi.extract that implement Predicate
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractPredicate<T,C>`
    `class` | `And<T,C>` Non-commutative AND.
    `class` | `CommutativeAnd<T,C>` Commutative AND.
    `class` | `CommutativeOr<T,C>` Commutative OR.
    `class` | `ComparisonPredicate<T,V,C>`
    `class` | `Equal<T,V,C>`
    `class` | `False<T,C>` Predicate which always evaluates to true.
    `class` | `GreaterEqual<T,V extends Comparable<V>,C>`
    `class` | `GreaterThan<T,V extends Comparable<V>,C>`
    `class` | `InstanceOfPredicate<T,C>` This predicate evaluates to true if argument is of a particular type.
    `class` | `LessEqual<T,V extends Comparable<V>,C>`
    `class` | `LessThan<T,V extends Comparable<V>,C>`
    `class` | `MappedPredicate<T,C>` Extractor which maps arguments to the target extractor.
    `class` | `Not<T,C>`
    `class` | `NotEqual<T,V,C>`
    `class` | `Or<T,C>` Non-commutative OR.
    `class` | `TimeIntervalPredicate<T,C>` This predicate evaluates to true for `timeInterval` after construction.
    `class` | `True<T,C>` Predicate which always evaluates to true.

    Methods in com.hammurapi.extract that return Predicate
    Modifier and Type | Method and Description
    --- | ---
    `<T,C> Predicate<T,C>` | ExtractorFactory.`createPredicate(String language, String code, String[] parameterNames, Class<T>[] parameterTypes, Class<C> contextType, ClassLoader classLoader)` Creates extractor.
    `Predicate<T,C>` | Not.`getPredicate()`
    `static <T,C> Predicate<T,C>` | MappedPredicate.`mapPredicate(Predicate<T,C> target, int[] map)`
    `Predicate<T,C>` | Or.`normalize()`
    `Predicate<T,C>` | CompositePredicate.`normalize()` Normalizes predicate by removing less restrictive parts in AND or more restrictive parts in OR, and analyzing if predicate is always TRUE or always FALSE.
    `Predicate<T,C>` | CommutativeOr.`normalize()`
    `Predicate<T,C>` | CommutativeAnd.`normalize()`
    `Predicate<T,C>` | And.`normalize()`
    `Predicate<T,C>` | Or.`remove(Predicate<T,C> part)`
    `Predicate<T,C>` | CompositePredicate.`remove(Predicate<T,C> part)`
    `Predicate<T,C>` | CommutativeOr.`remove(Predicate<T,C> part)`
    `Predicate<T,C>` | CommutativeAnd.`remove(Predicate<T,C> part)`
    `Predicate<T,C>` | And.`remove(Predicate<T,C> part)`
    `static <T,C> Predicate<T,C>` | ExtractorUtil.`wrap(Extractor<T,Boolean,C> extractor)` Wraps extractor into predicate, if given extractor is not already a predicate.

    Methods in com.hammurapi.extract that return types with arguments of type Predicate
    Modifier and Type | Method and Description
    --- | ---
    `List<Predicate<T,C>>` | Or.`getParts()`
    `Set<Predicate<T,C>>` | CommutativeOr.`getParts()`
    `Set<Predicate<T,C>>` | CommutativeAnd.`getParts()`
    `List<Predicate<T,C>>` | And.`getParts()`

    Methods in com.hammurapi.extract with parameters of type Predicate
    Modifier and Type | Method and Description
    --- | ---
    `Or<T,C>` | Or.`add(Predicate<T,C> part)`
    `S` | CompositePredicate.`add(Predicate<T,C> part)`
    `CommutativeOr<T,C>` | CommutativeOr.`add(Predicate<T,C> part)`
    `CommutativeAnd<T,C>` | CommutativeAnd.`add(Predicate<T,C> part)`
    `And<T,C>` | And.`add(Predicate<T,C> part)`
    `static <T,C> Predicate<T,C>` | MappedPredicate.`mapPredicate(Predicate<T,C> target, int[] map)`
    `Predicate<T,C>` | Or.`remove(Predicate<T,C> part)`
    `Predicate<T,C>` | CompositePredicate.`remove(Predicate<T,C> part)`
    `Predicate<T,C>` | CommutativeOr.`remove(Predicate<T,C> part)`
    `Predicate<T,C>` | CommutativeAnd.`remove(Predicate<T,C> part)`
    `Predicate<T,C>` | And.`remove(Predicate<T,C> part)`

    Constructors in com.hammurapi.extract with parameters of type Predicate
    Constructor and Description
    `And(double initialCost, TimeUnit costUnit, Predicate<T,C>... parts)`
    `CommutativeAnd(double initialCost, TimeUnit costUnit, Predicate<T,C>... parts)`
    `CommutativeOr(double initialCost, TimeUnit costUnit, Predicate<T,C>... parts)`
    `MappedPredicate(Predicate<T,C> target, int[] map)`
    `Not(Predicate<T,C> predicate)`
    `Or(double initialCost, TimeUnit costUnit, Predicate<T,C>... parts)`

    Constructor parameters in com.hammurapi.extract with type arguments of type Predicate
    Constructor and Description
    `And(double initialCost, TimeUnit costUnit, Iterable<Predicate<T,C>> parts)`
    `CommutativeAnd(double initialCost, TimeUnit costUnit, Iterable<Predicate<T,C>> parts)`
    `CommutativeOr(double initialCost, TimeUnit costUnit, Iterable<Predicate<T,C>> parts)`
    `Or(double initialCost, TimeUnit costUnit, Iterable<Predicate<T,C>> parts)`

  - ### Uses of Predicate in com.hammurapi.extract.scripting

    Classes in com.hammurapi.extract.scripting that implement Predicate
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ScriptingPredicate<T,C>`

    Methods in com.hammurapi.extract.scripting that return Predicate
    Modifier and Type | Method and Description
    --- | ---
    `<T,C> Predicate<T,C>` | ScriptingExtractorFactory.`createPredicate(String language, String code, String[] parameterNames, Class<T>[] parameterTypes, Class<C> contextType, ClassLoader classLoader)`

  - ### Uses of Predicate in com.hammurapi.store

    Methods in com.hammurapi.store that return Predicate
    Modifier and Type | Method and Description
    --- | ---
    `Predicate<ST,S>` | Index.`getPredicate()`
    `Predicate<ST,S>` | AbstractIndex.`getPredicate()`

    Methods in com.hammurapi.store with parameters of type Predicate
    Modifier and Type | Method and Description
    --- | ---
    `<V,ST extends T> Index<T,ST,PK,V,S>` | UnmodifiableStore.`addIndex(Predicate<T,S> predicate, Extractor<ST,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator)`
    `<V,ST extends T> Index<T,ST,PK,V,S>` | Store.`addIndex(Predicate<T,S> predicate, Extractor<ST,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator)` Adds index to the store to speed-up extraction operations.
    `<V,ST extends T> Index<T,ST,PK,V,S>` | LiveView.`addIndex(Predicate<T,S> predicate, Extractor<ST,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator)`
    `<V,ST extends T> Index<T,ST,PK,V,S>` | DeputyStore.`addIndex(Predicate<T,S> predicate, Extractor<ST,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator)`
    `<V,ST extends T> Index<T,ST,PK,V,S>` | AbstractStore.`addIndex(Predicate<T,S> predicate, Extractor<ST,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator)`
    `protected Store.Handle<T,PK,S>` | DeputyStore.`createHandle(T obj, PK primaryKey, Map<S,Map<Extractor<T,? super PK,S>,? super PK>> cache, Predicate<T,S>[] validators)`
    `protected abstract Store.Handle<T,PK,S>` | AbstractStore.`createHandle(T obj, PK primaryKey, Map<S,Map<Extractor<T,? super PK,S>,? super PK>> cache, Predicate<T,S>[] validators)` Creates handle.
    `protected Store.Handle<T,PK,S>` | AbstractStore.`createHandle(T obj, Predicate<T,S>[] validators)`
    `protected <V,ST extends T> AbstractIndex<T,ST,PK,V,S>` | DeputyStore.`createIndex(Predicate<T,S> predicate, Extractor<ST,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator)`
    `protected abstract <V,ST extends T> AbstractIndex<T,ST,PK,V,S>` | AbstractStore.`createIndex(Predicate<T,S> predicate, Extractor<ST,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator)`
    `protected abstract S` | AbstractStore.`createLiveView(Predicate<T,S> selector)`
    `S` | UnmodifiableStore.`createView(Predicate<T,S> selector, Store.ViewType viewType)`
    `S` | Store.`createView(Predicate<T,S> selector, Store.ViewType viewType)` Creates a view - a store which sees only objects matching the given selector.
    `S` | LiveView.`createView(Predicate<T,S> selector, Store.ViewType viewType)`
    `S` | DeputyStore.`createView(Predicate<T,S> selector, Store.ViewType viewType)`
    `S` | AbstractStore.`createView(Predicate<T,S> selector, Store.ViewType viewType)`
    `Iterable<T>` | UnmodifiableStore.`get(Predicate<T,S> selector)`
    `Iterable<T>` | Store.`get(Predicate<T,S> selector)` Retrieves objects matching the predicate.
    `Iterable<T>` | LiveView.`get(Predicate<T,S> selector)`
    `Iterable<T>` | DeputyStore.`get(Predicate<T,S> selector)`
    `Iterable<T>` | AbstractStore.`get(Predicate<T,S> selector)`
    `<V> Iterable<V>` | UnmodifiableStore.`get(Predicate<T,S> selector, Extractor<T,V,S> extractor, boolean ordered, Comparator<V> comparator)`
    `<V> Iterable<V>` | Store.`get(Predicate<T,S> selector, Extractor<T,V,S> extractor, boolean ordered, Comparator<V> comparator)` Retrieves values from objects matching the predicate.
    `<V> Iterable<V>` | LiveView.`get(Predicate<T,S> selector, Extractor<T,V,S> extractor, boolean ordered, Comparator<V> comparator)`
    `<V> Iterable<V>` | DeputyStore.`get(Predicate<T,S> selector, Extractor<T,V,S> extractor, boolean ordered, Comparator<V> comparator)`
    `<V> Iterable<V>` | AbstractStore.`get(Predicate<T,S> selector, Extractor<T,V,S> extractor, boolean ordered, Comparator<V> comparator)`
    `protected Iterable<Store.Handle<T,PK,S>>` | AbstractStore.`getHandles(Predicate<T,S> selector)`
    `<V> Iterable<V>` | UnmodifiableStore.`getMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, boolean ordered, Comparator<V> comparator)`
    `<V> Iterable<V>` | UnmodifiableStore.`getMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, boolean ordered, Comparator<V> comparator)`
    `<V> Iterable<V>` | Store.`getMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, boolean ordered, Comparator<V> comparator)` Retrieves values from objects matching the predicate.
    `<V> Iterable<V>` | Store.`getMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, boolean ordered, Comparator<V> comparator)` Retrieves values from objects matching the predicate.
    `<V> Iterable<V>` | LiveView.`getMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, boolean ordered, Comparator<V> comparator)`
    `<V> Iterable<V>` | LiveView.`getMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, boolean ordered, Comparator<V> comparator)`
    `<V> Iterable<V>` | AbstractStore.`getMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, boolean ordered, Comparator<V> comparator)`
    `<V> Iterable<V>` | AbstractStore.`getMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, boolean ordered, Comparator<V> comparator)`
    `Store.Handle<T,PK,S>` | UnmodifiableStore.`put(T obj, Predicate<T,S>... validators)`
    `Store.Handle<T,PK,S>` | Store.`put(T obj, Predicate<T,S>... validators)` Puts object to the store.
    `Store.Handle<T,PK,S>` | LiveView.`put(T obj, Predicate<T,S>... validators)`
    `Store.Handle<T,PK,S>` | AbstractStore.`put(T obj, Predicate<T,S>... validators)`
    `<V> int` | UnmodifiableStore.`query(Predicate<T,S> selector, Extractor<T,V,S> extractor, Store.QueryTask<V,PK,S> processor)`
    `<V> int` | Store.`query(Predicate<T,S> selector, Extractor<T,V,S> extractor, Store.QueryTask<V,PK,S> processor)` Processes values extracted from objects matching the predicate.
    `<V> int` | LiveView.`query(Predicate<T,S> selector, Extractor<T,V,S> extractor, Store.QueryTask<V,PK,S> processor)`
    `<V> int` | AbstractStore.`query(Predicate<T,S> selector, Extractor<T,V,S> extractor, Store.QueryTask<V,PK,S> query)`
    `int` | UnmodifiableStore.`query(Predicate<T,S> selector, Store.QueryTask<T,PK,S> processor)`
    `int` | Store.`query(Predicate<T,S> selector, Store.QueryTask<T,PK,S> processor)` Processes objects matching the predicate.
    `int` | LiveView.`query(Predicate<T,S> selector, Store.QueryTask<T,PK,S> processor)`
    `int` | DeputyStore.`query(Predicate<T,S> selector, Store.QueryTask<T,PK,S> query)`
    `int` | AbstractStore.`query(Predicate<T,S> selector, Store.QueryTask<T,PK,S> query)`
    `<V> int` | UnmodifiableStore.`queryMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> processor)`
    `<V> int` | UnmodifiableStore.`queryMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> processor)`
    `<V> int` | Store.`queryMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> processor)` Processes multiple values extracted from objects matching the predicate.
    `<V> int` | Store.`queryMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> processor)` Processes multiple values extracted from objects matching the predicate.
    `<V> int` | LiveView.`queryMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> processor)`
    `<V> int` | LiveView.`queryMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> processor)`
    `<V> int` | AbstractStore.`queryMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> query)`
    `<V> int` | AbstractStore.`queryMultiple(Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> query)`
    `int` | UnmodifiableStore.`remove(Predicate<T,S> selector)`
    `int` | Store.`remove(Predicate<T,S> selector)` Removes objects matching the predicate.
    `int` | LiveView.`remove(Predicate<T,S> selector)`
    `int` | DeputyStore.`remove(Predicate<T,S> selector)`
    `int` | AbstractStore.`remove(Predicate<T,S> selector)`
    `int` | UnmodifiableStore.`update(Predicate<T,S> selector, Store.UpdateTask<T,PK,S> updater)`
    `int` | Store.`update(Predicate<T,S> selector, Store.UpdateTask<T,PK,S> updater)` Updates objects matching the predicate.
    `int` | LiveView.`update(Predicate<T,S> selector, Store.UpdateTask<T,PK,S> updater)`
    `int` | DeputyStore.`update(Predicate<T,S> selector, Store.UpdateTask<T,PK,S> updater)`
    `int` | AbstractStore.`update(Predicate<T,S> selector, Store.UpdateTask<T,PK,S> updater)`

    Constructors in com.hammurapi.store with parameters of type Predicate
    Constructor and Description
    `AbstractIndex(Predicate<ST,S> predicate, Extractor<T,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator, AbstractStore<ST,PK,S> store)`
    `AbstractStore.ExtractorTask(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Extractor<T,V,S> extractor)`
    `AbstractStore.IndexizationTask(Predicate<T,S> selector, Extractor<T,V,S> extractor)`
    `AbstractStore.QueryCallable(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Extractor<T,V,S> extractor, Store.QueryTask<V,PK,S> query, S storeDeputy)`
    `AbstractStore.QueryItemCallable(V v, Predicate<V,S> valueSelector, PK primaryKey, Store.QueryTask<V,PK,S> query, S storeDeputy)`
    `AbstractStore.QueryMultipleCallable(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> query, S storeDeputy)`
    `AbstractStore.QueryMultipleCallable(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> query, S storeDeputy)`
    `AbstractStore.RemoveTask(Store.Handle<T,PK,S> handle, Predicate<T,S> selector)`
    `AbstractStore.SelectorTask(Store.Handle<T,PK,S> handle, Predicate<T,S> selector)`
    `AbstractStore.UpdateCallable(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Store.UpdateTask<T,PK,S> updater, S storeDeputy)`
    `AbstractStore.ValueSelectorTask(V value, Predicate<V,S> selector)`
    `LiveView(S master, Predicate<T,S> selector)`

  - ### Uses of Predicate in com.hammurapi.store.local

    Methods in com.hammurapi.store.local with parameters of type Predicate
    Modifier and Type | Method and Description
    --- | ---
    `H` | HandleFactory.`createHandle(S store, T obj, PK primaryKey, Map<S,Map<Extractor<T,? super PK,S>,? super PK>> cache, Predicate<T,S>[] validators, LocalHandle.HandleStrength handleStrength, boolean cacheExtracted)`
    `protected Store.Handle<T,PK,S>` | LocalStoreBase.`createHandle(T obj, PK primaryKey, Map<S,Map<Extractor<T,? super PK,S>,? super PK>> cache, Predicate<T,S>[] validators)`
    `protected <V,ST extends T> AbstractIndex<T,ST,PK,V,S>` | LocalStoreBase.`createIndex(Predicate<T,S> predicate, Extractor<ST,V,S> extractor, Index.Type type, boolean ordered, Comparator<V> comparator)`
    `protected LocalStore<T,PK>` | LocalStoreImpl.`createLiveView(Predicate<T,LocalStore<T,PK>> selector)`
    `protected LocalStore<T,PK>` | LocalStoreImpl.LocalDeputyStore.`createLiveView(Predicate<T,LocalStore<T,PK>> selector)`

    Constructors in com.hammurapi.store.local with parameters of type Predicate
    Constructor and Description
    `LocalHandle(LocalStoreBase<T,PK,S> store, T obj, PK primaryKey, Map<S,Map<Extractor<T,? super PK,S>,? super PK>> cache, Predicate<T,S>[] validators, LocalHandle.HandleStrength handleStrength, boolean cacheExtracted)`
    `LocalStoreImpl.LocalLiveView(LocalStore<T,PK> master, Predicate<T,LocalStore<T,PK>> selector)`