-
public interface Predicate
为所有FilteredRowSet
对象提供框架来描述其过滤器的标准接口。1.0背景
Predicate
接口是应用程序可以实现的一个标准接口,用于定义要应用于FilteredRowSet
对象的过滤器。 一个FilteredRowSet
对象消耗了该接口的实现,并强制执行方法evaluate
定义的约束。 AFilteredRowSet
对象以双向方式实施过滤器约束:它仅输出在过滤器的约束内的行; 相反,它仅插入,修改或更新在过滤器的约束内的行。2.0实施指引
为了提供FilteredRowSet
的谓词。 这个接口必须实现。 此时,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; } }
上面的例子实现了一个简单的范围谓词。 请注意,不应提供
String
和基于整数索引的构造函数来实现应用程序,以提供使用列标识约定的JDBC RowSet实现应用程序。- 从以下版本开始:
- 1.5
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 boolean
evaluate(Object value, int column)
该方法由FilteredRowSet
对象调用,以检查值是否位于使用setFilter()
方法设置的过滤条件(或存在多个约束的条件)setFilter()
。boolean
evaluate(Object value, String columnName)
该方法由FilteredRowSet
对象调用,以检查该值是否位于使用setFilter方法设置的过滤条件之间。boolean
evaluate(RowSet rs)
这个方法通常被称为一个FilteredRowSet
对象的内部方法(不是public),它控制着RowSet
对象的光标从一行移动到另一个。
-
-
-
方法详细信息
-
evaluate
boolean evaluate(RowSet rs)
此方法通常称为FilteredRowSet
对象内部方法(非公开),可控制RowSet
对象的光标从行移动到下一个。 另外,如果这个内部方法将光标移动到已被删除的行上,内部方法将继续使用光标,直到找到有效的行。- 参数
-
rs
- 要评估的RowSet
- 结果
-
true
如果过滤器中有更多行; 否则为false
-
evaluate
boolean evaluate(Object value, int column) throws SQLException
该方法由一个FilteredRowSet
对象调用,以检查该值是否位于使用setFilter()
方法设置的过滤条件(或存在多个约束的条件)setFilter()
。FilteredRowSet
对象将在内部使用此方法,同时向FilteredRowSet
实例插入新行。- 参数
-
value
- 需要检查的Object
值,是否可以成为此FilterRowSet
对象的一部分。 -
column
- 一个int
对象,必须与此RowSet
对象中的列的SQL索引相匹配。 这必须已经传递给Predicate
作为过滤列之一,而初始化一个Predicate
- 结果
-
true
如果行值位于过滤器内; 否则为false
- 异常
-
SQLException
- 如果列不是过滤条件的一部分
-
evaluate
boolean evaluate(Object value, String columnName) throws SQLException
该方法由FilteredRowSet
对象调用,以检查该值是否在使用setFilter方法设置的过滤条件之间。FilteredRowSet
对象将在内部使用此方法,而将新行插入到一个FilteredRowSet
实例中。- 参数
-
value
- 需要检查的Object
值,是否可以作为此FilterRowSet
一部分。 -
columnName
- 一个String
对象,必须匹配此RowSet
列的SQL名称,忽略大小写。 这必须已经传递给Predicate
作为过滤列之一,而初始化一个Predicate
- 结果
-
true
如果值位于过滤器内;false
否则 - 异常
-
SQLException
- 如果列不是过滤条件的一部分
-
-