Интерфейс Predicate
public interface Predicate
FilteredRowSet объектов, описывающих свои фильтры. 1.0 Общие сведения
ИнтерфейсPredicate — это стандартный интерфейс, который приложения могут реализовать для определения фильтра, который они хотят применить к объекту FilteredRowSet. Объект FilteredRowSet использует реализации этого интерфейса и применяет ограничения, определенные в реализации метода evaluate. Объект FilteredRowSet применяет ограничения фильтра в двунаправленном режиме: он выводит только строки, которые соответствуют ограничениям фильтра; и наоборот, он вставляет, изменяет или обновляет только строки, которые соответствуют ограничениям фильтра. 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
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
evaluate |
Этот метод вызывается объектом FilteredRowSet для проверки, находится ли значение в пределах критерия фильтрации (или критериев, если существуют несколько ограничений), установленных с помощью метода setFilter(). |
boolean |
evaluate |
Этот метод вызывается объектом FilteredRowSet для проверки, находится ли значение в пределах критериев фильтрации, установленных с помощью метода setFilter. |
boolean |
evaluate |
Этот метод обычно вызывается внутренними методами объекта FilteredRowSet, которые управляют перемещением курсора объекта RowSet от строки к следующей. |
Подробное описание методов
evaluate
boolean evaluate(RowSet rs)
FilteredRowSet, которые управляют перемещением курсора объекта RowSet от строки к следующей. Кроме того, если этот внутренний метод переместит курсор на удаленную строку, внутренний метод продолжит перемещение курсора до тех пор, пока не будет найдена допустимая строка.- Параметры:
-
rs- ОцениваемыйRowSet - Возвращает:
-
trueесли в фильтре есть ещё строки;falseв противном случае
evaluate
boolean evaluate(Object value, int column) throws SQLException
FilteredRowSet для проверки, находится ли значение в пределах критерия фильтрации (или критериев, если существуют несколько ограничений), установленных с помощью метода setFilter(). Объект FilteredRowSet будет использовать этот метод во время вставки новых строк в экземпляр FilteredRowSet.
- Параметры:
-
value- ЗначениеObject, которое необходимо проверить, может ли оно быть частью этого объектаFilterRowSet. -
column- объектint, который должен соответствовать SQL-индексу столбца в этом объектеRowSet. Это должно было быть передано вPredicateкак один из столбцов для фильтрации при инициализацииPredicate - Возвращает:
-
trueесли значение строки находится в пределах фильтра;falseв противном случае - Исключения:
-
SQLException- если столбец не входит в критерии фильтрации
evaluate
boolean evaluate(Object value, String columnName) throws SQLException
FilteredRowSet для проверки, находится ли значение в пределах критериев фильтрации, установленных с помощью метода setFilter. Объект FilteredRowSet будет использовать этот метод во время вставки новых строк в экземпляр FilteredRowSet.
- Параметры:
-
value- ЗначениеObject, которое необходимо проверить, может ли оно быть частью этого объектаFilterRowSet. -
columnName- объектString, который должен соответствовать SQL-названию столбца в этом объектеRowSet, игнорируя регистр. Это должно было быть передано вPredicateкак один из столбцов для фильтрации при инициализацииPredicate - Возвращает:
-
trueесли значение находится в пределах фильтра;falseв противном случае - Исключения:
-
SQLException- если столбец не входит в критерии фильтрации
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.sql.rowset/javax/sql/rowset/Predicate.html