org.enhydra.shark
Class BasicFilterBuilder

java.lang.Object
  extended by org.enhydra.shark.BasicFilterBuilder
Direct Known Subclasses:
ActivityFilterBuilderDODS, AssignmentFilterBuilderDODS, ProcessFilterBuilderDODS, ProcessMgrFilterBuilderDODS, ResourceFilterBuilderDODS

public abstract class BasicFilterBuilder
extends java.lang.Object

BasicExpressionBuilder implements core expression builder functionality.

Version:
0.21
Author:
V.Puskas

Field Summary
protected static char delimiter
           
protected static java.lang.String objectid_column_name
           
static java.lang.String PARAM_NAME_OBJECTID_COLUMN_NAME
           
static java.lang.String PARAM_NAME_RESPECT_MULTI_WILDCARDS_FOR_CONTAINS
           
static java.lang.String PARAM_NAME_RESPECT_SINGLE_WILDCARDS_FOR_CONTAINS
           
static java.lang.String PARAM_NAME_STRING_DELIMITER
           
static java.lang.String PARAM_NAME_USE_UPERCASE_STRING_QUERIES
           
static java.lang.String PARAM_NAME_VARIABLE_MODEL
           
protected static boolean respectMultiWildcardsForContains
           
protected static boolean respectSingleWildcardsForContains
           
protected static boolean usingStandardVariableModel
           
protected static boolean usingUppercaseStringQueries
           
 
Constructor Summary
protected BasicFilterBuilder(java.util.Properties p)
          There are several parameters needed for expression building to work properly.
 
Method Summary
protected  WMFilter _and(WMFilter[] fs)
           
protected  WMFilter _or(WMFilter[] fs)
           
 WMFilter addBshExpression(WMSessionHandle shandle, WMFilter filter, java.lang.String bshExpr)
          Appends arbitrary condition Here you may specify any script compatible expression, but beware complete expression will be evaluated inside Java VM , not on DB.
protected  WMFilter addContains(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String value)
           
protected  WMFilter addContainsWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, java.lang.String value, java.lang.String sqlEndPart)
           
protected  WMFilter addEquals(int filterType, java.lang.String java_name, java.lang.String sql_name, long value)
           
protected  WMFilter addEquals(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String value)
           
protected  WMFilter addEqualsWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, double value, java.lang.String sqlEndPart)
           
protected  WMFilter addEqualsWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, long value, java.lang.String sqlEndPart)
           
protected  WMFilter addEqualsWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, java.lang.String value, java.lang.String sqlEndPart)
           
protected  WMFilter addEqualsWithSubQueryForVariables(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart1, java.lang.String sqlInPart2, java.lang.String vName, double vValue, java.lang.String sqlEndPart)
           
protected  WMFilter addEqualsWithSubQueryForVariables(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart1, java.lang.String sqlInPart2, java.lang.String vName, long vValue, java.lang.String sqlEndPart)
           
protected  WMFilter addEqualsWithSubQueryForVariables(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart1, java.lang.String sqlInPart2, java.lang.String vName, java.lang.String vValue, java.lang.String sqlEndPart)
           
protected  WMFilter addEqualsWithSubQueryTwice(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, java.lang.String value, java.lang.String sqlMiddlePart, java.lang.String sqlEndPart)
           
protected  WMFilter addGreaterThan(int filterType, java.lang.String java_name, java.lang.String sql_name, long value)
           
protected  WMFilter addGreaterThanWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, double value, java.lang.String sqlEndPart)
           
protected  WMFilter addGreaterThanWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, long value, java.lang.String sqlEndPart)
           
protected  WMFilter addGreaterThanWithSubQueryForVariables(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart1, java.lang.String sqlInPart2, java.lang.String vName, double vValue, java.lang.String sqlEndPart)
           
protected  WMFilter addGreaterThanWithSubQueryForVariables(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart1, java.lang.String sqlInPart2, java.lang.String vName, long vValue, java.lang.String sqlEndPart)
           
protected  WMFilter addLessThan(int filterType, java.lang.String java_name, java.lang.String sql_name, long value)
           
protected  WMFilter addLessThanWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, double value, java.lang.String sqlEndPart)
           
protected  WMFilter addLessThanWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, long value, java.lang.String sqlEndPart)
           
protected  WMFilter addLessThanWithSubQueryForVariables(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart1, java.lang.String sqlInPart2, java.lang.String vName, double vValue, java.lang.String sqlEndPart)
           
protected  WMFilter addLessThanWithSubQueryForVariables(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart1, java.lang.String sqlInPart2, java.lang.String vName, long vValue, java.lang.String sqlEndPart)
           
protected  void addNewPropertyUsed(WMFilter filter, java.lang.String prop, java.lang.String propVal)
           
protected  WMFilter addNotNull(int filterType, java.lang.String java_name, java.lang.String sql_name)
           
protected  WMFilter addStartsWith(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String value)
           
protected  WMFilter addStartsWithSubQuery(int filterType, java.lang.String java_name, java.lang.String sql_name, java.lang.String sqlInPart, java.lang.String value, java.lang.String sqlEndPart)
           
 WMFilter and(WMSessionHandle shandle, WMFilter f1, WMFilter f2)
           
 WMFilter andForArray(WMSessionHandle shandle, WMFilter[] fs)
           
protected  void checkSecurity(WMSessionHandle shandle, java.lang.String methodName, java.util.Map d)
           
 WMFilter createEmptyFilter(WMSessionHandle shandle)
           
protected  char getDelimiter()
          Some database vendors are peculiar about string(CHAR) delimiters, thus need for its indirect usage.
protected  java.lang.String getEqualityOperation()
           
 java.lang.String getIteratorEmptyExpression(WMSessionHandle shandle)
           
protected  java.lang.String getSQLUpperCaseIfNeccessary(java.lang.String field)
           
protected  java.lang.String getUpperCaseIfNeccessary(java.lang.String value)
           
 WMFilter not(WMSessionHandle shandle, WMFilter f)
           
 WMFilter or(WMSessionHandle shandle, WMFilter f1, WMFilter f2)
           
 WMFilter orForArray(WMSessionHandle shandle, WMFilter[] fs)
           
 WMFilter setLimit(WMSessionHandle shandle, WMFilter f, int limit)
           
protected  WMFilter setOrderBy(WMFilter filter, java.lang.String column, boolean ascending)
           
 WMFilter setStartPosition(WMSessionHandle shandle, WMFilter f, int startAt)
           
 java.lang.String toIteratorExpression(WMSessionHandle shandle, WMFilter filter)
           
protected  java.lang.String whatsUsed(WMFilter filter)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delimiter

protected static char delimiter

usingStandardVariableModel

protected static boolean usingStandardVariableModel

usingUppercaseStringQueries

protected static boolean usingUppercaseStringQueries

respectMultiWildcardsForContains

protected static boolean respectMultiWildcardsForContains

respectSingleWildcardsForContains

protected static boolean respectSingleWildcardsForContains

objectid_column_name

protected static java.lang.String objectid_column_name

PARAM_NAME_STRING_DELIMITER

public static final java.lang.String PARAM_NAME_STRING_DELIMITER
See Also:
Constant Field Values

PARAM_NAME_OBJECTID_COLUMN_NAME

public static final java.lang.String PARAM_NAME_OBJECTID_COLUMN_NAME
See Also:
Constant Field Values

PARAM_NAME_VARIABLE_MODEL

public static final java.lang.String PARAM_NAME_VARIABLE_MODEL
See Also:
Constant Field Values

PARAM_NAME_USE_UPERCASE_STRING_QUERIES

public static final java.lang.String PARAM_NAME_USE_UPERCASE_STRING_QUERIES
See Also:
Constant Field Values

PARAM_NAME_RESPECT_MULTI_WILDCARDS_FOR_CONTAINS

public static final java.lang.String PARAM_NAME_RESPECT_MULTI_WILDCARDS_FOR_CONTAINS
See Also:
Constant Field Values

PARAM_NAME_RESPECT_SINGLE_WILDCARDS_FOR_CONTAINS

public static final java.lang.String PARAM_NAME_RESPECT_SINGLE_WILDCARDS_FOR_CONTAINS
See Also:
Constant Field Values
Constructor Detail

BasicFilterBuilder

protected BasicFilterBuilder(java.util.Properties p)
There are several parameters needed for expression building to work properly. Constructor parameter may contain: ExpressionBuilder.StringDelimiter and DatabaseManager.ObjectIdColumnName.

Parameters:
p - property object: probably Shark.getInstance().getProperties(), but we're nop picky :-) it could even be null in which case we'll use hardcoded defaults for configurable parameters
Method Detail

getDelimiter

protected char getDelimiter()
Some database vendors are peculiar about string(CHAR) delimiters, thus need for its indirect usage.

Returns:
currently configured delimiter

and

public WMFilter and(WMSessionHandle shandle,
                    WMFilter f1,
                    WMFilter f2)
             throws java.lang.Exception
Throws:
java.lang.Exception

andForArray

public WMFilter andForArray(WMSessionHandle shandle,
                            WMFilter[] fs)
                     throws java.lang.Exception
Throws:
java.lang.Exception

_and

protected WMFilter _and(WMFilter[] fs)

or

public WMFilter or(WMSessionHandle shandle,
                   WMFilter f1,
                   WMFilter f2)
            throws java.lang.Exception
Throws:
java.lang.Exception

orForArray

public WMFilter orForArray(WMSessionHandle shandle,
                           WMFilter[] fs)
                    throws java.lang.Exception
Throws:
java.lang.Exception

_or

protected WMFilter _or(WMFilter[] fs)

not

public WMFilter not(WMSessionHandle shandle,
                    WMFilter f)
             throws java.lang.Exception
Throws:
java.lang.Exception

setStartPosition

public WMFilter setStartPosition(WMSessionHandle shandle,
                                 WMFilter f,
                                 int startAt)
                          throws java.lang.Exception
Throws:
java.lang.Exception

setLimit

public WMFilter setLimit(WMSessionHandle shandle,
                         WMFilter f,
                         int limit)
                  throws java.lang.Exception
Throws:
java.lang.Exception

getSQLUpperCaseIfNeccessary

protected java.lang.String getSQLUpperCaseIfNeccessary(java.lang.String field)

getUpperCaseIfNeccessary

protected java.lang.String getUpperCaseIfNeccessary(java.lang.String value)

getEqualityOperation

protected java.lang.String getEqualityOperation()

addEquals

protected WMFilter addEquals(int filterType,
                             java.lang.String java_name,
                             java.lang.String sql_name,
                             java.lang.String value)

addNotNull

protected WMFilter addNotNull(int filterType,
                              java.lang.String java_name,
                              java.lang.String sql_name)

addEquals

protected WMFilter addEquals(int filterType,
                             java.lang.String java_name,
                             java.lang.String sql_name,
                             long value)

addGreaterThan

protected WMFilter addGreaterThan(int filterType,
                                  java.lang.String java_name,
                                  java.lang.String sql_name,
                                  long value)

addLessThan

protected WMFilter addLessThan(int filterType,
                               java.lang.String java_name,
                               java.lang.String sql_name,
                               long value)

addGreaterThanWithSubQuery

protected WMFilter addGreaterThanWithSubQuery(int filterType,
                                              java.lang.String java_name,
                                              java.lang.String sql_name,
                                              java.lang.String sqlInPart,
                                              long value,
                                              java.lang.String sqlEndPart)

addGreaterThanWithSubQueryForVariables

protected WMFilter addGreaterThanWithSubQueryForVariables(int filterType,
                                                          java.lang.String java_name,
                                                          java.lang.String sql_name,
                                                          java.lang.String sqlInPart1,
                                                          java.lang.String sqlInPart2,
                                                          java.lang.String vName,
                                                          long vValue,
                                                          java.lang.String sqlEndPart)

addLessThanWithSubQuery

protected WMFilter addLessThanWithSubQuery(int filterType,
                                           java.lang.String java_name,
                                           java.lang.String sql_name,
                                           java.lang.String sqlInPart,
                                           long value,
                                           java.lang.String sqlEndPart)

addLessThanWithSubQueryForVariables

protected WMFilter addLessThanWithSubQueryForVariables(int filterType,
                                                       java.lang.String java_name,
                                                       java.lang.String sql_name,
                                                       java.lang.String sqlInPart1,
                                                       java.lang.String sqlInPart2,
                                                       java.lang.String vName,
                                                       long vValue,
                                                       java.lang.String sqlEndPart)

addEqualsWithSubQuery

protected WMFilter addEqualsWithSubQuery(int filterType,
                                         java.lang.String java_name,
                                         java.lang.String sql_name,
                                         java.lang.String sqlInPart,
                                         long value,
                                         java.lang.String sqlEndPart)

addEqualsWithSubQueryForVariables

protected WMFilter addEqualsWithSubQueryForVariables(int filterType,
                                                     java.lang.String java_name,
                                                     java.lang.String sql_name,
                                                     java.lang.String sqlInPart1,
                                                     java.lang.String sqlInPart2,
                                                     java.lang.String vName,
                                                     long vValue,
                                                     java.lang.String sqlEndPart)

addGreaterThanWithSubQuery

protected WMFilter addGreaterThanWithSubQuery(int filterType,
                                              java.lang.String java_name,
                                              java.lang.String sql_name,
                                              java.lang.String sqlInPart,
                                              double value,
                                              java.lang.String sqlEndPart)

addGreaterThanWithSubQueryForVariables

protected WMFilter addGreaterThanWithSubQueryForVariables(int filterType,
                                                          java.lang.String java_name,
                                                          java.lang.String sql_name,
                                                          java.lang.String sqlInPart1,
                                                          java.lang.String sqlInPart2,
                                                          java.lang.String vName,
                                                          double vValue,
                                                          java.lang.String sqlEndPart)

addLessThanWithSubQuery

protected WMFilter addLessThanWithSubQuery(int filterType,
                                           java.lang.String java_name,
                                           java.lang.String sql_name,
                                           java.lang.String sqlInPart,
                                           double value,
                                           java.lang.String sqlEndPart)

addLessThanWithSubQueryForVariables

protected WMFilter addLessThanWithSubQueryForVariables(int filterType,
                                                       java.lang.String java_name,
                                                       java.lang.String sql_name,
                                                       java.lang.String sqlInPart1,
                                                       java.lang.String sqlInPart2,
                                                       java.lang.String vName,
                                                       double vValue,
                                                       java.lang.String sqlEndPart)

addEqualsWithSubQuery

protected WMFilter addEqualsWithSubQuery(int filterType,
                                         java.lang.String java_name,
                                         java.lang.String sql_name,
                                         java.lang.String sqlInPart,
                                         double value,
                                         java.lang.String sqlEndPart)

addEqualsWithSubQueryForVariables

protected WMFilter addEqualsWithSubQueryForVariables(int filterType,
                                                     java.lang.String java_name,
                                                     java.lang.String sql_name,
                                                     java.lang.String sqlInPart1,
                                                     java.lang.String sqlInPart2,
                                                     java.lang.String vName,
                                                     double vValue,
                                                     java.lang.String sqlEndPart)

addEqualsWithSubQuery

protected WMFilter addEqualsWithSubQuery(int filterType,
                                         java.lang.String java_name,
                                         java.lang.String sql_name,
                                         java.lang.String sqlInPart,
                                         java.lang.String value,
                                         java.lang.String sqlEndPart)

addEqualsWithSubQueryForVariables

protected WMFilter addEqualsWithSubQueryForVariables(int filterType,
                                                     java.lang.String java_name,
                                                     java.lang.String sql_name,
                                                     java.lang.String sqlInPart1,
                                                     java.lang.String sqlInPart2,
                                                     java.lang.String vName,
                                                     java.lang.String vValue,
                                                     java.lang.String sqlEndPart)

addEqualsWithSubQueryTwice

protected WMFilter addEqualsWithSubQueryTwice(int filterType,
                                              java.lang.String java_name,
                                              java.lang.String sql_name,
                                              java.lang.String sqlInPart,
                                              java.lang.String value,
                                              java.lang.String sqlMiddlePart,
                                              java.lang.String sqlEndPart)

addStartsWith

protected WMFilter addStartsWith(int filterType,
                                 java.lang.String java_name,
                                 java.lang.String sql_name,
                                 java.lang.String value)

addStartsWithSubQuery

protected WMFilter addStartsWithSubQuery(int filterType,
                                         java.lang.String java_name,
                                         java.lang.String sql_name,
                                         java.lang.String sqlInPart,
                                         java.lang.String value,
                                         java.lang.String sqlEndPart)

addContainsWithSubQuery

protected WMFilter addContainsWithSubQuery(int filterType,
                                           java.lang.String java_name,
                                           java.lang.String sql_name,
                                           java.lang.String sqlInPart,
                                           java.lang.String value,
                                           java.lang.String sqlEndPart)

addContains

protected WMFilter addContains(int filterType,
                               java.lang.String java_name,
                               java.lang.String sql_name,
                               java.lang.String value)

addBshExpression

public WMFilter addBshExpression(WMSessionHandle shandle,
                                 WMFilter filter,
                                 java.lang.String bshExpr)
                          throws java.lang.Exception
Appends arbitrary condition

Here you may specify any script compatible expression, but beware complete expression will be evaluated inside Java VM , not on DB.

Parameters:
bshExpr - condition to add
Returns:
itself
Throws:
java.lang.Exception

setOrderBy

protected WMFilter setOrderBy(WMFilter filter,
                              java.lang.String column,
                              boolean ascending)

createEmptyFilter

public WMFilter createEmptyFilter(WMSessionHandle shandle)
                           throws java.lang.Exception
Throws:
java.lang.Exception

toIteratorExpression

public java.lang.String toIteratorExpression(WMSessionHandle shandle,
                                             WMFilter filter)
                                      throws java.lang.Exception
Throws:
java.lang.Exception

getIteratorEmptyExpression

public java.lang.String getIteratorEmptyExpression(WMSessionHandle shandle)
                                            throws java.lang.Exception
Throws:
java.lang.Exception

addNewPropertyUsed

protected void addNewPropertyUsed(WMFilter filter,
                                  java.lang.String prop,
                                  java.lang.String propVal)

whatsUsed

protected java.lang.String whatsUsed(WMFilter filter)

checkSecurity

protected void checkSecurity(WMSessionHandle shandle,
                             java.lang.String methodName,
                             java.util.Map d)
                      throws java.lang.Exception
Throws:
java.lang.Exception