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