public interface UnitIterableQuery extends IterableQuery<Unit,Unit>
このクエリのインスタンスを得るにはQueries
の提供する静的メソッドを利用する。
Unit.query(Query)
メソッドをクエリに対して適用すると問合せが行われる:
import static org.unclazz.jp1ajs2.unitdef.query.Queries.*; Unit u = ...; Iterable<Unit> ui = u.query(children());
このオブジェクト自身が提供するメソッドを通じてクエリに種々の条件を追加することが可能である。 これらの条件は内部的に記憶されて問い合わせの時に利用される。 クエリはイミュータブルでありステートレスであるので、複雑な条件を設定したインスタンスの参照を保持しておくことで、 複数の異なるユニットに対して繰り返し問合せを行うことができる。
Query<Unit,Iterable> q0 = children().hasChildren(); Query<Unit,Iterable> q1 = q0.typeIs(UnitType.PC_JOB); Query<Unit,Iterable> q2 = q1.hasParameter("cm"); Iterable<Unit> ui = u.query(q1); // cmパラメータを持つこと という条件は付かない
queryFrom(Unit)
メソッドから返えされるIterable
は遅延評価に基づき値を返す。
問合せのロジックの起動は可能な限り遅らせられるので、仮に1つ取得するだけでIterable
を破棄したとしても、
そのために消費されるCPUとメモリのコストは当該の1ユニットを問合せるのに必要な分だけである。
なおこのように問合せ結果のうち最初の1つだけを取得したい場合は、
IterableQuery.one()
もしくはそのオーバーロードを呼び出してOneQuery
のインスタンスを得ると便利である。
また問合せ結果として遅延評価Iterable
の代わりに正格評価List
を取得したい場合は、
IterableQuery.list()
メソッドを呼び出してクエリListQuery
のインスタンスを得るとよい。
Unit u2 = u.query(children().one()); List<Unit> ul = u.query(children().list());
修飾子とタイプ | インタフェースと説明 |
---|---|
static interface |
UnitIterableQuery.HasParameterValueAtN |
static interface |
UnitIterableQuery.HasParameterValueAtNIsTuple
ユニット定義パラメータ値のタプル条件を付与された
UnitIterableQuery を生成するためのファクトリ. |
ParameterIterableQuery theirParameters()
ParameterIterableQuery theirParameters(String name)
name
- パラメータ名IterableQuery<Unit,FullQualifiedName> theirFqn()
IterableQuery<Unit,String> theirName()
UnitIterableQuery typeIs(UnitType t)
t
- ユニット種別UnitIterableQuery fqnEquals(String n)
n
- ユニット完全名UnitIterableQuery fqnStartsWith(String n)
n
- ユニット完全名の部分文字列UnitIterableQuery fqnEndsWith(String n)
n
- ユニット完全名の部分文字列UnitIterableQuery fqnContains(String n)
n
- ユニット完全名の部分文字列UnitIterableQuery nameEquals(String n)
n
- ユニット名UnitIterableQuery nameStartsWith(String n)
n
- ユニット名の部分文字列UnitIterableQuery nameEndsWith(String n)
n
- ユニット名の部分文字列UnitIterableQuery nameContains(String n)
n
- ユニット名の部分文字列UnitIterableQuery nameMatches(Pattern regex)
regex
- ユニット名の正規表現パターンUnitIterableQuery nameMatches(String regex)
regex
- ユニット名の正規表現パターンUnitIterableQuery hasChildren()
UnitIterableQuery.HasParameterValueAtN hasParameter(String name)
name
- パラメータ名Copyright © 2016. All rights reserved.