|
© 2002 BEA Systems, Inc. | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--com.bea.p13n.content.expression.ExpressionHelper
Helper class to handle dealing with content Expressions.
For details on what content expression should look like, see
parse
.
Inner Class Summary | |
static interface |
ExpressionHelper.ParseException
Exception to report an error while parsing a query expression. |
Field Summary | |
static java.lang.String |
AND
Syntax textual and logical operator. |
static java.lang.String |
CONTAINS
Syntax textual contains operator. |
static java.lang.String |
CONTAINS_ALL
Syntax textual contains all operator. |
static java.text.DateFormat |
defDateFormat
The default date formatter. |
static java.lang.String |
defDateFormatStr
The default datetime format string in the content expression syntax ("MM/dd/yyyy HH:mm:ss z"). |
static java.lang.String |
EQUALS
Syntax textual equals operator. |
static java.lang.String |
GREATER_THAN
Syntax textual greater than operator. |
static java.lang.String |
GREATER_THAN_EQUALS
Syntax textual greater than or equals operator. |
static java.lang.String |
LESS_THAN
Syntax textual less than operator. |
static java.lang.String |
LESS_THAN_EQUALS
Syntax textual less than or equals operator. |
static java.lang.String |
LIKE
Syntax textual like operator. |
static java.lang.String |
LIKE_IGNORECASE
Syntax textual case-insensitive like operator. |
static java.lang.String |
NOT_EQUALS
Syntax textual not equals operator. |
static java.lang.String |
OR
Syntax textual or logical operator. |
Constructor Summary | |
ExpressionHelper()
|
Method Summary | |
static ExpressionHelper.ParseException |
convertException(java.lang.Exception excep)
Convert a generic exception into a ParseException. |
static java.lang.String |
fromStringLiteral(java.lang.String in)
Convert a String literal (which may contain quoted characters) into a corresponding String value. |
static java.lang.String |
getComparator(Expression expr)
Get the syntax comparator textual operator for the given leaf node. |
static java.lang.String |
getContentId(Expression expr)
Return the content id from the expression, if it's an expression for a single content object based upon identifier. |
static Search |
getContentIdSearch(java.lang.String contentId)
Get a search object for a single content based upon the supplied id. |
static PropertyRef |
getLeftHandSide(Expression expr)
Get the left-hand-side of a valid leaf node, which should be a PropertyRef |
static java.lang.String |
getLogicalComparator(Expression expr)
Get the syntax logical comparator textual operator for the given branch node. |
static int |
getOrdinalValue(char ch)
Get the ordinal (Unicode) value of a character. |
static java.lang.Object |
getRightHandSide(Expression expr)
Get the right-hand-side of a valid leaf node. |
static Expression |
getSubExpression(Expression expr,
int count)
|
static boolean |
isHexString(java.lang.String str)
Determine if a string contains only ASCII hexidecimal characters ([0-9a-fA-F]). |
static Expression |
isLogicalNot(Expression expr)
Tell if an expression is really a logical not and, if so, returned the contained expression. |
static boolean |
isValidBranchNode(Expression expr)
Tell if an expression is a valid content branch node type. |
static boolean |
isValidLeafNode(Expression expr)
Tell if an expression is a valid content leaf node type. |
static LogicalAnd |
join(Expression expr1,
Expression expr2)
Join together two expression via an AND expression. |
static Expression |
normalize(Expression expr)
Normalize an Expression. |
static Expression |
parse(java.lang.String queryStr)
Convert a query expression string into an Expression object. |
static void |
print(java.io.PrintWriter out,
Expression expr)
Print a string representation of the given expression. |
static void |
printBranchNode(java.io.PrintWriter out,
Expression expr)
Return a string representation of the given expression branch. |
static void |
printLeafNode(java.io.PrintWriter out,
Expression expr)
Return a string representation of the given leaf expression node. |
static void |
printTree(int depth,
java.io.PrintWriter out,
Expression expr)
For debug purposes, print the given expression as a tree at the given depth. |
static void |
printTree(java.io.PrintWriter out,
Expression expr)
For debug purposes, print the given expression as a tree. |
static java.lang.String |
toString(Expression expr)
Get a string representation of the given expression. |
static java.lang.String |
toStringLiteral(java.lang.String in)
Get an ASCII String literal from a Java string. |
static java.lang.String |
toTree(Expression expr)
For debug purposes, return a tree representation of the given expression. |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
Field Detail |
public static final java.lang.String defDateFormatStr
public static final java.text.DateFormat defDateFormat
public static final java.lang.String EQUALS
public static final java.lang.String NOT_EQUALS
public static final java.lang.String GREATER_THAN
public static final java.lang.String LESS_THAN
public static final java.lang.String GREATER_THAN_EQUALS
public static final java.lang.String LESS_THAN_EQUALS
public static final java.lang.String LIKE
public static final java.lang.String LIKE_IGNORECASE
public static final java.lang.String CONTAINS
public static final java.lang.String CONTAINS_ALL
public static final java.lang.String AND
public static final java.lang.String OR
Constructor Detail |
public ExpressionHelper()
Method Detail |
public static Expression parse(java.lang.String queryStr) throws ExpressionHelper.ParseException, java.lang.IllegalArgumentException
The string should follow the query syntax specified in the
Personalization Server documentation. The expression syntax is
tree-based, with each leaf in the tree beinging of the form "property
comparator value" (e.g. "identifier == '1234'
").
This specifies the object property to match against.
To specify a property name which contains non-identifier
characters (e.g. whitespace, double quotes,
dashes), you can use the
toProperty('property name')
"properyset.name
" form or the
toProperty('propertyset', 'property')
"
The valid comparision operators are =
(or
==
),
!=
, <
, >
,
<=
, >=
, "like
",
"likeignorecase
" and "contains
".
The "like
" and "likeignorecase
" operator expects
the pattern (which is the value of the leaf) to use *
(match
all) and ?
(match any); "like
" and
"likeignorecase
" also is only expected to work against String
values, although it might work with other datatypes depending upon the
search implementation. "like
" operator does case-sensitive
pattern match, while "likeignorecase
" operator does case-
insensitive pattern match.
The "contains
" operator is only expected to work against
multi-valued properties, although it might work with other datatypes
depending upon the search implementation.
\u6565
"),
octal (e.g. "\7
", "\65
",
"\377
"), and standard Java escape sequences (e.g.
"\n
", "\r
", "\b
") are
allowed in the string literals.
true
" or
"false
" keyword (without quotes).
toDate(['formatStr'],
'dateStr')
"formatStr
must be a valid
SimpleDateFormat
format
string; if omitted, MM/dd/yyyy HH:mm:ss z
'now
" keyword specifies the time at
which the expression was created.
Each branch in the tree is comprised of 1 or more leafs or branches
separated by either "&&
" (boolean AND) or
"||
" (boolean OR).
They can be enclosed in parenthesis for clearity and ordering (AND has
precendance over OR). Additionally, "!
" marks a branch as
using negative logic (boolean NOT). The "!
" operator
can only be used preceding an open parenthesis.
Examples of valid expression strings:
In the resulting expression tree, the following caveats apply for it to be valid for the ContentManager:
queryStr
- the query expression stringconvertException(java.lang.Exception)
,
normalize(com.bea.p13n.expression.Expression)
public static LogicalAnd join(Expression expr1, Expression expr2)
expr1
- the first expression.expr2
- the second expression.public static Search getContentIdSearch(java.lang.String contentId)
public static java.lang.String getContentId(Expression expr)
public static Expression normalize(Expression expr) throws java.lang.IllegalArgumentException
This will recursively remove branches that contain only one Expression (which are boolean equivelant to the one child expression) or that contain no children (which are considered empty).
expr
- the incoming expression.public static Expression isLogicalNot(Expression expr)
expr
- the expression.public static boolean isValidLeafNode(Expression expr)
public static boolean isValidBranchNode(Expression expr)
public static java.lang.String toString(Expression expr) throws java.lang.IllegalArgumentException
Pretty much, a string generated from this method can be parse()'ed into the equivalent (not neccessarily identical) expression tree.
expr
- the expression.public static void print(java.io.PrintWriter out, Expression expr) throws java.lang.IllegalArgumentException
Pretty much, a string generated from this method can be parse()'ed into the equivalent (not neccessarily identical) expression tree.
out
- the output writer.expr
- the expression.public static void printLeafNode(java.io.PrintWriter out, Expression expr) throws java.lang.IllegalArgumentException
public static PropertyRef getLeftHandSide(Expression expr) throws java.lang.IllegalArgumentException
public static java.lang.String getComparator(Expression expr) throws java.lang.IllegalArgumentException
public static java.lang.Object getRightHandSide(Expression expr) throws java.lang.IllegalArgumentException
public static void printBranchNode(java.io.PrintWriter out, Expression expr)
public static java.lang.String getLogicalComparator(Expression expr) throws java.lang.IllegalArgumentException
public static Expression getSubExpression(Expression expr, int count) throws java.lang.IllegalArgumentException
public static java.lang.String toTree(Expression expr)
public static void printTree(java.io.PrintWriter out, Expression expr)
out
- the output stream to print on.expr
- the expression.public static void printTree(int depth, java.io.PrintWriter out, Expression expr)
depth
- the depth of this expression in the tree.out
- the output stream to print on.expr
- the expression.public static java.lang.String fromStringLiteral(java.lang.String in)
This supports the standard Java Language Specification escape sequences.
in
- the input string literal.public static boolean isHexString(java.lang.String str)
public static java.lang.String toStringLiteral(java.lang.String in)
This will quote some special characters with back-slashes.
The output of this can be sent through fromStringLiteral(java.lang.String)
to result in the original String.
public static int getOrdinalValue(char ch)
public static ExpressionHelper.ParseException convertException(java.lang.Exception excep)
|
© 2002 BEA Systems, Inc. | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |