org.modeshape.jcr.query.optimize

## Class RewriteAsRangeCriteria

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

- All Implemented Interfaces:
    OptimizerRule

      @Immutable
      public class RewriteAsRangeCriteria
      extends Object
      implements OptimizerRule

  An `optimizer rule` that rewrites two `AND-ed` `Constraint`s that constraint a dynamic operand to a range of values as a single `Between` constraint. This rule also collapses and removes any constraints that are unnecessary because other constraints are more restrictive or because they cancel out other constraints.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static Constraint` | `CONFLICTING_CONSTRAINT`
    `static RewriteAsRangeCriteria` | `INSTANCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RewriteAsRangeCriteria()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `compareStaticOperands(QueryContext context, Comparison comparison1, Comparison comparison2)` Compare the values used in the two comparisons
    `PlanNode` | `execute(QueryContext context, PlanNode plan, LinkedList<OptimizerRule> ruleStack)` Optimize the supplied plan using the supplied context, hints, and yet-to-be-run rules.
    `protected Comparison` | `getComparison(QueryContext context, Comparison comparison1, Comparison comparison2, boolean smallest)` Get the comparison with the smallest (or largest) value.
    `protected Object` | `getValue(QueryContext context, StaticOperand operand)` Get the value associated with the static operand of the comparison.
    `protected void` | `nullReference(List<Comparison> comparisons, Comparison comparisonToNull)` Find all occurrences of the comparison object in the supplied list and null the list's reference to it.
    `protected void` | `nullReference(List<Comparison> comparisons, Iterable<Comparison> comparisonsToNull)` Find all references in the supplied list that match those supplied and set them to null.
    `protected Constraint` | `rewrite(QueryContext context, List<Comparison> comparisons)` Rewrite the supplied comparisons, returning the new constraint and nulling in the supplied list those comparisons that were rewritten (and leaving those that were not rewritten)
    `String` | `toString()`

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

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

- - ### Field Detail

    - #### CONFLICTING_CONSTRAINT

          protected static final Constraint CONFLICTING_CONSTRAINT

    - #### INSTANCE

          public static final RewriteAsRangeCriteria INSTANCE

  - ### Constructor Detail

    - #### RewriteAsRangeCriteria

          public RewriteAsRangeCriteria()

  - ### 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

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### rewrite

          protected Constraint rewrite(QueryContext context,
                           List<Comparison> comparisons)

      Rewrite the supplied comparisons, returning the new constraint and nulling in the supplied list those comparisons that were rewritten (and leaving those that were not rewritten)
      Parameters:
        `context` - the query context
        `comparisons` - the list of comparisons that sould be rewritten if possible; never null
      Returns:
        the rewritten constraint, or null if no comparisons were rewritten

    - #### nullReference

          protected void nullReference(List<Comparison> comparisons,
                           Comparison comparisonToNull)

      Find all occurrences of the comparison object in the supplied list and null the list's reference to it.
      Parameters:
        `comparisons` - the collection in which null references are to be placed
        `comparisonToNull` - the comparison that is to be found and nulled in the collection

    - #### nullReference

          protected void nullReference(List<Comparison> comparisons,
                           Iterable<Comparison> comparisonsToNull)

      Find all references in the supplied list that match those supplied and set them to null.
      Parameters:
        `comparisons` - the collection in which null references are to be placed
        `comparisonsToNull` - the comparisons that are to be found and nulled in the collection

    - #### compareStaticOperands

          protected int compareStaticOperands(QueryContext context,
                                  Comparison comparison1,
                                  Comparison comparison2)

      Compare the values used in the two comparisons
      Parameters:
        `context` - the query context; may not be null
        `comparison1` - the first comparison object; may not be null
        `comparison2` - the second comparison object; may not be null
      Returns:
        0 if the values are the same, less than 0 if the first comparison's value is less than the second's, or greater than 0 if the first comparison's value is greater than the second's

    - #### getComparison

          protected Comparison getComparison(QueryContext context,
                                 Comparison comparison1,
                                 Comparison comparison2,
                                 boolean smallest)

      Get the comparison with the smallest (or largest) value.
      Parameters:
        `context` - the query context; may not be null
        `comparison1` - the first comparison object; may not be null
        `comparison2` - the second comparison object; may not be null
        `smallest` - true if the comparison with the smallest value should be returned, or false otherwise
      Returns:
        the comparison with the smallest (or largest) value

    - #### getValue

          protected Object getValue(QueryContext context,
                        StaticOperand operand)

      Get the value associated with the static operand of the comparison. If the operand is a `variable name`, the variable value is returned.
      Parameters:
        `context` - the query context; may not be null
        `operand` - the static operand; may not be null
      Returns:
        the value of the static operand

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