pt.moredata.dao.pattern
Class SQLPatternBuilder

java.lang.Object
  extended bypt.moredata.dao.pattern.SQLPatternBuilder

public class SQLPatternBuilder
extends java.lang.Object

Esta classe efectua a traducao de um padrao de pesquisa para uma clausula where de um select em SQL. Numerico - N Alfanumerico - A Data - D A seguinte tabela foi elaborada de acordo com a secção "Searh Criteria for Query by Example" do manual "Informix 4GL Reference Manual" versao 7.3 de Julho de 1999. Padrao SQL Tipo de Dados ---------------------------------------------------------------------------- =x columnName = x N A D >x columnName > x N D =x columnName >= x N D <=x columnName <= x N D <>x columnName != x N A D x:y columnName >= x AND columnName <= y N D x..y columnName >= x AND columnName <= y N D *x, x*, *x* columnName like %x, x%, %x% A ?x, x?, ?x?, x?? columnName =like _x, x_, _x_, x__ A a|b columnName = a OR columnName = b N A D >> columnName = (select max(columnName) from tabName) N A D << columnName = (select min(columnName) from tabName) N A D O operador tem de ser o primeiro token encontrado no padrao. Outras ocorrencias de um operador que nao seja no inicio do padrao, sao tratados como fazendo parte do padrao. Para especificar o caracter '*' ou '?' num padrao, deve ser usado o caracter de escape'\', ou seja '\*' ou '\?'. Por defeito se nao for especificado nenhum operador, e usado o operador '='. Para procurar por nulos, deve ser usado apenas o operador '=' sem mais nada. Para procurar por todos os que não são nulos, deve ser usado apenas o operador '<>' sem mais nada.

Version:
$Revision: 1.9 $
Author:
pcarmo

Field Summary
static java.lang.String EQUAL
          Caracter que representa uma igualdade no padrao de pesquisa.
static char ESCAPECHAR
          Caracter usado para representar a barra de escape '\' num padrao de pesquisa.
static java.lang.String GREATER
          Caracter que representa 'maior' no padrao de pesquisa.
static java.lang.String GREATERTHAN
          Caracter que representa 'maior ou igual' no padrao de pesquisa.
static java.lang.String HIGHEST
          Caracter que representa 'maior de todos' no padrao de pesquisa.
static java.lang.String LESS
          Caracter que representa 'menor' no padrao de pesquisa.
static java.lang.String LESSTHAN
          Caracter que representa 'menor ou igual' no padrao de pesquisa.
static java.lang.String LOWEST
          Caracter que representa 'menor de todos' no padrao de pesquisa.
static java.lang.String NOTEQUAL
          Caracter que representa 'diferente' no padrao de pesquisa.
static java.lang.String OR
          Caracter que representa uma conjuncao no padrao de pesquisa.
static java.lang.String RANGE
          Caracter que representa um intervalo de valores no padrao de pesquisa.
static java.lang.String RANGE2
          Caracter que representa um intervalo de valores no padrao de pesquisa.
static char SINGLEWILDCARD
          Caracter usado para representar um qualquer caracter no padrao de pesquisa.
static char WILDCARD
          Caracter usado para representar uma qualquer string no padrao de pesquisa.
 
Constructor Summary
SQLPatternBuilder()
           
 
Method Summary
static java.lang.String build(SQLPattern pattern)
          Constroi uma clausula de WHERE para uma query em SQL a partir de um padrao de pesquisa.
static java.lang.String build(SQLPattern pattern, boolean caseSensitive)
          Constroi uma clausula de WHERE para uma query em SQL a partir de um padrao de pesquisa.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EQUAL

public static final java.lang.String EQUAL
Caracter que representa uma igualdade no padrao de pesquisa.

See Also:
Constant Field Values

GREATER

public static final java.lang.String GREATER
Caracter que representa 'maior' no padrao de pesquisa.

See Also:
Constant Field Values

LESS

public static final java.lang.String LESS
Caracter que representa 'menor' no padrao de pesquisa.

See Also:
Constant Field Values

GREATERTHAN

public static final java.lang.String GREATERTHAN
Caracter que representa 'maior ou igual' no padrao de pesquisa.

See Also:
Constant Field Values

LESSTHAN

public static final java.lang.String LESSTHAN
Caracter que representa 'menor ou igual' no padrao de pesquisa.

See Also:
Constant Field Values

NOTEQUAL

public static final java.lang.String NOTEQUAL
Caracter que representa 'diferente' no padrao de pesquisa.

See Also:
Constant Field Values

RANGE

public static final java.lang.String RANGE
Caracter que representa um intervalo de valores no padrao de pesquisa.

See Also:
Constant Field Values

RANGE2

public static final java.lang.String RANGE2
Caracter que representa um intervalo de valores no padrao de pesquisa.

See Also:
Constant Field Values

OR

public static final java.lang.String OR
Caracter que representa uma conjuncao no padrao de pesquisa.

See Also:
Constant Field Values

HIGHEST

public static final java.lang.String HIGHEST
Caracter que representa 'maior de todos' no padrao de pesquisa.

See Also:
Constant Field Values

LOWEST

public static final java.lang.String LOWEST
Caracter que representa 'menor de todos' no padrao de pesquisa.

See Also:
Constant Field Values

WILDCARD

public static final char WILDCARD
Caracter usado para representar uma qualquer string no padrao de pesquisa.

See Also:
Constant Field Values

SINGLEWILDCARD

public static final char SINGLEWILDCARD
Caracter usado para representar um qualquer caracter no padrao de pesquisa.

See Also:
Constant Field Values

ESCAPECHAR

public static final char ESCAPECHAR
Caracter usado para representar a barra de escape '\' num padrao de pesquisa.

See Also:
Constant Field Values
Constructor Detail

SQLPatternBuilder

public SQLPatternBuilder()
Method Detail

build

public static java.lang.String build(SQLPattern pattern,
                                     boolean caseSensitive)
Constroi uma clausula de WHERE para uma query em SQL a partir de um padrao de pesquisa.

Parameters:
pattern - O padrao de pesquisa.
caseSensitive - Se for true a clausula de where e criada com a funcao LOWER, para permitir realizar um pesquisa case insensitive.
Returns:
Uma clausula de WHERE para uma query em SQL. XXX : Acho que o tipo de campo nao esta a ser muito usado, verificar isto. O tipo de operador encontrado devia ser validado com o tipo de campo, por exemplo, se o campo e do tipo int e foi encontrado o padrao '12345*' devia dar um erro em vez de devolver a clausula "xpto like '12345%'.

build

public static java.lang.String build(SQLPattern pattern)
Constroi uma clausula de WHERE para uma query em SQL a partir de um padrao de pesquisa. A clausula de pesquisa criada e case sensitive.

Parameters:
pattern - O padrao de pesquisa.
Returns:
Uma clausula de WHERE para uma query em SQL.