|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.exist.xquery.AbstractExpression
org.exist.xquery.PathExpr
org.exist.xquery.BinaryOp
org.exist.xquery.GeneralComparison
A general XQuery/XPath2 comparison expression.
| Field Summary | |
protected CachedResult |
cached
The class might cache the entire results of a previous execution. |
protected Expression |
collationArg
Extra argument (to standard functions starts-with/contains etc.) to indicate the collation to be used for string comparisons. |
protected boolean |
inWhereClause
Set to true if this expression is called within the where clause of a FLWOR expression. |
protected int |
relation
The type of operator used for the comparison, i.e. |
protected int |
truncation
Truncation flags: when comparing with a string value, the search string may be truncated with a single * wildcard. |
| Fields inherited from class org.exist.xquery.PathExpr |
inPredicate, keepVirtual, LOG, source, steps |
| Fields inherited from class org.exist.xquery.AbstractExpression |
astNode, context, contextDocSet, contextId |
| Fields inherited from interface org.exist.xquery.Expression |
EXPRESSION_ID_INVALID, IGNORE_CONTEXT, IN_PREDICATE, IN_UPDATE, IN_WHERE_CLAUSE, NO_CONTEXT_ID, SINGLE_STEP_EXECUTION |
| Constructor Summary | |
GeneralComparison(XQueryContext context,
Expression left,
Expression right,
int relation)
|
|
GeneralComparison(XQueryContext context,
Expression left,
Expression right,
int relation,
int truncation)
|
|
GeneralComparison(XQueryContext context,
int relation)
|
|
GeneralComparison(XQueryContext context,
int relation,
int truncation)
|
|
| Method Summary | |
void |
analyze(AnalyzeContextInfo contextInfo)
Statically analyze the expression and its subexpressions. |
static boolean |
compareAtomic(java.text.Collator collator,
AtomicValue lv,
AtomicValue rv,
boolean backwardsCompatible,
int truncation,
int relation)
|
protected boolean |
compareValues(java.text.Collator collator,
AtomicValue lv,
AtomicValue rv)
Cast the atomic operands into a comparable type and compare them. |
void |
dump(ExpressionDumper dumper)
Write a diagnostic dump of the expression to the passed ExpressionDumper. |
Sequence |
eval(Sequence contextSequence,
Item contextItem)
Evaluate the expression represented by this object. |
protected Sequence |
genericCompare(Sequence contextSequence,
Item contextItem)
Generic, slow implementation. |
protected java.text.Collator |
getCollator(Sequence contextSequence)
|
int |
getDependencies()
Returns Dependency.DEFAULT_DEPENDENCIES. |
protected Sequence |
nodeSetCompare(NodeSet nodes,
Sequence contextSequence)
|
protected Sequence |
nodeSetCompare(Sequence contextSequence)
Optimized implementation, which can be applied if the left operand returns a node set. |
protected Sequence |
quickNodeSetCompare(Sequence contextSequence)
Optimized implementation: first checks if a range index is defined on the nodes in the left argument. |
void |
resetState()
Called to inform an expression that it should reset to its initial state. |
int |
returnsType()
The static return type of the expression. |
void |
setCollation(Expression collationArg)
|
protected void |
simplify()
Possibly switch operands to simplify execution |
protected void |
switchOperands()
|
java.lang.String |
toString()
|
| Methods inherited from class org.exist.xquery.BinaryOp |
getLeft, getRight, setContextDocSet, setLeft, setRight |
| Methods inherited from class org.exist.xquery.PathExpr |
add, add, addPath, addPredicate, dump, getASTNode, getContext, getDocumentSet, getExpression, getLastExpression, getLength, getLiteralValue, getSource, isValid, replaceLastExpression, reset, setContext, setPrimaryAxis, setSource |
| Methods inherited from class org.exist.xquery.AbstractExpression |
eval, getCardinality, getContextDocSet, getContextId, getExpressionId, setASTNode |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.exist.xquery.CompiledXQuery |
eval |
| Field Detail |
protected int relation
Constants.
protected int truncation
Constants.
The standard functions starts-with, ends-with and contains are
transformed into a general comparison with wildcard. Hence the need
to consider wildcards here.
protected CachedResult cached
protected Expression collationArg
protected boolean inWhereClause
| Constructor Detail |
public GeneralComparison(XQueryContext context,
int relation)
public GeneralComparison(XQueryContext context,
int relation,
int truncation)
public GeneralComparison(XQueryContext context,
Expression left,
Expression right,
int relation)
public GeneralComparison(XQueryContext context,
Expression left,
Expression right,
int relation,
int truncation)
| Method Detail |
public void analyze(AnalyzeContextInfo contextInfo)
throws XPathException
Expression
analyze in interface Expressionanalyze in class BinaryOpXPathExceptionpublic int returnsType()
ExpressionType. If the return type cannot be determined
statically, return Type.ITEM.
returnsType in interface ExpressionreturnsType in class BinaryOppublic int getDependencies()
AbstractExpressionDependency.DEFAULT_DEPENDENCIES.
getDependencies in interface ExpressiongetDependencies in class PathExpr
public Sequence eval(Sequence contextSequence,
Item contextItem)
throws XPathException
ExpressionDependency.CONTEXT_ITEM
bit is set in the bit field returned by Expression.getDependencies(), the eval method will
be called once for every item in the context sequence. The contextItem
parameter will be set to the current item. Otherwise, the eval method will only be called
once for the whole context sequence and contextItem will be null.
eXist tries to process the entire context set in one, single step whenever
possible. Thus, most classes only expect context to contain a list of
nodes which represents the current context of the expression.
The position() function in XPath is an example for an expression,
which requires both, context sequence and context item to be set.
The context sequence might be a node set, a sequence of atomic values or a single
node or atomic value.
eval in interface Expressioneval in class BinaryOpXPathException
protected Sequence genericCompare(Sequence contextSequence,
Item contextItem)
throws XPathException
contextSequence - contextItem -
XPathException
protected Sequence nodeSetCompare(Sequence contextSequence)
throws XPathException
XPathException
protected Sequence nodeSetCompare(NodeSet nodes,
Sequence contextSequence)
throws XPathException
XPathException
protected Sequence quickNodeSetCompare(Sequence contextSequence)
throws XPathException
nodeSetCompare(NodeSet, Sequence).
XPathException
protected boolean compareValues(java.text.Collator collator,
AtomicValue lv,
AtomicValue rv)
throws XPathException
XPathException
public static boolean compareAtomic(java.text.Collator collator,
AtomicValue lv,
AtomicValue rv,
boolean backwardsCompatible,
int truncation,
int relation)
throws XPathException
XPathExceptionpublic void dump(ExpressionDumper dumper)
ExpressionExpressionDumper.
dump in interface Expressiondump in class PathExprpublic java.lang.String toString()
toString in class PathExprprotected void switchOperands()
protected void simplify()
protected java.text.Collator getCollator(Sequence contextSequence)
throws XPathException
XPathExceptionpublic void setCollation(Expression collationArg)
public void resetState()
Expression
resetState in interface ExpressionresetState in class PathExpr
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||