|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface Predicate
すべての FilteredRowSet
オブジェクトにフィルタを記述するフレームワークを提供する標準インタフェースです。
FilteredRowSet
オブジェクトに適用するフィルタを定義するために実装できる標準インタフェースです。FilteredRowSet
オブジェクトは、このインタフェースの実装を使用し、evaluate
メソッドの実装に定義された制約を施行します。FilteredRowSet
オブジェクトは、双方向方式でフィルタの制約を施行します。つまり、このオブジェクトは、フィルタの制約内の行だけを出力し、フィルタの制約内の行だけを挿入、変更、または更新します。FilteredRowSet
の predicate を提供するためには、このインタフェースを実装する必要があります。現時点では、JDBC RowSet 実装 (JSR-114) は標準フィルタの定義を指定していません。FilteredRowSet
インタフェースのリファレンス実装とベンダー実装の両方で、幅広いフィルタを定義し、展開するための標準的な手段としくみを指定することにより、柔軟でアプリケーション主導のプレディケート実装の発展につながります。
サンプル実装は、次のようになります。
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
オブジェクト。プレディケートの初期化時に、フィルタリングのため、列の 1 つとしてプレディケートに渡されている必要がある
true
、そうでない場合は false
SQLException
- 列がフィルタリング基準内にない場合boolean evaluate(Object value, String columnName) throws SQLException
FilteredRowSet
オブジェクトによって呼び出されます。
FilteredRowSet
オブジェクトは、FilteredRowSet
インスタンスに新しい行を挿入するとき、このメソッドを内部で使用します。
value
- この FilterRowSet
に追加できるかどうかチェックする必要がある Object
値columnName
- この RowSet
の列の SQL 名に一致する必要がある String
オブジェクト。アルファベットの大文字と小文字は区別されない。プレディケートの初期化時に、フィルタリングのため、列の 1 つとしてプレディケートに渡されている必要がある
true
、そうでない場合は false
SQLException
- 列がフィルタリング基準内にない場合
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。