Интерфейс 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, которые используют оба соглашения об идентификации столбцов.
- Since:
- 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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.sql.rowset/javax/sql/rowset/Predicate.html