public interface Predicate
FilteredRowSet
オブジェクトにフィルタを記述するフレームワークを提供する標準インタフェースです。
Predicate
インタフェースは、アプリケーションが FilteredRowSet
オブジェクトに適用するフィルタを定義するために実装できる標準インタフェースです。FilteredRowSet
オブジェクトは、このインタフェースの実装を使用し、evaluate
メソッドの実装に定義された制約を施行します。FilteredRowSet
オブジェクトは、双方向方式でフィルタの制約を施行します。つまり、このオブジェクトは、フィルタの制約内の行だけを出力し、フィルタの制約内の行だけを挿入、変更、または更新します。
FilteredRowSet
の predicate を提供するためには、このインタフェースを実装する必要があります。現時点では、JDBC RowSet 実装 (JSR-114) は標準フィルタの定義を指定していません。FilteredRowSet
インタフェースのリファレンス実装とベンダー実装の両方で、幅広いフィルタを定義し、展開するための標準的な手段とメカニズムを指定することにより、柔軟でアプリケーション主導の Predicate
実装の発展につながります。
サンプル実装は、次のようになります。
public class Range implements Predicate {
private Object lo[];
private Object hi[];
private int idx[];
public Range(Object[] lo, Object[] hi, int[] idx) {
this.lo = lo;
this.hi = hi;
this.idx = idx;
}
public boolean evaluate(RowSet rs) {
CachedRowSet crs = (CachedRowSet)rs;
boolean bool1,bool2;
// Check the present row determine if it lies
// within the filtering criteria.
for (int i = 0; i < idx.length; i++) {
if ((rs.getObject(idx[i]) >= lo[i]) &&
(rs.getObject(idx[i]) >= hi[i]) {
bool1 = true; // within filter constraints
} else {
bool2 = true; // outside of filter constraints
}
}
if (bool2) {
return false;
} else {
return true;
}
}
上記の例は、単純な範囲プレディケートを実装します。実装は、両方の列識別規則を使用した JDBC RowSet 実装アプリケーションに提供される String
および整数インデックスベースのコンストラクタを提供しますが、これは必須ではありません。
修飾子と型 | メソッドと説明 |
---|---|
boolean |
evaluate(Object value, int column)
このメソッドは、値が
setFilter() メソッドを使って設定されたフィルタリング基準 (複数の制約が存在する場合は複数の基準) 内に収まっているかどうかをチェックするために、FilteredRowSet オブジェクトによって呼び出されます。 |
boolean |
evaluate(Object value, String columnName)
このメソッドは、値が setFileter メソッドを使って設定されたフィルタリング基準内に収まっているかどうかをチェックするために
FilteredRowSet オブジェクトによって呼び出されます。 |
boolean |
evaluate(RowSet rs)
このメソッドは、通常、
RowSet オブジェクトのカーソルが次の行へ移動するのを制御する FilteredRowSet オブジェクトの内部メソッド (非 public) から呼び出されます。 |
boolean evaluate(RowSet rs)
RowSet
オブジェクトのカーソルが次の行へ移動するのを制御する FilteredRowSet
オブジェクトの内部メソッド (非 public) から呼び出されます。この内部メソッドが、カーソルをすでに削除された行へ移動した場合、内部メソッドは有効な行が見つかるまでカーソルの移動を続けます。true
、そうでない場合は false
boolean evaluate(Object value, int column) throws SQLException
setFilter()
メソッドを使って設定されたフィルタリング基準 (複数の制約が存在する場合は複数の基準) 内に収まっているかどうかをチェックするために、FilteredRowSet
オブジェクトによって呼び出されます。
FilteredRowSet
オブジェクトは、FilteredRowSet
インスタンスに新しい行を挿入するとき、このメソッドを内部で使用します。
value
- この FilterRowSet
オブジェクトに追加できるかどうかチェックする必要がある Object
値。column
- この RowSet
オブジェクトの列の SQL インデックスに一致する必要がある int
オブジェクト。これは、Predicate
の初期化時に、フィルタリングのため、列の 1 つとして Predicate
に渡されている必要があるtrue
、そうでない場合は false
SQLException
- 列がフィルタリング基準内にない場合boolean evaluate(Object value, String columnName) throws SQLException
FilteredRowSet
オブジェクトによって呼び出されます。
FilteredRowSet
オブジェクトは、FilteredRowSet
インスタンスに新しい行を挿入するとき、このメソッドを内部で使用します。
value
- この FilterRowSet
に追加できるかどうかチェックする必要がある Object
値。columnName
- この RowSet
の列の SQL 名に一致する必要がある String
オブジェクト。アルファベットの大文字と小文字は区別されない。これは、Predicate
の初期化時に、フィルタリングのため、列の 1 つとして Predicate
に渡されている必要があるtrue
、そうでない場合は false
SQLException
- 列がフィルタリング基準内にない場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.