Интерфейс 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

Methods

Модификатор и тип Метод Описание
boolean evaluate​(Object value, int column)

Этот метод вызывается объектом FilteredRowSet для проверки, находится ли значение в диапазоне, заданном критериями фильтра (или несколькими критериями, если они существуют), установленным методом setFilter().

boolean evaluate​(Object value, String columnName)

Этот метод вызывается объектом FilteredRowSet для проверки, находится ли значение в диапазоне, заданном критериями фильтра, установленным методом setFilter.

boolean evaluate​(RowSet rs)

Этот метод, как правило, вызывается внутренними методами объекта FilteredRowSet (не публичными), которые управляют перемещением курсора объекта RowSet от строки к следующей.

Methods

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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.sql.rowset/javax/sql/rowset/Predicate.html

Spec-Zone .ru
спецификации, руководства, описания, API