Интерфейс Predicate
public interface Predicate
FilteredRowSet, описывающих свои фильтры. 1.0 Общие сведения
ИнтерфейсPredicate — это стандартный интерфейс, который приложения могут реализовать, чтобы определить фильтр, который они хотят применить к объекту FilteredRowSet. Объект FilteredRowSet использует реализации этого интерфейса и применяет ограничения, заданные в реализации метода evaluate. Объект FilteredRowSet применяет ограничения фильтра в обоих направлениях: он выводит только строки, удовлетворяющие ограничениям фильтра, и, наоборот, вставляет, изменяет или обновляет только строки, удовлетворяющие ограничениям фильтра. 2.0 Рекомендации по реализации
Чтобы задать предикат дляFilteredRowSet, необходимо реализовать этот интерфейс. В настоящее время в спецификации JDBC RowSet Implementations (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, 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://docs.oracle.com/en/java/javase/25/docs/api/java.sql.rowset/javax/sql/rowset/Predicate.html