org.modeshape.jcr.query.parse

## Class BasicSqlQueryParser

- java.lang.Object
- - org.modeshape.jcr.query.parse.BasicSqlQueryParser

- All Implemented Interfaces:
    QueryParser
  Direct Known Subclasses:
    JcrSql2QueryParser, JcrSqlQueryParser

      public class BasicSqlQueryParser
      extends Object
      implements QueryParser

  A `QueryParser` implementation that parses a subset of SQL select and set queries.

  This grammar is equivalent to the SQL grammar as defined by the JCR 2.0 specification, with some useful additions:

  - "`... (UNION|INTERSECT|EXCEPT) [ALL] ...`" to combine and merge results from multiple queries
  - "`SELECT DISTINCT ...`" to remove duplicates
  - "`LIMIT count [OFFSET number]`" clauses to control the number of results returned as well as the number of rows that should be skipped
  - Support for additional join types, including "`FULL OUTER JOIN`" and "`CROSS JOIN`"
  - Additional dynamic operands "`DEPTH([<selectorName>])`" and "`PATH([<selectorName>])`" that enables placing constraints on the node depth and path, respectively, and which can be used in a manner similar to " `NAME([<selectorName>])`" and "`LOCALNAME([<selectorName>])`. Note in each of these cases, the selector name is optional if there is only one selector in the query.
  - Additional dynamic operand "`REFERENCE([<selectorName>.]<propertyName>])`" that enables placing constraints on one or all reference properties, and which can be used in a manner similar to " `PropertyValue([<selectorName>.]<propertyName>)`". Note in each of these cases, the selector name is optional if there is only one selector in the query, and that the property name can be excluded if the constraint should apply to all reference properties.
  - Support for the IN clause and NOT IN clause to more easily supply a list of valid discrete static operands: " `<dynamicOperand> [NOT] IN (<staticOperand> {, <staticOperand>})`"
  - Support for the BETWEEN clause: "`<dynamicOperand> [NOT] BETWEEN <lowerBoundStaticOperand> [EXCLUSIVE] AND <upperBoundStaticOperand> [EXCLUSIVE]`"
  - Support for arithmetic operations ('+', '-', '*', '/') between dynamic operands used in `WHERE` criteria and `ORDER BY` clauses: "`WHERE <dynamicOperand> + <dynamicOperand> ...`" or "`ORDER BY (<dynamicOperand> + <dynamicOperand>) [ASC]`". Note that standard operator precedence is used, but grouping by (potentially nested) parentheses is also supported.

  ### SQL grammar

  This section defines the complete grammar for the SQL dialect supported by this parser.

  #### Queries

       QueryCommand ::= Query | SetQuery

       SetQuery ::= Query ('UNION'|'INTERSECT'|'EXCEPT') [ALL] Query
                        { ('UNION'|'INTERSECT'|'EXCEPT') [ALL] Query }

       Query ::= 'SELECT' ['DISINCT'] columns
                 'FROM' Source
                 ['WHERE' Constraint]
                 ['ORDER BY' orderings]
                 [Limit]

  #### Sources

       Source ::= Selector | Join

       Selector ::= nodeTypeName ['AS' selectorName]

       nodeTypeName ::= Name

  #### Joins

       Join ::= left [JoinType] 'JOIN' right 'ON' JoinCondition
                // If JoinType is omitted INNER is assumed.

       left ::= Source
       right ::= Source

       JoinType ::= Inner | LeftOuter | RightOuter | FullOuter | Cross

       Inner ::= 'INNER' ['JOIN']

       LeftOuter ::= 'LEFT JOIN' | 'OUTER JOIN' | 'LEFT OUTER JOIN'

       RightOuter ::= 'RIGHT OUTER' ['JOIN']

       RightOuter ::= 'FULL OUTER' ['JOIN']

       RightOuter ::= 'CROSS' ['JOIN']

       JoinCondition ::= EquiJoinCondition | SameNodeJoinCondition | ChildNodeJoinCondition | DescendantNodeJoinCondition

  ##### Equi-join conditions

       EquiJoinCondition ::= selector1Name'.'property1Name '=' selector2Name'.'property2Name

       selector1Name ::= selectorName
       selector2Name ::= selectorName
       property1Name ::= propertyName
       property2Name ::= propertyName

  ##### Same-node join condition

       SameNodeJoinCondition ::= 'ISSAMENODE(' selector1Name ',' selector2Name [',' selector2Path] ')'

       selector2Path ::= Path

  ##### Child-node join condition

       ChildNodeJoinCondition ::= 'ISCHILDNODE(' childSelectorName ',' parentSelectorName ')'

       childSelectorName ::= selectorName
       parentSelectorName ::= selectorName

  ##### Descendant-node join condition

       DescendantNodeJoinCondition ::= 'ISDESCENDANTNODE(' descendantSelectorName ',' ancestorSelectorName ')'
       descendantSelectorName ::= selectorName
       ancestorSelectorName ::= selectorName

  #### Constraints

       Constraint ::= ConstraintItem | '(' ConstraintItem ')'

       ConstraintItem ::= And | Or | Not | Comparison | Between | PropertyExistence | SetConstraint | FullTextSearch |
                          SameNode | ChildNode | DescendantNode

  ##### And constraint

       And ::= constraint1 'AND' constraint2

       constraint1 ::= Constraint
       constraint2 ::= Constraint

  ##### Or constraint

       Or ::= constraint1 'OR' constraint2

  ##### Not constraint

       Not ::= 'NOT' Constraint

  ##### Comparison constraint

       Comparison ::= DynamicOperand Operator StaticOperand

       Operator ::= '=' | '!=' | '<' | '<=' | '>' | '>=' | 'LIKE' | 'NOT LIKE'

  ##### Between constraint

       Between ::= DynamicOperand ['NOT'] 'BETWEEN' lowerBound ['EXCLUSIVE'] 'AND' upperBound ['EXCLUSIVE']

       lowerBound ::= StaticOperand
       upperBound ::= StaticOperand

  ##### Property existence constraint

       PropertyExistence ::= selectorName'.'propertyName 'IS' ['NOT'] 'NULL' |
                             propertyName 'IS' ['NOT'] 'NULL' /* If only one selector exists in this query */

  ##### Set constraint

       SetConstraint ::= selectorName'.'propertyName ['NOT'] 'IN' |
                             propertyName ['NOT'] 'IN' /* If only one selector exists in this query */
                             '(' firstStaticOperand {',' additionalStaticOperand } ')'
       firstStaticOperand ::= StaticOperand
       additionalStaticOperand ::= StaticOperand

  ##### Full-text search constraint

       FullTextSearch ::= 'CONTAINS(' ([selectorName'.']propertyName | selectorName'.*')
                                  ',' ''' fullTextSearchExpression''' ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             preceding the propertyName is optional */
       fullTextSearchExpression ::= /* a full-text search expression, see FullTextSearchParser */

  ##### Same-node constraint

       SameNode ::= 'ISSAMENODE(' [selectorName ','] Path ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             preceding the propertyName is optional */

  ##### Child-node constraint

       ChildNode ::= 'ISCHILDNODE(' [selectorName ','] Path ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             preceding the propertyName is optional */

  ##### Descendant-node constraint

       DescendantNode ::= 'ISDESCENDANTNODE(' [selectorName ','] Path ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             preceding the propertyName is optional */

  ##### Paths and names

       Name ::= '[' quotedName ']' | '[' simpleName ']' | simpleName

       quotedName ::= /* A JCR Name (see the JCR specification) */
       simpleName ::= /* A JCR Name that contains only SQL-legal characters (namely letters, digits, and underscore) */

       Path ::= '[' quotedPath ']' | '[' simplePath ']' | simplePath

       quotedPath ::= /* A JCR Path that contains non-SQL-legal characters */
       simplePath ::= /* A JCR Path (rather Name) that contains only SQL-legal characters (namely letters, digits, and underscore) */

  #### Static operands

       StaticOperand ::= Literal | BindVariableValue

  ##### Literal

       Literal ::= CastLiteral | UncastLiteral

       CastLiteral ::= 'CAST(' UncastLiteral ' AS ' PropertyType ')'

       PropertyType ::= 'STRING' | 'BINARY' | 'DATE' | 'LONG' | 'DOUBLE' | 'DECIMAL' | 'BOOLEAN' | 'NAME' | 'PATH' |
                        'REFERENCE' | 'WEAKREFERENCE' | 'URI'

       UncastLiteral ::= UnquotedLiteral | ''' UnquotedLiteral ''' | '"' UnquotedLiteral '"'

       UnquotedLiteral ::= /* String form of a JCR Value, as defined in the JCR specification */

  ##### Bind variables

       BindVariableValue ::= '$'bindVariableName

       bindVariableName ::= /* A string that conforms to the JCR Name syntax, though the prefix does not need to be
                               a registered namespace prefix. */

  #### Dynamic operands

       DynamicOperand ::= PropertyValue | ReferenceValue | Length | NodeName | NodeLocalName | NodePath | NodeDepth |
                          FullTextSearchScore | LowerCase | UpperCase | Arithmetic |
                          '(' DynamicOperand ')'

  ##### Property value

       PropertyValue ::= [selectorName'.'] propertyName
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             preceding the propertyName is optional */

  ##### Reference value

       ReferenceValue ::= 'REFERENCE(' selectorName '.' propertyName ')' |
                          'REFERENCE(' selectorName ')' |
                          'REFERENCE()' |
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             preceding the propertyName is optional. Also, the property name may be excluded
                             if the constraint should apply to any reference property. */

  ##### Property length

       Length ::= 'LENGTH(' PropertyValue ')'

  ##### Node name

       NodeName ::= 'NAME(' [selectorName] ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             is optional */

  ##### Node local name

       NodeLocalName ::= 'LOCALNAME(' [selectorName] ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             is optional */

  ##### Node path

       NodePath ::= 'PATH(' [selectorName] ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             is optional */

  ##### Node depth

       NodeDepth ::= 'DEPTH(' [selectorName] ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             is optional */

  ##### Full-text search score

       FullTextSearchScore ::= 'SCORE(' [selectorName] ')'
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             is optional */

  ##### Lowercase

       LowerCase ::= 'LOWER(' DynamicOperand ')'

  ##### Uppercase

       UpperCase ::= 'UPPER(' DynamicOperand ')'

  ##### Arithmetic

       Arithmetic ::= DynamicOperand ('+'|'-'|'*'|'/') DynamicOperand

  #### Ordering

       orderings ::= Ordering {',' Ordering}

       Ordering ::= DynamicOperand [Order]

       Order ::= 'ASC' | 'DESC'

  #### Columns

       columns ::= (Column ',' {Column}) | '*'

       Column ::= ([selectorName'.']propertyName ['AS' columnName]) | (selectorName'.*')
                          /* If only one selector exists in this query, explicit specification of the selectorName
                             preceding the propertyName is optional */
       selectorName ::= Name
       propertyName ::= Name
       columnName ::= Name

  #### Limit

       Limit ::= 'LIMIT' count [ 'OFFSET' offset ]
       count ::= /* Positive integer value */
       offset ::= /* Non-negative integer value */

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `BasicSqlQueryParser.SqlTokenizer` A `TokenStream.Tokenizer` implementation that parses words, quoted phrases, comments, and symbols.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `LANGUAGE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BasicSqlQueryParser()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected And` | `and(Constraint constraint1, Constraint constraint2)`
    `protected ArithmeticOperand` | `arithmeticOperand(DynamicOperand leftOperand, ArithmeticOperator operator, DynamicOperand rightOperand)`
    `protected Between` | `between(DynamicOperand operand, StaticOperand lowerBound, StaticOperand upperBound, boolean lowerInclusive, boolean upperInclusive)`
    `protected BindVariableName` | `bindVariableName(String variableName)`
    `protected ChildNode` | `childNode(SelectorName name, String path)`
    `protected ChildNodeJoinCondition` | `childNodeJoinCondition(SelectorName parent, SelectorName child)`
    `protected Column` | `column(SelectorName selectorName, String propertyName, String columnName)`
    `protected Comparison` | `comparison(DynamicOperand left, Operator operator, StaticOperand right)`
    `protected DescendantNode` | `descendantNode(SelectorName name, String path)`
    `protected DescendantNodeJoinCondition` | `descendantNodeJoinCondition(SelectorName ancestor, SelectorName descendant)`
    `boolean` | `equals(Object obj)`
    `protected EquiJoinCondition` | `equiJoinCondition(SelectorName selector1, String property1, SelectorName selector2, String property2)`
    `protected FullTextSearch` | `fullTextSearch(SelectorName name, String propertyName, StaticOperand expression)`
    `protected FullTextSearch` | `fullTextSearch(SelectorName name, String propertyName, String expression, FullTextSearch.Term term)`
    `protected FullTextSearchScore` | `fullTextSearchScore(SelectorName selector)`
    `String` | `getLanguage()` Get the name of the language that this parser is able to understand.
    `int` | `hashCode()`
    `protected Join` | `join(Source left, JoinType joinType, Source right, JoinCondition joinCondition)`
    `protected Length` | `length(PropertyValue propertyValue)`
    `protected Limit` | `limit(int rowCount, int offset)`
    `protected Literal` | `literal(TypeSystem typeSystem, Object value)`
    `protected LowerCase` | `lowerCase(DynamicOperand operand)`
    `protected NodeDepth` | `nodeDepth(SelectorName selector)`
    `protected NodeLocalName` | `nodeLocalName(SelectorName selector)`
    `protected NodeName` | `nodeName(SelectorName selector)`
    `protected NodePath` | `nodePath(SelectorName selector)`
    `protected Not` | `not(Constraint constraint)`
    `protected Or` | `or(Constraint constraint1, Constraint constraint2)`
    `protected Ordering` | `ordering(DynamicOperand operand, Order order)`
    `protected BindVariableName` | `parseBindVariableName(TokenStream tokens, TypeSystem typeSystem)`
    `protected Operator` | `parseComparisonOperator(TokenStream tokens)`
    `protected Constraint` | `parseConstraint(TokenStream tokens, TypeSystem typeSystem, Source source)`
    `protected DynamicOperand` | `parseDynamicOperand(TokenStream tokens, TypeSystem typeSystem, Source source)`
    `protected Source` | `parseFrom(TokenStream tokens, TypeSystem typeSystem)`
    `protected FullTextSearch.Term` | `parseFullTextSearchExpression(String expression, Position startOfExpression)`
    `protected List<StaticOperand>` | `parseInClause(TokenStream tokens, TypeSystem typeSystem)`
    `protected JoinCondition` | `parseJoinCondition(TokenStream tokens, TypeSystem typeSystem)`
    `protected Limit` | `parseLimit(TokenStream tokens)`
    `protected Literal` | `parseLiteral(TokenStream tokens, TypeSystem typeSystem)`
    `protected Object` | `parseLiteralValue(TokenStream tokens, TypeSystem typeSystem)`
    `protected String` | `parseName(String token, TypeSystem typeSystem, Position position)`
    `protected String` | `parseName(TokenStream tokens, TypeSystem typeSystem)`
    `protected NamedSelector` | `parseNamedSelector(TokenStream tokens, TypeSystem typeSystem)`
    `protected List<Ordering>` | `parseOrderBy(TokenStream tokens, TypeSystem typeSystem, Source source)`
    `protected Ordering` | `parseOrdering(TokenStream tokens, TypeSystem typeSystem, Source source)`
    `protected String` | `parsePath(TokenStream tokens, TypeSystem typeSystem)`
    `protected Constraint` | `parsePropertyExistance(TokenStream tokens, TypeSystem typeSystem, Source source)`
    `protected PropertyValue` | `parsePropertyValue(TokenStream tokens, TypeSystem typeSystem, Source source)`
    `QueryCommand` | `parseQuery(String query, TypeSystem typeSystem)` Parse the supplied query from a string representation into a `QueryCommand`.
    `protected Query` | `parseQuery(TokenStream tokens, TypeSystem typeSystem)`
    `protected QueryCommand` | `parseQueryCommand(TokenStream tokens, TypeSystem typeSystem)`
    `protected ReferenceValue` | `parseReferenceValue(TokenStream tokens, TypeSystem typeSystem, Source source)`
    `protected List<org.modeshape.jcr.query.parse.ColumnExpression>` | `parseSelect(TokenStream tokens, AtomicBoolean isDistinct, TypeSystem typeSystem)`
    `protected SelectorName` | `parseSelectorName(TokenStream tokens, TypeSystem typeSystem)`
    `protected SetQuery` | `parseSetQuery(TokenStream tokens, QueryCommand leftHandSide, TypeSystem typeSystem)`
    `protected StaticOperand` | `parseStaticOperand(TokenStream tokens, TypeSystem typeSystem)`
    `protected Constraint` | `parseWhere(TokenStream tokens, TypeSystem typeSystem, Source source)`
    `protected PropertyExistence` | `propertyExistence(SelectorName selector, String propertyName)`
    `protected PropertyValue` | `propertyValue(SelectorName selector, String propertyName)`
    `protected Query` | `query(Source source, Constraint constraint, List<? extends Ordering> orderings, List<? extends Column> columns, Limit limit, boolean distinct)`
    `protected ReferenceValue` | `referenceValue(SelectorName selector)`
    `protected ReferenceValue` | `referenceValue(SelectorName selector, String propertyName)`
    `protected String` | `removeBracketsAndQuotes(String text, boolean recursive, Position position)` Remove any leading and trailing single-quotes, double-quotes, or square brackets from the supplied text.
    `protected String` | `removeBracketsAndQuotes(String text, Position position)` Remove all leading and trailing single-quotes, double-quotes, or square brackets from the supplied text.
    `protected SameNode` | `sameNode(SelectorName name, String path)`
    `protected SameNodeJoinCondition` | `sameNodeJoinCondition(SelectorName selector1, SelectorName selector2)`
    `protected SameNodeJoinCondition` | `sameNodeJoinCondition(SelectorName selector1, SelectorName selector2, String path)`
    `protected SetCriteria` | `setCriteria(DynamicOperand operand, Collection<? extends StaticOperand> values)`
    `protected SetQuery` | `setQuery(QueryCommand leftQuery, SetQuery.Operation operation, QueryCommand rightQuery, boolean all)`
    `protected Subquery` | `subquery(QueryCommand queryCommand)`
    `String` | `toString()`
    `protected UpperCase` | `upperCase(DynamicOperand operand)`

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

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

- - ### Field Detail

    - #### LANGUAGE

          public static final String LANGUAGE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### BasicSqlQueryParser

          public BasicSqlQueryParser()

  - ### Method Detail

    - #### getLanguage

          public String getLanguage()

      Description copied from interface: `QueryParser`
      Get the name of the language that this parser is able to understand.
      Specified by:
        `getLanguage` in interface `QueryParser`
      Returns:
        the language name; never null

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### equals

          public boolean equals(Object obj)

      Overrides:
        `equals` in class `Object`

    - #### parseQuery

          public QueryCommand parseQuery(String query,
                                TypeSystem typeSystem)

      Description copied from interface: `QueryParser`
      Parse the supplied query from a string representation into a `QueryCommand`.
      Specified by:
        `parseQuery` in interface `QueryParser`
      Parameters:
        `query` - the query in string form; may not be null
        `typeSystem` - the type system used by the query; may not be null
      Returns:
        the query command

    - #### parseQueryCommand

          protected QueryCommand parseQueryCommand(TokenStream tokens,
                                       TypeSystem typeSystem)

    - #### parseQuery

          protected Query parseQuery(TokenStream tokens,
                         TypeSystem typeSystem)

    - #### parseSetQuery

          protected SetQuery parseSetQuery(TokenStream tokens,
                               QueryCommand leftHandSide,
                               TypeSystem typeSystem)

    - #### parseSelect

          protected List<org.modeshape.jcr.query.parse.ColumnExpression> parseSelect(TokenStream tokens,
                                                                         AtomicBoolean isDistinct,
                                                                         TypeSystem typeSystem)

    - #### parseFrom

          protected Source parseFrom(TokenStream tokens,
                         TypeSystem typeSystem)

    - #### parseJoinCondition

          protected JoinCondition parseJoinCondition(TokenStream tokens,
                                         TypeSystem typeSystem)

    - #### parseWhere

          protected Constraint parseWhere(TokenStream tokens,
                              TypeSystem typeSystem,
                              Source source)

    - #### parseConstraint

          protected Constraint parseConstraint(TokenStream tokens,
                                   TypeSystem typeSystem,
                                   Source source)

    - #### parseInClause

          protected List<StaticOperand> parseInClause(TokenStream tokens,
                                          TypeSystem typeSystem)

    - #### parseFullTextSearchExpression

          protected FullTextSearch.Term parseFullTextSearchExpression(String expression,
                                                          Position startOfExpression)

    - #### parseComparisonOperator

          protected Operator parseComparisonOperator(TokenStream tokens)

    - #### parseOrderBy

          protected List<Ordering> parseOrderBy(TokenStream tokens,
                                    TypeSystem typeSystem,
                                    Source source)

    - #### parseOrdering

          protected Ordering parseOrdering(TokenStream tokens,
                               TypeSystem typeSystem,
                               Source source)

    - #### parsePropertyExistance

          protected Constraint parsePropertyExistance(TokenStream tokens,
                                          TypeSystem typeSystem,
                                          Source source)

    - #### parseStaticOperand

          protected StaticOperand parseStaticOperand(TokenStream tokens,
                                         TypeSystem typeSystem)

    - #### parseBindVariableName

          protected BindVariableName parseBindVariableName(TokenStream tokens,
                                               TypeSystem typeSystem)

    - #### subquery

          protected Subquery subquery(QueryCommand queryCommand)

    - #### parseLiteral

          protected Literal parseLiteral(TokenStream tokens,
                             TypeSystem typeSystem)

    - #### parseLiteralValue

          protected Object parseLiteralValue(TokenStream tokens,
                                 TypeSystem typeSystem)

    - #### parseDynamicOperand

          protected DynamicOperand parseDynamicOperand(TokenStream tokens,
                                           TypeSystem typeSystem,
                                           Source source)

    - #### parsePropertyValue

          protected PropertyValue parsePropertyValue(TokenStream tokens,
                                         TypeSystem typeSystem,
                                         Source source)

    - #### parseReferenceValue

          protected ReferenceValue parseReferenceValue(TokenStream tokens,
                                           TypeSystem typeSystem,
                                           Source source)

    - #### parseLimit

          protected Limit parseLimit(TokenStream tokens)

    - #### removeBracketsAndQuotes

          protected String removeBracketsAndQuotes(String text,
                                       Position position)

      Remove all leading and trailing single-quotes, double-quotes, or square brackets from the supplied text. If multiple, properly-paired quotes or brackets are found, they will all be removed.
      Parameters:
        `text` - the input text; may not be null
        `position` - the position of the text; may not be null
      Returns:
        the text without leading and trailing brackets and quotes, or `text` if there were no square brackets or quotes

    - #### removeBracketsAndQuotes

          protected String removeBracketsAndQuotes(String text,
                                       boolean recursive,
                                       Position position)

      Remove any leading and trailing single-quotes, double-quotes, or square brackets from the supplied text.
      Parameters:
        `text` - the input text; may not be null
        `recursive` - true if more than one pair of quotes, double-quotes, or square brackets should be removed, or false if just the first pair should be removed
        `position` - the position of the text; may not be null
      Returns:
        the text without leading and trailing brackets and quotes, or `text` if there were no square brackets or quotes

    - #### parseNamedSelector

          protected NamedSelector parseNamedSelector(TokenStream tokens,
                                         TypeSystem typeSystem)

    - #### parseSelectorName

          protected SelectorName parseSelectorName(TokenStream tokens,
                                       TypeSystem typeSystem)

    - #### parsePath

          protected String parsePath(TokenStream tokens,
                         TypeSystem typeSystem)

    - #### parseName

          protected String parseName(TokenStream tokens,
                         TypeSystem typeSystem)

    - #### parseName

          protected String parseName(String token,
                         TypeSystem typeSystem,
                         Position position)

    - #### query

          protected Query query(Source source,
                    Constraint constraint,
                    List<? extends Ordering> orderings,
                    List<? extends Column> columns,
                    Limit limit,
                    boolean distinct)

    - #### setQuery

          protected SetQuery setQuery(QueryCommand leftQuery,
                          SetQuery.Operation operation,
                          QueryCommand rightQuery,
                          boolean all)

    - #### length

          protected Length length(PropertyValue propertyValue)

    - #### lowerCase

          protected LowerCase lowerCase(DynamicOperand operand)

    - #### upperCase

          protected UpperCase upperCase(DynamicOperand operand)

    - #### nodeName

          protected NodeName nodeName(SelectorName selector)

    - #### nodeLocalName

          protected NodeLocalName nodeLocalName(SelectorName selector)

    - #### nodeDepth

          protected NodeDepth nodeDepth(SelectorName selector)

    - #### nodePath

          protected NodePath nodePath(SelectorName selector)

    - #### equiJoinCondition

          protected EquiJoinCondition equiJoinCondition(SelectorName selector1,
                                            String property1,
                                            SelectorName selector2,
                                            String property2)

    - #### descendantNodeJoinCondition

          protected DescendantNodeJoinCondition descendantNodeJoinCondition(SelectorName ancestor,
                                                                SelectorName descendant)

    - #### childNodeJoinCondition

          protected ChildNodeJoinCondition childNodeJoinCondition(SelectorName parent,
                                                      SelectorName child)

    - #### sameNodeJoinCondition

          protected SameNodeJoinCondition sameNodeJoinCondition(SelectorName selector1,
                                                    SelectorName selector2)

    - #### sameNodeJoinCondition

          protected SameNodeJoinCondition sameNodeJoinCondition(SelectorName selector1,
                                                    SelectorName selector2,
                                                    String path)

    - #### limit

          protected Limit limit(int rowCount,
                    int offset)

    - #### column

          protected Column column(SelectorName selectorName,
                      String propertyName,
                      String columnName)

    - #### join

          protected Join join(Source left,
                  JoinType joinType,
                  Source right,
                  JoinCondition joinCondition)

    - #### not

          protected Not not(Constraint constraint)

    - #### and

          protected And and(Constraint constraint1,
                Constraint constraint2)

    - #### or

          protected Or or(Constraint constraint1,
              Constraint constraint2)

    - #### between

          protected Between between(DynamicOperand operand,
                        StaticOperand lowerBound,
                        StaticOperand upperBound,
                        boolean lowerInclusive,
                        boolean upperInclusive)

    - #### setCriteria

          protected SetCriteria setCriteria(DynamicOperand operand,
                                Collection<? extends StaticOperand> values)

    - #### fullTextSearch

          protected FullTextSearch fullTextSearch(SelectorName name,
                                      String propertyName,
                                      String expression,
                                      FullTextSearch.Term term)

    - #### fullTextSearch

          protected FullTextSearch fullTextSearch(SelectorName name,
                                      String propertyName,
                                      StaticOperand expression)
                                           throws RepositoryException

      Throws:
        `RepositoryException`

    - #### sameNode

          protected SameNode sameNode(SelectorName name,
                          String path)

    - #### childNode

          protected ChildNode childNode(SelectorName name,
                            String path)

    - #### descendantNode

          protected DescendantNode descendantNode(SelectorName name,
                                      String path)

    - #### comparison

          protected Comparison comparison(DynamicOperand left,
                              Operator operator,
                              StaticOperand right)

    - #### ordering

          protected Ordering ordering(DynamicOperand operand,
                          Order order)

    - #### propertyExistence

          protected PropertyExistence propertyExistence(SelectorName selector,
                                            String propertyName)

    - #### fullTextSearchScore

          protected FullTextSearchScore fullTextSearchScore(SelectorName selector)

    - #### arithmeticOperand

          protected ArithmeticOperand arithmeticOperand(DynamicOperand leftOperand,
                                            ArithmeticOperator operator,
                                            DynamicOperand rightOperand)

    - #### propertyValue

          protected PropertyValue propertyValue(SelectorName selector,
                                    String propertyName)

    - #### referenceValue

          protected ReferenceValue referenceValue(SelectorName selector)

    - #### referenceValue

          protected ReferenceValue referenceValue(SelectorName selector,
                                      String propertyName)

    - #### bindVariableName

          protected BindVariableName bindVariableName(String variableName)

    - #### literal

          protected Literal literal(TypeSystem typeSystem,
                        Object value)
                             throws ValueFormatException

      Throws:
        `ValueFormatException`

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