Интерфейс 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 Implementation, использующих как соглашения об идентификации столбцов.
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
evaluate(Object value,
int column) Этот метод вызывается объектом |
boolean |
evaluate(Object value,
String columnName) Этот метод вызывается объектом |
boolean |
evaluate(RowSet rs) Этот метод обычно вызывается внутренними методами объекта |
Методы
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, 2020, 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.