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 purposes
    `void` | `checkWindowContents​(WindowClause.Window w)` |
    `Clause` | `copy​(FLWORExpression flwor, RebindingMap rebindings)` | Create a copy of this clause
    `void` | `explain​(ExpressionPresenter out)` | Diagnostic print of expression structure.
    `Clause.ClauseName` | `getClauseKey()` | Get a keyword identifying what kind of clause this is
    `Expression` | `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 modifies
    `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
    `LocalVariableBinding[]` | `getRangeVariables()` | Get the variables bound by this clause
    `Expression` | `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()` |
    `boolean` | `isSlidingWindow()` |
    `boolean` | `isTumblingWindow()` |
    `boolean` | `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 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` | `processOperands​(OperandProcessor 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)` |
    `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`

    - ### 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 Clause.ClauseName 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()

    - #### 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 class `Clause`
      Parameters:
        `visitor` - the ExpressionVisitor, providing access to static context information
        `contextInfo` - static information about the dynamic context
      Throws:
        `XPathException` - if any error is detected

    - #### checkWindowContents

          public 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
      Specified by:
        `copy` in class `Clause`
      Parameters:
        `flwor` - the new FLWORExpression to contain the copied clause
      Returns:
        the copied 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,
                                         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 class `Clause`
      Parameters:
        `destination` - the output tuple stream
        `output` - the destination for the result
        `context` - 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 class `Clause`
      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 class `Clause`
      Parameters:
        `pathMap` - the path map in which the data is to be collected
        `pathMapNodeSet` - 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 class `Clause`
      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 class `Clause`
      Parameters:
        `out` - the expression presenter used to display the structure
      Throws:
        `XPathException`

    - #### 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` - 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 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` - if a failure occurs evaluating the conditions

    - #### makeValue

          protected static Sequence makeValue​(Item item)