com.wm.app.tn.db
Class Query

java.lang.Object
  extended by com.wm.app.tn.db.Query
Direct Known Subclasses:
BDTypeAttributeQuery, BDTypeQuery, DeliveryJobQuery, DeliveryServiceQuery, EventQuery, InviteQuery, ProfileQuery, RouteQuery, SimpleDocQuery, TPAQuery

public abstract class Query
extends java.lang.Object

Abstract superclass of the query generators (SimpleDocQuery et al). Contains useful operations for generating SQL, as well as constants defining operators and functions to apply. Most of this is not useful unless you're writing a subclass.


Field Summary
static java.lang.String ACTLOG_EVENT_TIMESTAMP
           
static java.lang.String BDTYPE_LASTMODIFIED
           
static java.lang.String DJOB_TIME_CREATED
           
static java.lang.String DJOB_TIME_UPDATED
           
static java.lang.String DOC_TIMESTAMP
           
static java.lang.String FN_AVG
           
static java.lang.String FN_MAX
           
static java.lang.String FN_MIN
           
static java.lang.String FN_SUM
           
static java.lang.String INVITE_ALERTDATE
           
static java.lang.String INVITE_EXPIRYDATE
           
static java.lang.String INVITE_LASTSENT
           
static java.lang.String OP_COMP_AFTER
           
static java.lang.String OP_COMP_BEFORE
           
static java.lang.String OP_COMP_CONTAINS
           
static java.lang.String OP_COMP_EQ
           
static java.lang.String OP_COMP_GEQ
           
static java.lang.String OP_COMP_GT
           
static java.lang.String OP_COMP_INCLUDES
           
static java.lang.String OP_COMP_LEQ
           
static java.lang.String OP_COMP_LT
           
static java.lang.String OP_COMP_NEQ
           
static java.lang.String OP_MATCHES
           
static java.lang.String OP_TEST_NOT_NULL
           
static java.lang.String OP_TEST_NULL
           
static int TIME_ANYTIME
           
static int TIME_CUSTOM
           
static int TIME_LAST_7_DAYS
           
static int TIME_LAST_MONTH
           
static int TIME_LAST_WEEK
           
static int TIME_NEXT_10_MIN
           
static int TIME_NEXT_12_HOURS
           
static int TIME_NEXT_24_HOURS
           
static int TIME_NEXT_3_HOURS
           
static int TIME_NEXT_30_MIN
           
static int TIME_NEXT_6_HOURS
           
static int TIME_NEXT_HOUR
           
static java.lang.String TIME_SINCE
           
static int TIME_THIS_MONTH
           
static int TIME_THIS_WEEK
           
static int TIME_TODAY
           
static int TIME_TOMORROW
           
static java.lang.String TIME_UNTIL
           
static int TIME_YESTERDAY
           
static int TIME_YTD
           
static java.lang.String TPA_CREATED
           
static java.lang.String TPA_LASTMODIFIED
           
static int TYPE_DATE
           
static int TYPE_NUMBER
           
static int TYPE_STRING
           
 
Constructor Summary
Query()
           
 
Method Summary
static void beginningOfDay(java.util.Calendar c)
          Moves a calendar to the beginning of the day it's on
static java.lang.String escapeString(java.lang.String s)
           
static boolean evaluate(java.lang.String value, java.lang.String op, java.lang.String target, boolean number)
           
static boolean evaluateListConditions(java.lang.Object value, java.lang.String op, java.lang.String target, java.lang.String attribType)
           
static java.lang.String generateClause(java.lang.String col, java.lang.Object val, boolean contains)
           
static java.lang.String generateClause(java.lang.String col, java.lang.Object val, boolean contains, boolean ignoreCase)
          Generate a comparison or a number of comparisons for the given column.
static java.lang.String generateColumnList(java.util.Vector cols)
          For internal use only
static java.lang.String generateComp(java.lang.String op, java.lang.String val, int type)
          Generate a comparison (without a column name).
static java.lang.String generateComp(java.lang.String op, java.lang.String val, int type, boolean forceLikeOp)
           
static java.lang.String generateComp(java.lang.String op, java.lang.String val, int type, boolean forceLikeOp, boolean includeUpper)
           
static java.lang.String generateListComp(java.lang.String op, java.lang.String val, int type)
          Generate a comparison for list type attributes (without a column name).
static java.lang.String generateNumericClause(java.lang.String col, java.lang.Object val)
          Generates clauses for Numeric fields in DB, such as Deleted/Persist etc.
static java.lang.String generateStringLit(java.lang.String s, boolean like)
          Turn a Java String into a valid SQL string literal by bracketing it with single quotes if necessary.
static java.lang.String generateStringLit(java.lang.String s, boolean like, boolean contains)
           
static java.sql.Timestamp[] generateTimeInterval(int which)
          Generates an interval based on one of the constant interval descriptors (see above).
static java.lang.String generateTimestampLiteral(java.lang.String s)
          For internal use only
static int getIntervalType(java.lang.String s)
           
static java.lang.String getUnique(java.lang.String op)
          For internal use only
static boolean isDateTime(java.lang.String op)
           
 boolean isDistinct()
           
 boolean isIndentSql()
           
 boolean isOR()
           
 void preSql()
          For internal use only
static java.lang.String searchMWS(java.lang.String s)
           
 void setAlertTimeInterval(java.sql.Timestamp since, java.sql.Timestamp until)
           
 void setDistinct(boolean flag)
           
 void setExpiryTimeInterval(java.sql.Timestamp since, java.sql.Timestamp until)
           
 void setIndentSql(boolean flag)
           
 void setLastReminderInterval(java.sql.Timestamp since, java.sql.Timestamp until)
           
 void setOR(boolean flag)
           
 void setSortColumns(java.lang.String[][] columnOrder)
           
 void setTimeInterval(java.sql.Timestamp since, java.sql.Timestamp until)
           
 void setViewPermission(java.lang.String viewPermission)
           
 java.lang.String toSql()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DOC_TIMESTAMP

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

DJOB_TIME_CREATED

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

DJOB_TIME_UPDATED

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

ACTLOG_EVENT_TIMESTAMP

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

TPA_CREATED

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

TPA_LASTMODIFIED

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

BDTYPE_LASTMODIFIED

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

INVITE_EXPIRYDATE

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

INVITE_ALERTDATE

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

INVITE_LASTSENT

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

TIME_SINCE

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

TIME_UNTIL

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

TIME_CUSTOM

public static final int TIME_CUSTOM
See Also:
Constant Field Values

TIME_ANYTIME

public static final int TIME_ANYTIME
See Also:
Constant Field Values

TIME_TODAY

public static final int TIME_TODAY
See Also:
Constant Field Values

TIME_YESTERDAY

public static final int TIME_YESTERDAY
See Also:
Constant Field Values

TIME_LAST_7_DAYS

public static final int TIME_LAST_7_DAYS
See Also:
Constant Field Values

TIME_THIS_WEEK

public static final int TIME_THIS_WEEK
See Also:
Constant Field Values

TIME_LAST_WEEK

public static final int TIME_LAST_WEEK
See Also:
Constant Field Values

TIME_THIS_MONTH

public static final int TIME_THIS_MONTH
See Also:
Constant Field Values

TIME_LAST_MONTH

public static final int TIME_LAST_MONTH
See Also:
Constant Field Values

TIME_YTD

public static final int TIME_YTD
See Also:
Constant Field Values

TIME_NEXT_10_MIN

public static final int TIME_NEXT_10_MIN
See Also:
Constant Field Values

TIME_NEXT_30_MIN

public static final int TIME_NEXT_30_MIN
See Also:
Constant Field Values

TIME_NEXT_HOUR

public static final int TIME_NEXT_HOUR
See Also:
Constant Field Values

TIME_NEXT_3_HOURS

public static final int TIME_NEXT_3_HOURS
See Also:
Constant Field Values

TIME_NEXT_6_HOURS

public static final int TIME_NEXT_6_HOURS
See Also:
Constant Field Values

TIME_NEXT_12_HOURS

public static final int TIME_NEXT_12_HOURS
See Also:
Constant Field Values

TIME_NEXT_24_HOURS

public static final int TIME_NEXT_24_HOURS
See Also:
Constant Field Values

TIME_TOMORROW

public static final int TIME_TOMORROW
See Also:
Constant Field Values

FN_MAX

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

FN_MIN

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

FN_AVG

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

FN_SUM

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

OP_TEST_NULL

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

OP_TEST_NOT_NULL

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

OP_COMP_EQ

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

OP_COMP_CONTAINS

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

OP_COMP_NEQ

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

OP_COMP_GEQ

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

OP_COMP_LEQ

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

OP_COMP_LT

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

OP_COMP_GT

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

OP_COMP_BEFORE

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

OP_COMP_AFTER

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

OP_COMP_INCLUDES

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

OP_MATCHES

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

TYPE_STRING

public static final int TYPE_STRING
See Also:
Constant Field Values

TYPE_NUMBER

public static final int TYPE_NUMBER
See Also:
Constant Field Values

TYPE_DATE

public static final int TYPE_DATE
See Also:
Constant Field Values
Constructor Detail

Query

public Query()
Method Detail

toSql

public java.lang.String toSql()
Returns:
the SQL statement generated by this query

preSql

public void preSql()
For internal use only


setSortColumns

public void setSortColumns(java.lang.String[][] columnOrder)

isOR

public boolean isOR()

setOR

public void setOR(boolean flag)

isDistinct

public boolean isDistinct()

setDistinct

public void setDistinct(boolean flag)

isIndentSql

public boolean isIndentSql()

setIndentSql

public void setIndentSql(boolean flag)

setViewPermission

public void setViewPermission(java.lang.String viewPermission)

generateColumnList

public static java.lang.String generateColumnList(java.util.Vector cols)
For internal use only


getIntervalType

public static int getIntervalType(java.lang.String s)
Returns:
interval code for name (e.g. "TIME_TODAY" will return the code for TIME_TODAY

generateTimestampLiteral

public static java.lang.String generateTimestampLiteral(java.lang.String s)
For internal use only


beginningOfDay

public static void beginningOfDay(java.util.Calendar c)
Moves a calendar to the beginning of the day it's on

Parameters:
c - the calendar to move

generateTimeInterval

public static java.sql.Timestamp[] generateTimeInterval(int which)
Generates an interval based on one of the constant interval descriptors (see above).

Parameters:
which - the interval to use
Returns:
the interval as { start, end } where either could be null

setTimeInterval

public void setTimeInterval(java.sql.Timestamp since,
                            java.sql.Timestamp until)

setAlertTimeInterval

public void setAlertTimeInterval(java.sql.Timestamp since,
                                 java.sql.Timestamp until)

setExpiryTimeInterval

public void setExpiryTimeInterval(java.sql.Timestamp since,
                                  java.sql.Timestamp until)

setLastReminderInterval

public void setLastReminderInterval(java.sql.Timestamp since,
                                    java.sql.Timestamp until)

getUnique

public static java.lang.String getUnique(java.lang.String op)
For internal use only


isDateTime

public static boolean isDateTime(java.lang.String op)
Returns:
is the supplied operation a datetime operation?

generateStringLit

public static java.lang.String generateStringLit(java.lang.String s,
                                                 boolean like)
Turn a Java String into a valid SQL string literal by bracketing it with single quotes if necessary. Also bracket with '%' chars if it's to be used in a like clause.


generateStringLit

public static java.lang.String generateStringLit(java.lang.String s,
                                                 boolean like,
                                                 boolean contains)

generateComp

public static java.lang.String generateComp(java.lang.String op,
                                            java.lang.String val,
                                            int type)
Generate a comparison (without a column name).

Parameters:
op - the operation to use for the comparison
val - the value to compare with. If the op is a CONTAINS, it will be bracketed with "%"s.
type - the type attribute being compared (see the TYPE_* comments)
Returns:
something that looks like this: "= 7", or "LIKE '%xxx%'"

generateComp

public static java.lang.String generateComp(java.lang.String op,
                                            java.lang.String val,
                                            int type,
                                            boolean forceLikeOp)

generateComp

public static java.lang.String generateComp(java.lang.String op,
                                            java.lang.String val,
                                            int type,
                                            boolean forceLikeOp,
                                            boolean includeUpper)

generateListComp

public static java.lang.String generateListComp(java.lang.String op,
                                                java.lang.String val,
                                                int type)
Generate a comparison for list type attributes (without a column name).

Parameters:
op - the operation to use for the comparison
val - the value to compare with. If the op is a INCLUDES, it will be bracketed with "%"s.
type - the type attribute being compared (see the TYPE_* comments)
Returns:
something that looks like this: "= 7", or "LIKE '%xxx%'"

generateClause

public static java.lang.String generateClause(java.lang.String col,
                                              java.lang.Object val,
                                              boolean contains)

generateClause

public static java.lang.String generateClause(java.lang.String col,
                                              java.lang.Object val,
                                              boolean contains,
                                              boolean ignoreCase)
Generate a comparison or a number of comparisons for the given column.

Parameters:
col - the column name
val - the value to compare with. if val instanceof String, generate one "=" or "LIKE" comparison else if val String[] generate an IN statement else if val instanceof IData generate a number of comparisons using the opVal pair and boolean isOR specified in the IData else if val instanceof ProfileQuery generate a IN subquery statement (a profile query)
contains - true if it's a LIKE statement
Returns:
part of a SQL stamtement like this: d.Comments = 'revised by xxx' OR d.Comments = 'revised by yyy'

generateNumericClause

public static java.lang.String generateNumericClause(java.lang.String col,
                                                     java.lang.Object val)
Generates clauses for Numeric fields in DB, such as Deleted/Persist etc. When a query for such field has multiple criteria it saved as IData which has these fields in String format and should be handled differently using the current method. It supports IData, Integer and String as value.

Parameters:
col - the column name
val - the value to compare with. if val instanceof IData generate a number of comparisons with "=" comparator using values and boolean isOR specified in the IData else if val instanceof Integer, generate one "=" comparison else val instanceof String, generate one "=" comparison
Returns:
part of a SQL statement like this: bdadef.Deleted = 1 OR bdadef.Deleted = 0

evaluate

public static boolean evaluate(java.lang.String value,
                               java.lang.String op,
                               java.lang.String target,
                               boolean number)
                        throws java.text.ParseException
Throws:
java.text.ParseException

evaluateListConditions

public static boolean evaluateListConditions(java.lang.Object value,
                                             java.lang.String op,
                                             java.lang.String target,
                                             java.lang.String attribType)
                                      throws java.lang.Exception
Throws:
java.lang.Exception

escapeString

public static java.lang.String escapeString(java.lang.String s)

searchMWS

public static java.lang.String searchMWS(java.lang.String s)