Package net.sf.saxon.expr.flwor
Class WindowClause
java.lang.Object
net.sf.saxon.expr.flwor.Clause
net.sf.saxon.expr.flwor.WindowClause
Implements an XQuery 3.0 sliding or tumbling window clause within a FLWOR expression
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class
Information about a window: the items making up the window, as well as the variables relating to the start and end of the window, and the status of the winoow in relation to the processing of the current input sequence.Nested classes/interfaces inherited from class net.sf.saxon.expr.flwor.Clause
Clause.ClauseName
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addToPathMap
(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet) Collect information about the navigation paths followed by this clause, for document projection purposesprotected void
copy
(FLWORExpression flwor, RebindingMap rebindings) Create a copy of this clausevoid
Diagnostic print of expression structure.Get a keyword identifying what kind of clause this isgetPullStream
(TuplePull base, XPathContext context) Get a pull-mode tuple stream that implements the functionality of this clause, taking its input from another tuple stream which this clause modifiesgetPushStream
(TuplePush destination, Outputter output, XPathContext context) Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple streamGet the variables bound by this clausegetVariableBinding
(int role) void
initEndCondition
(FLWORExpression flwor, Expression endCondition) void
initSequence
(FLWORExpression flwor, Expression sequence) void
initStartCondition
(FLWORExpression flwor, Expression startCondition) boolean
Ask whether windows that are unclosed at the end of the sequence should be included in the resultboolean
Ask whether this is a sliding or tumbling windowboolean
Ask whether this is a sliding or tumbling windowboolean
protected static Sequence
protected boolean
matchesEnd
(WindowClause.Window window, Item previous, Item current, Item next, int position, XPathContext context) Determine whether the current item is the last item in a windowprotected boolean
matchesStart
(Item previous, Item current, Item next, int position, XPathContext context) Determine whether the current item is the start of a new windowvoid
processOperands
(OperandProcessor processor) Process the subexpressions of this clausevoid
setEndCondition
(Expression endCondition) void
setIncludeUnclosedWindows
(boolean include) Say whether windows that are unclosed at the end of the sequence should be included in the resultvoid
setIsSlidingWindow
(boolean sliding) Say whether this is a sliding or tumbling windowvoid
setSequence
(Expression sequence) void
setStartCondition
(Expression startCondition) void
setVariableBinding
(int role, LocalVariableBinding binding) void
typeCheck
(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) Type-check any expression contained within this clauseMethods inherited from class net.sf.saxon.expr.flwor.Clause
containsNonInlineableVariableReference, gatherVariableReferences, getConfiguration, getLocation, getPackageData, getTraceInfo, isRepeated, optimize, refineVariableType, setLocation, setPackageData, setRepeated, toShortString
-
Field Details
-
WINDOW_VAR
public static final int WINDOW_VAR- See Also:
-
START_ITEM
public static final int START_ITEM- See Also:
-
START_ITEM_POSITION
public static final int START_ITEM_POSITION- See Also:
-
START_PREVIOUS_ITEM
public static final int START_PREVIOUS_ITEM- See Also:
-
START_NEXT_ITEM
public static final int START_NEXT_ITEM- See Also:
-
END_ITEM
public static final int END_ITEM- See Also:
-
END_ITEM_POSITION
public static final int END_ITEM_POSITION- See Also:
-
END_PREVIOUS_ITEM
public static final int END_PREVIOUS_ITEM- See Also:
-
END_NEXT_ITEM
public static final int END_NEXT_ITEM- See Also:
-
-
Constructor Details
-
WindowClause
public WindowClause()
-
-
Method Details
-
getClauseKey
Description copied from class:Clause
Get a keyword identifying what kind of clause this is- Specified by:
getClauseKey
in classClause
- Returns:
- the kind of clause
-
setIsSlidingWindow
public void setIsSlidingWindow(boolean sliding) Say whether this is a sliding or tumbling window- Parameters:
sliding
- true if this is a sliding window, false for a tumbling window
-
isSlidingWindow
public boolean isSlidingWindow()Ask whether this is a sliding or tumbling window- Returns:
- true if this is a sliding window, false for a tumbling window
-
isTumblingWindow
public boolean isTumblingWindow()Ask whether this is a sliding or tumbling window- Returns:
- false if this is a sliding window, true for a tumbling window
-
setIncludeUnclosedWindows
public void setIncludeUnclosedWindows(boolean include) Say whether windows that are unclosed at the end of the sequence should be included in the result- Parameters:
include
- true if unclosed windows are to be included in the result
-
isIncludeUnclosedWindows
public boolean isIncludeUnclosedWindows()Ask whether windows that are unclosed at the end of the sequence should be included in the result- Returns:
- true if unclosed windows are to be included in the result
-
initSequence
-
setSequence
-
getSequence
-
initStartCondition
-
setStartCondition
-
getStartCondition
-
initEndCondition
-
setEndCondition
-
getEndCondition
-
setVariableBinding
- Throws:
XPathException
-
getVariableBinding
-
getItemTypeChecker
-
isWindowMustBeSingleton
public boolean isWindowMustBeSingleton() -
typeCheck
public void typeCheck(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) throws XPathException Description copied from class:Clause
Type-check any expression contained within this clause- Overrides:
typeCheck
in classClause
- Parameters:
visitor
- the ExpressionVisitor, providing access to static context informationcontextInfo
- static information about the dynamic context- Throws:
XPathException
- if any error is detected
-
checkWindowContents
- Throws:
XPathException
-
copy
Description copied from class:Clause
Create a copy of this clause -
getPullStream
Get a pull-mode tuple stream that implements the functionality of this clause, taking its input from another tuple stream which this clause modifies- Specified by:
getPullStream
in classClause
- Parameters:
base
- the input tuple streamcontext
- the dynamic evaluation context- Returns:
- the output tuple stream
-
getPushStream
Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple stream- Specified by:
getPushStream
in classClause
- Parameters:
destination
- the output tuple streamoutput
- the destination for the resultcontext
- the dynamic evaluation context- Returns:
- the push tuple stream that implements the functionality of this clause of the FLWOR expression
-
processOperands
Process the subexpressions of this clause- Specified by:
processOperands
in classClause
- Parameters:
processor
- the expression processor used to process the subexpressions- Throws:
XPathException
- if any error is detected
-
addToPathMap
Description copied from class:Clause
Collect information about the navigation paths followed by this clause, for document projection purposes- Specified by:
addToPathMap
in classClause
- Parameters:
pathMap
- the path map in which the data is to be collectedpathMapNodeSet
- the path map node set representing the paths to the context item
-
getRangeVariables
Get the variables bound by this clause- Overrides:
getRangeVariables
in classClause
- Returns:
- the variable bindings
-
explain
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.- Specified by:
explain
in classClause
- Parameters:
out
- the expression presenter used to display the structure- Throws:
XPathException
- if any error occurs
-
matchesStart
protected boolean matchesStart(Item previous, Item current, Item next, int position, XPathContext context) throws XPathException Determine whether the current item is the start of a new window- Parameters:
previous
- the item before the current item (null if the current item is the first)current
- the current itemnext
- the item after the current item (null if the current item is the last)position
- the position of the current item in the input sequencecontext
- the dynamic evaluation context- Returns:
- true if the current item forms the start of a new window
- Throws:
XPathException
- if a failure occurs evaluating the conditions
-
matchesEnd
protected boolean matchesEnd(WindowClause.Window window, Item previous, Item current, Item next, int position, XPathContext context) throws XPathException Determine whether the current item is the last item in a window- Parameters:
window
- the window in questionprevious
- the item before the current item (null if the current item is the first)current
- the current itemnext
- the item after the current item (null if the current item is the last)position
- the position of the current item in the input sequencecontext
- the dynamic evaluation context- Returns:
- true if the current item is the last item in the specified window
- Throws:
XPathException
- if a failure occurs evaluating the conditions
-
makeValue
-