Package net.sf.saxon.expr.flwor
Class WindowClause
- java.lang.Object
-
- net.sf.saxon.expr.flwor.Clause
-
- net.sf.saxon.expr.flwor.WindowClause
-
public class WindowClause extends Clause
Implements an XQuery 3.0 sliding or tumbling window clause within a FLWOR expression
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
WindowClause.Window
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
Fields Modifier and Type Field Description static int
END_ITEM
static int
END_ITEM_POSITION
static int
END_NEXT_ITEM
static int
END_PREVIOUS_ITEM
static int
START_ITEM
static int
START_ITEM_POSITION
static int
START_NEXT_ITEM
static int
START_PREVIOUS_ITEM
static int
WINDOW_VAR
-
Constructor Summary
Constructors Constructor Description WindowClause()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
Collect information about the navigation paths followed by this clause, for document projection purposesprotected void
checkWindowContents(WindowClause.Window w)
Clause
copy(FLWORExpression flwor, RebindingMap rebindings)
Create a copy of this clausevoid
explain(ExpressionPresenter out)
Diagnostic print of expression structure.Clause.ClauseName
getClauseKey()
Get a keyword identifying what kind of clause this isExpression
getEndCondition()
ItemTypeCheckingFunction
getItemTypeChecker()
TuplePull
getPullStream(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 modifiesTuplePush
getPushStream(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 streamLocalVariableBinding[]
getRangeVariables()
Get the variables bound by this clauseExpression
getSequence()
Expression
getStartCondition()
LocalVariableBinding
getVariableBinding(int role)
void
initEndCondition(FLWORExpression flwor, Expression endCondition)
void
initSequence(FLWORExpression flwor, Expression sequence)
void
initStartCondition(FLWORExpression flwor, Expression startCondition)
boolean
isIncludeUnclosedWindows()
Ask whether windows that are unclosed at the end of the sequence should be included in the resultboolean
isSlidingWindow()
Ask whether this is a sliding or tumbling windowboolean
isTumblingWindow()
Ask whether this is a sliding or tumbling windowboolean
isWindowMustBeSingleton()
protected static Sequence
makeValue(Item item)
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 clause-
Methods inherited from class net.sf.saxon.expr.flwor.Clause
containsNonInlineableVariableReference, gatherVariableReferences, getConfiguration, getLocation, getPackageData, getTraceInfo, isRepeated, optimize, refineVariableType, setLocation, setPackageData, setRepeated, toShortString
-
-
-
-
Field Detail
-
WINDOW_VAR
public static final int WINDOW_VAR
- See Also:
- Constant Field Values
-
START_ITEM
public static final int START_ITEM
- See Also:
- Constant Field Values
-
START_ITEM_POSITION
public static final int START_ITEM_POSITION
- See Also:
- Constant Field Values
-
START_PREVIOUS_ITEM
public static final int START_PREVIOUS_ITEM
- See Also:
- Constant Field Values
-
START_NEXT_ITEM
public static final int START_NEXT_ITEM
- See Also:
- Constant Field Values
-
END_ITEM
public static final int END_ITEM
- See Also:
- Constant Field Values
-
END_ITEM_POSITION
public static final int END_ITEM_POSITION
- See Also:
- Constant Field Values
-
END_PREVIOUS_ITEM
public static final int END_PREVIOUS_ITEM
- See Also:
- Constant Field Values
-
END_NEXT_ITEM
public static final int END_NEXT_ITEM
- See Also:
- Constant Field Values
-
-
Method Detail
-
getClauseKey
public Clause.ClauseName 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
public void initSequence(FLWORExpression flwor, Expression sequence)
-
setSequence
public void setSequence(Expression sequence)
-
getSequence
public Expression getSequence()
-
initStartCondition
public void initStartCondition(FLWORExpression flwor, Expression startCondition)
-
setStartCondition
public void setStartCondition(Expression startCondition)
-
getStartCondition
public Expression getStartCondition()
-
initEndCondition
public void initEndCondition(FLWORExpression flwor, Expression endCondition)
-
setEndCondition
public void setEndCondition(Expression endCondition)
-
getEndCondition
public Expression getEndCondition()
-
setVariableBinding
public void setVariableBinding(int role, LocalVariableBinding binding) throws XPathException
- Throws:
XPathException
-
getVariableBinding
public LocalVariableBinding getVariableBinding(int role)
-
getItemTypeChecker
public ItemTypeCheckingFunction 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
protected void checkWindowContents(WindowClause.Window w) throws XPathException
- Throws:
XPathException
-
copy
public Clause copy(FLWORExpression flwor, RebindingMap rebindings)
Description copied from class:Clause
Create a copy of this clause
-
getPullStream
public TuplePull getPullStream(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 modifies- Specified by:
getPullStream
in classClause
- Parameters:
base
- the input tuple streamcontext
- the dynamic evaluation context- Returns:
- the output tuple stream
-
getPushStream
public TuplePush getPushStream(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 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
public void processOperands(OperandProcessor processor) throws XPathException
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
public void addToPathMap(PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet)
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
public LocalVariableBinding[] getRangeVariables()
Get the variables bound by this clause- Overrides:
getRangeVariables
in classClause
- Returns:
- the variable bindings
-
explain
public void explain(ExpressionPresenter out) throws XPathException
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
-
-