Spec-Zone.ru › OpenJDK 21

Интерфейс 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(Object value, int column)
Этот метод вызывается объектом FilteredRowSet для проверки, лежит ли значение между критериями фильтрации (или несколькими критериями, если существуют ограничения) установленного с помощью метода setFilter().
boolean evaluate(Object value, String columnName)
Этот метод вызывается объектом FilteredRowSet для проверки, находится ли значение между критериями фильтрации, установленным с помощью метода setFilter.
boolean evaluate(RowSet rs)
Этот метод обычно вызывается внутренними методами объекта 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, 2023, 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/21/docs/api/java.sql.rowset/javax/sql/rowset/Predicate.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API