JavaTM Platform
Standard Ed. 6

javax.sql.rowset
인터페이스 Predicate



public interface Predicate

모든 FilteredRowSet 객체에 필터를 기술하는 시스템를 제공하는 표준 인터페이스입니다.  

1.0 배경

프레디케이트인타페스는, 어플리케이션이 FilteredRowSet 객체에 적용하는 필터를 정의하기 위해서 구현할 수 있는 표준 인터페이스입니다. FilteredRowSet 객체는, 이 인터페이스의 구현을 사용해,evaluate 메소드의 구현에 정의된 제약을 시행합니다. FilteredRowSet 객체는, 쌍방향 방식에서 필터의 제약을 시행합니다. 즉, 이 객체는, 필터의 제약내의 행만을 출력해, 필터의 제약내의 행만을 삽입, 변경, 또는 갱신합니다.

2.0 구현의 가이드 라인

FilteredRowSet 의 predicate 를 제공하기 위해서는, 이 인터페이스를 구현할 필요가 있습니다. 현시점에서는, JDBC RowSet 구현 (JSR-114)은 표준 필터의 정의를 지정하고 있습니다. FilteredRowSet 인터페이스의 레퍼런스 구현과 벤더 구현의 양쪽 모두로, 폭넓은 필터를 정의해, 전개하기 위한 표준적인 수단과 구조를 지정하는 것으로써, 유연해 어플리케이션 주도의 프레디케이트 구현의 발전으로 연결됩니다.  

샘플 구현은, 다음과 같이 됩니다.

 
    public class Range implements Predicate {

       private Object lo[];
       private Object hi[];
       private int idx[];

       public Range(Object[] lo, Object[] hi, int[] idx) {
          this.lo = lo;
          this.hi = hi;
          this.idx = idx;
       }

      public boolean evaluate(RowSet rs) {
          CachedRowSet crs = (CachedRowSet) rs;
          boolean bool1, bool2;           
       
          // Check the present row determine if it lies
          // within the filtering criteria.  
      
          for (int i = 0; i < idx.length; i++) {
        
                if ((rs.getObject(idx[i]) >= lo[i]) && 
                  (rs.getObject(idx[i]) >= hi[i]) { 
                    bool1 = true; // within filter constraints
          } else {
            bool2 = true; // outside of filter constraints             
          } 
      }
      
      if (bool2) {
         return false;
      } else {
         return true;
      }
  }          
 
 

상기의 예는, 단순한 범위 프레디케이트를 구현합니다. 구현은, 양쪽 모두의 열식별 규칙을 사용한 JDBC RowSet 구현 어플리케이션에 제공되는 String 및 정수 인덱스 베이스의 생성자 을 제공합니다만, 이것은 필수가 아닙니다.


메소드의 개요
 boolean evaluate (Object  value, int column)
          이 메소드는, 값이 setFilter() 메소드를 사용해 설정된 필터링 기준 (복수의 제약이 존재하는 경우는 복수의 기준) 내에 들어가고 있는지 어떤지를 체크하기 위해서,FilteredRowSet 객체에 의해 불려 갑니다.
 boolean evaluate (Object  value, String  columnName)
          이 메소드는, 값이 setFileter 메소드를 사용해 설정된 필터링 기준내에 들어가고 있는지 어떤지를 체크하기 위해서 FilteredRowSet 객체에 의해 불려 갑니다.
 boolean evaluate (RowSet  rs)
          이 메소드는, 일반적으로,RowSet 객체의 커서가 다음의 행에 이동하는 것을 제어하는 FilteredRowSet 객체의 내부 메소드 (비 public)로부터 불려 갑니다.
 

메소드의 상세

evaluate

boolean evaluate(RowSet  rs)
이 메소드는, 일반적으로,RowSet 객체의 커서가 다음의 행에 이동하는 것을 제어하는 FilteredRowSet 객체의 내부 메소드 (비 public)로부터 불려 갑니다. 이 내부 메소드가, 커서를 벌써 삭제된 행에 이동했을 경우, 내부 메소드는 유효한 행이 발견될 때까지 커서의 이동을 계속합니다.

반환값:
필터에 아직 열이 있는 경우는 true, 그렇지 않은 경우는 false

evaluate

boolean evaluate(Object  value,
                 int column)
                 throws SQLException 
이 메소드는, 값이 setFilter() 메소드를 사용해 설정된 필터링 기준 (복수의 제약이 존재하는 경우는 복수의 기준) 내에 들어가고 있는지 어떤지를 체크하기 위해서,FilteredRowSet 객체에 의해 불려 갑니다.  

FilteredRowSet 객체는,FilteredRowSet 인스턴스에 새로운 행을 삽입할 때, 이 메소드를 내부에서 사용합니다.

파라미터:
value - 이 FilterRowSet 객체에 추가할 수 있을지 어떨지 체크할 필요가 있는 Object
column - 이 RowSet 객체의 열의 SQL 인덱스에 일치할 필요가 있는 int 객체. 이것은, 프레디케이트의 초기화시에, 필터링이기 때문에, 열의 1 개로서 프레디케이트에게 건네져 있을 필요가 있다
반환값:
행의 값이 필터내에 들어가는 경우는 true, 그렇지 않은 경우는 false
예외:
SQLException - 열이 필터링 기준내에 없는 경우

evaluate

boolean evaluate(Object  value,
                 String  columnName)
                 throws SQLException 
이 메소드는, 값이 setFileter 메소드를 사용해 설정된 필터링 기준내에 들어가고 있는지 어떤지를 체크하기 위해서 FilteredRowSet 객체에 의해 불려 갑니다.  

FilteredRowSet 객체는,FilteredRowSet 인스턴스에 새로운 행을 삽입할 때, 이 메소드를 내부에서 사용합니다.

파라미터:
value - 이 FilterRowSet 에 추가할 수 있을지 어떨지 체크할 필요가 있는 Object
columnName - 이 RowSet 의 열의 SQL 명에 일치할 필요가 있는 String 객체. 알파벳의 대문자와 소문자는 구별되지 않는다. 이것은, 프레디케이트의 초기화시에, 필터링이기 때문에, 열의 1 개로서 프레디케이트에게 건네져 있을 필요가 있다
반환값:
치가 필터내에 들어가는 경우는 true, 그렇지 않은 경우는 false
예외:
SQLException - 열이 필터링 기준내에 없는 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.