JavaTM 2 Platform
Standard Ed. 5.0

javax.sql.rowset
インタフェース FilteredRowSet

すべてのスーパーインタフェース:
CachedRowSet, Joinable, ResultSet, RowSet, WebRowSet

public interface FilteredRowSet
extends WebRowSet

FilteredRowSet のすべての標準実装が実装しなければならない標準インタフェースです。FilteredRowSetImpl クラスは、必要に応じて拡張可能なリファレンス実装を提供します。ベンダーは、このインタフェースを実装することによって、独自のバージョンを実装できます。

1.0 背景

RowSet オブジェクトで、ある程度のコンテンツフィルタリング機能を提供しなければならない場合があります。この場合、1 つの可能性のある解決方法として、すべての標準 RowSet 実装のクエリー言語を提供する方法があります。しかし、これは未接続の RowSet オブジェクトなどの軽量コンポーネントには現実的な方法ではありません。FilteredRowSet インタフェースは、膨大なクエリー言語とそれに伴う処理を提供することなく、このニーズに対応できる必要があります。

JDBC FilteredRowSet 標準実装は、RowSet インタフェースを実装し、CachedRowSetTM クラスを拡張します。CachedRowSet クラスは、protected カーソル操作メソッドのセットを提供します。FilteredRowSet 実装は、これらのメソッドをオーバーライドして、フィルタリング機能を提供することができます。

2.0 プレディケートの共有

親インタフェースで、継承された createShared メソッドを使って FilteredRowSet 実装を共有している場合、すべての FilteredRowSet インスタンスの複製で、変更を加えることなくプレディケートを共有する必要があります。

3.0 用法

プレディケートを実装した場合 (プレディケートクラスの JavaDoc の例を参照)、FilteredRowSet を次のように使用することができます。


     FilteredRowSet frs = new FilteredRowSetImpl();
     frs.populate(rs);
 
     Range name = new Range("Alpha", "Bravo", "columnName");
     frs.setFilter(name);
 
     frs.next() // only names from "Alpha" to "Bravo" will be returned
 
上記の例では、プレディケートインタフェースを実装する Range オブジェクトを初期化しています。このオブジェクトには、この FilteredRowSet オブジェクトから出力または変更されたすべての行が、columnName 列内の Alpha から Bravo の範囲に収まる必要があります。フィルタの範囲内に収まるデータを格納しない FilteredRowSet オブジェクトにフィルタが適用された場合は、行が返されません。

このフレームワークでは、クエリー言語処理を利用することなく、predicate を実装する複数のクラスを、必要なフィルタリング結果と組み合わせて使用することができます。

4.0 FilteredRowSet オブジェクトの更新

FilteredRowSet の predicate セットは、RowSet オブジェクト内のすべての行に基準を適用し、RowSet オブジェクト内の行のサブセットを管理します。この基準では、可視の行のサブセットを制御できるだけでなく、行の変更、削除、または挿入の基準を定義することもできます。

したがって、FilteredRowSet オブジェクト上の predicate セットは双方向と見なされ、セット基準は FilteredRowSet オブジェクトのすべてのビューおよび更新のゲート機構と見なされます。基準に違反する FilteredRowSet を更新しようとすると、SQLException オブジェクトがスローされます。

FilteredRowSet 範囲基準は、FilteredRowSet インスタンスに、新しいプレディケートオブジェクトを適用することで、いつでも変更できます。この処理は、FilteredRowSet オブジェクトへの追加参照が検出されない場合も実行可能です。新しいフィルタは、FilteredRowSet オブジェクト内の基準の適用にただちに影響を及ぼし、後続のすべてのビューおよび更新に同じ基準が適用されます。

5.0 フィルタ外部の行の動作

FilteredRowSet オブジェクトに設定されたフィルタの範囲外の行は、フィルタを削除するか、新しいフィルタを適用するまで変更できません。

さらに、フィルタの境界内に収まる行のみが、データソースと同期されます。


フィールドの概要
 
インタフェース javax.sql.rowset.WebRowSet から継承されたフィールド
PUBLIC_XML_SCHEMA, SCHEMA_SYSTEM_ID
 
インタフェース javax.sql.rowset.CachedRowSet から継承されたフィールド
COMMIT_ON_ACCEPT_CHANGES
 
インタフェース java.sql.ResultSet から継承されたフィールド
CLOSE_CURSORS_AT_COMMIT, CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, HOLD_CURSORS_OVER_COMMIT, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE
 
メソッドの概要
 Predicate getFilter()
          この FilteredRowSet オブジェクトのアクティブなフィルタを取得します。
 void setFilter(Predicate p)
          この FilteredRowSet オブジェクトに、指定されたプレディケートオブジェクトを適用します。
 
インタフェース javax.sql.rowset.WebRowSet から継承されたメソッド
readXml, readXml, writeXml, writeXml, writeXml, writeXml
 
インタフェース javax.sql.rowset.CachedRowSet から継承されたメソッド
acceptChanges, acceptChanges, columnUpdated, columnUpdated, commit, createCopy, createCopyNoConstraints, createCopySchema, createShared, execute, getKeyColumns, getOriginal, getOriginalRow, getPageSize, getRowSetWarnings, getShowDeleted, getSyncProvider, getTableName, nextPage, populate, populate, previousPage, release, restoreOriginal, rollback, rollback, rowSetPopulated, setKeyColumns, setMetaData, setOriginalRow, setPageSize, setShowDeleted, setSyncProvider, setTableName, size, toCollection, toCollection, toCollection, undoDelete, undoInsert, undoUpdate
 
インタフェース javax.sql.RowSet から継承されたメソッド
addRowSetListener, clearParameters, execute, getCommand, getDataSourceName, getEscapeProcessing, getMaxFieldSize, getMaxRows, getPassword, getQueryTimeout, getTransactionIsolation, getTypeMap, getUrl, getUsername, isReadOnly, removeRowSetListener, setArray, setAsciiStream, setBigDecimal, setBinaryStream, setBlob, setBoolean, setByte, setBytes, setCharacterStream, setClob, setCommand, setConcurrency, setDataSourceName, setDate, setDate, setDouble, setEscapeProcessing, setFloat, setInt, setLong, setMaxFieldSize, setMaxRows, setNull, setNull, setObject, setObject, setObject, setPassword, setQueryTimeout, setReadOnly, setRef, setShort, setString, setTime, setTime, setTimestamp, setTimestamp, setTransactionIsolation, setType, setTypeMap, setUrl, setUsername
 
インタフェース java.sql.ResultSet から継承されたメソッド
absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, close, deleteRow, findColumn, first, getArray, getArray, getAsciiStream, getAsciiStream, getBigDecimal, getBigDecimal, getBigDecimal, getBigDecimal, getBinaryStream, getBinaryStream, getBlob, getBlob, getBoolean, getBoolean, getByte, getByte, getBytes, getBytes, getCharacterStream, getCharacterStream, getClob, getClob, getConcurrency, getCursorName, getDate, getDate, getDate, getDate, getDouble, getDouble, getFetchDirection, getFetchSize, getFloat, getFloat, getInt, getInt, getLong, getLong, getMetaData, getObject, getObject, getObject, getObject, getRef, getRef, getRow, getShort, getShort, getStatement, getString, getString, getTime, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isFirst, isLast, last, moveToCurrentRow, moveToInsertRow, next, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setFetchDirection, setFetchSize, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateShort, updateShort, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp, wasNull
 
インタフェース javax.sql.rowset.Joinable から継承されたメソッド
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn
 

メソッドの詳細

setFilter

void setFilter(Predicate p)
               throws SQLException
この FilteredRowSet オブジェクトに、指定されたプレディケートオブジェクトを適用します。フィルタは、着信ビューと送信ビューの両方を制御し、可視の行や操作可能な行を制限します。

新しいプレディケートオブジェクトはいつでも設定可能です。設定すると、RowSet オブジェクトのデータに課された制約が変更されます。また、複数のコンポーネントが単一の FilteredRowSet で処理されるため、実行時にフィルタを変更すると、問題が発生します。アプリケーション開発者は、配下のプレディケートオブジェクトが変更されたとき、FilteredRowSet オブジェクトの複数のハンドルを管理する責任を負う必要があります。

パラメータ:
p - この FilteredRowSet オブジェクトのフィルタを定義するプレディケートオブジェクト。null 値を設定すると、すべての行を可視状態にする predicate が消去される
例外:
SQLException - プレディケートオブジェクトの設定時にエラーが発生した場合

getFilter

Predicate getFilter()
この FilteredRowSet オブジェクトのアクティブなフィルタを取得します。

戻り値:
p この FilteredRowSet オブジェクトのプレディケート。フィルタが設定されていない場合は null

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。