com.saxonica.expr.flwor
Class WindowClause

java.lang.Object
  extended by net.sf.saxon.expr.flwor.Clause
      extended by com.saxonica.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
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.
 
Field Summary
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
           
 
Fields inherited from class net.sf.saxon.expr.flwor.Clause
COUNT, FOR, GROUPBYCLAUSE, LET, ORDERBYCLAUSE, WHERE, WINDOW
 
Constructor Summary
WindowClause()
           
 
Method Summary
 Clause copy()
           
 void explain(ExpressionPresenter out)
          Diagnostic print of expression structure.
 int getClauseKey()
          Get a keyword identifying what kind of clause this is
 Expression getEndCondition()
           
 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
 TuplePush getPushStream(TuplePush destination, XPathContext context)
          Get a push-mode tuple stream that implements the functionality of this clause, supplying its output to another tuple stream
 LocalVariableBinding[] getRangeVariables()
          Get the variables bound by this clause
 Expression getSequence()
           
 Expression getStartCondition()
           
 LocalVariableBinding getVariableBinding(int role)
           
 boolean isIncludeUnclosedWindows()
           
 boolean isSlidingWindow()
           
 boolean isTumblingWindow()
           
protected static ValueRepresentation 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 window
protected  boolean matchesStart(Item previous, Item current, Item next, int position, XPathContext context)
          Determine whether the current item is the start of a new window
 void processSubExpressions(ExpressionProcessor processor)
          Process the subexpressions of this clause
 void setEndCondition(Expression endCondition)
           
 void setIncludeUnclosedWindows(boolean include)
           
 void setIsSlidingWindow(boolean sliding)
           
 void setSequence(Expression sequence)
           
 void setStartCondition(Expression startCondition)
           
 void setVariableBinding(int role, LocalVariableBinding binding)
           
 
Methods inherited from class net.sf.saxon.expr.flwor.Clause
gatherVariableReferences, optimize, refineVariableType, typeCheck
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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
Constructor Detail

WindowClause

public WindowClause()
Method Detail

getClauseKey

public int getClauseKey()
Description copied from class: Clause
Get a keyword identifying what kind of clause this is

Specified by:
getClauseKey in class Clause
Returns:
the kind of clause

setIsSlidingWindow

public void setIsSlidingWindow(boolean sliding)

isSlidingWindow

public boolean isSlidingWindow()

isTumblingWindow

public boolean isTumblingWindow()

setIncludeUnclosedWindows

public void setIncludeUnclosedWindows(boolean include)

isIncludeUnclosedWindows

public boolean isIncludeUnclosedWindows()

setSequence

public void setSequence(Expression sequence)

getSequence

public Expression getSequence()

setStartCondition

public void setStartCondition(Expression startCondition)

getStartCondition

public Expression getStartCondition()

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)

copy

public Clause copy()
Specified by:
copy in class 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 class Clause
Parameters:
base - the input tuple stream
context - the dynamic evaluation context
Returns:
the output tuple stream

getPushStream

public TuplePush getPushStream(TuplePush destination,
                               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 class Clause
Parameters:
destination - the output tuple stream
context - the dynamic evaluation context
Returns:
the push tuple stream that implements the functionality of this clause of the FLWOR expression

processSubExpressions

public void processSubExpressions(ExpressionProcessor processor)
                           throws XPathException
Process the subexpressions of this clause

Specified by:
processSubExpressions in class Clause
Parameters:
processor - the expression processor used to process the subexpressions
Throws:
XPathException - if any error is detected

getRangeVariables

public LocalVariableBinding[] getRangeVariables()
Get the variables bound by this clause

Overrides:
getRangeVariables in class Clause
Returns:
the variable bindings

explain

public void explain(ExpressionPresenter out)
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.

Specified by:
explain in class Clause
Parameters:
out - the expression presenter used to display the structure

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 item
next - the item after the current item (null if the current item is the last)
position - the position of the current item in the input sequence
context - the dynamic evaluation context
Returns:
true if the current item forms the start of a new window
Throws:
XPathException

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 question
previous - the item before the current item (null if the current item is the first)
current - the current item
next - the item after the current item (null if the current item is the last)
position - the position of the current item in the input sequence
context - the dynamic evaluation context
Returns:
true if the current item is the last item in the specified window
Throws:
XPathException

makeValue

protected static ValueRepresentation makeValue(Item item)


Copyright (c) 2004-2011 Saxonica Limited. All rights reserved.