org.modeshape.jcr.query.optimize

## Class AddOrderingColumnsToSources

- java.lang.Object
- - org.modeshape.jcr.query.optimize.AddOrderingColumnsToSources

- All Implemented Interfaces:
    OptimizerRule

      public class AddOrderingColumnsToSources
      extends Object
      implements OptimizerRule

  An `OptimizerRule` that adds any missing columns required by the ordering specifications to the SORT node's PROJECT, and to the appropriate access nodes.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static AddOrderingColumnsToSources` | `INSTANCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AddOrderingColumnsToSources()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | `addIfMissing(QueryContext context, Column column, List<Column> columns, List<String> columnTypes)` Check the supplied list of columns for an existing column that matches the supplied `Column`, and if none is found add the supplied Column to the list and add an appropriate type.
    `protected boolean` | `addSortColumn(QueryContext context, PlanNode node, Column sortColumn)` Make sure that the supplied column is included in the `projected columns` on the supplied plan node or its children.
    `protected Column` | `columnFor(SelectorName selector, String property, boolean includeSourceName)`
    `PlanNode` | `execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)` Optimize the supplied plan using the supplied context, hints, and yet-to-be-run rules.
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### INSTANCE

          public static final AddOrderingColumnsToSources INSTANCE

  - ### Constructor Detail

    - #### AddOrderingColumnsToSources

          public AddOrderingColumnsToSources()

  - ### Method Detail

    - #### execute

          public PlanNode execute(QueryContext context,
                         PlanNode plan,
                         LinkedList<OptimizerRule> ruleStack)

      Description copied from interface: `OptimizerRule`
      Optimize the supplied plan using the supplied context, hints, and yet-to-be-run rules.
      Specified by:
        `execute` in interface `OptimizerRule`
      Parameters:
        `context` - the context in which the query is being optimized; never null
        `plan` - the plan to be optimized; never null
        `ruleStack` - the stack of rules that will be run after this rule; never null
      Returns:
        the optimized plan; never null

    - #### addSortColumn

          protected boolean addSortColumn(QueryContext context,
                              PlanNode node,
                              Column sortColumn)

      Make sure that the supplied column is included in the `projected columns` on the supplied plan node or its children.
      Parameters:
        `context` - the query context; may not be null
        `node` - the query plan node
        `sortColumn` - the column required by the sort
      Returns:
        true if the sort column was added, or false if it was already in the `projected columns`

    - #### addIfMissing

          protected boolean addIfMissing(QueryContext context,
                             Column column,
                             List<Column> columns,
                             List<String> columnTypes)

      Check the supplied list of columns for an existing column that matches the supplied `Column`, and if none is found add the supplied Column to the list and add an appropriate type.
      Parameters:
        `context` - the query context
        `column` - the column that will be added if not already in the list; may not be null
        `columns` - the list of columns; may not be null
        `columnTypes` - the list of column types; may not be null
      Returns:
        true if the column was added (i.e., the lists were modified), or false if the lists were not modified

    - #### columnFor

          protected Column columnFor(SelectorName selector,
                         String property,
                         boolean includeSourceName)

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

Copyright © 2008-2014 JBoss, a division of Red Hat. All Rights Reserved.