Package: org.apache.groovy.ginq.provider.collection

## [Groovy] Class GinqAstWalker

- org.apache.groovy.ginq.provider.collection.GinqAstWalker

- All Implemented Interfaces and Traits:
    GinqAstVisitor<Expression>, SyntaxErrorReportable

      @CompileStatic
      class GinqAstWalker
      extends Object
      implements GinqAstVisitor<Expression>, SyntaxErrorReportable

  Visit AST of GINQ to generate target method calls for GINQ.

  Since:
    4.0.0

- - ### Properties Summary

    Properties
    Type | Name and description
    --- | ---
    `Map<String, String>` | `configuration`
    `SourceUnit` | `sourceUnit`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `GinqAstWalker(SourceUnit sourceUnit)` Creates a walker for the supplied source unit.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `Map<String, String>` | `getConfiguration()`
    `` | `void` | `setConfiguration(Map<String, String> configuration)`
    `` | `Expression` | `visit(AbstractGinqExpression expression)` Visits an arbitrary GINQ expression.
    `` | `MethodCallExpression` | `visitFromExpression(FromExpression fromExpression)` Visits a `from` clause.
    `` | `MethodCallExpression` | `visitGinqExpression(GinqExpression ginqExpression)` Visits a full GINQ expression and converts it into chained queryable calls.
    `` | `MethodCallExpression` | `visitGroupExpression(GroupExpression groupExpression)` Visits a `groupby` clause.
    `` | `Expression` | `visitHavingExpression(HavingExpression havingExpression)` Leaves `having` clauses to their owning group clause.
    `` | `MethodCallExpression` | `visitJoinExpression(JoinExpression joinExpression)` Visits a join clause.
    `` | `MethodCallExpression` | `visitLimitExpression(LimitExpression limitExpression)` Visits a `limit` clause.
    `` | `MethodCallExpression` | `visitOnExpression(OnExpression onExpression)` Leaves `on` clauses to their owning join clause.
    `` | `MethodCallExpression` | `visitOrderExpression(OrderExpression orderExpression)` Visits an `orderby` clause.
    `` | `MethodCallExpression` | `visitSelectExpression(SelectExpression selectExpression)` Visits a `select` clause.
    `` | `Expression` | `visitSetOperationExpression(SetOperationExpression setOperationExpression)` Visits a set-operation expression.
    `` | `Expression` | `visitShutdownExpression(ShutdownExpression shutdownExpression)` Visits a shutdown expression.
    `` | `MethodCallExpression` | `visitWhereExpression(WhereExpression whereExpression)` Visits a `where` clause.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Property Detail

    - #### Map<String, String> configuration

    - #### final SourceUnit sourceUnit

  - ### Constructor Detail

    - #### GinqAstWalker(SourceUnit sourceUnit)

      Creates a walker for the supplied source unit.

      Parameters:
        `sourceUnit` - the source unit being transformed

  - ### Method Detail

    - #### @Override
      Map<String, String> getConfiguration()

    - #### @Override
      void setConfiguration(Map<String, String> configuration)

    - #### @Override
      Expression visit(AbstractGinqExpression expression)

      Visits an arbitrary GINQ expression.

      Parameters:
        `expression` - the expression to transform
      Returns:
        the transformed expression

    - #### @Override
      MethodCallExpression visitFromExpression(FromExpression fromExpression)

      Visits a `from` clause.

      Parameters:
        `fromExpression` - the clause to transform
      Returns:
        the transformed method call

    - #### @Override
      MethodCallExpression visitGinqExpression(GinqExpression ginqExpression)

      Visits a full GINQ expression and converts it into chained queryable calls.

      Parameters:
        `ginqExpression` - the expression to transform
      Returns:
        the transformed method call

    - #### @Override
      MethodCallExpression visitGroupExpression(GroupExpression groupExpression)

      Visits a `groupby` clause.

      Parameters:
        `groupExpression` - the clause to transform
      Returns:
        the transformed method call

    - #### @Override
      Expression visitHavingExpression(HavingExpression havingExpression)

      Leaves `having` clauses to their owning group clause.

      Parameters:
        `havingExpression` - the clause being visited
      Returns:
        `null`

    - #### @Override
      MethodCallExpression visitJoinExpression(JoinExpression joinExpression)

      Visits a join clause.

      Parameters:
        `joinExpression` - the clause to transform
      Returns:
        the transformed method call

    - #### @Override
      MethodCallExpression visitLimitExpression(LimitExpression limitExpression)

      Visits a `limit` clause.

      Parameters:
        `limitExpression` - the clause to transform
      Returns:
        the transformed method call

    - #### @Override
      MethodCallExpression visitOnExpression(OnExpression onExpression)

      Leaves `on` clauses to their owning join clause.

      Parameters:
        `onExpression` - the clause being visited
      Returns:
        `null`

    - #### @Override
      MethodCallExpression visitOrderExpression(OrderExpression orderExpression)

      Visits an `orderby` clause.

      Parameters:
        `orderExpression` - the clause to transform
      Returns:
        the transformed method call

    - #### @Override
      MethodCallExpression visitSelectExpression(SelectExpression selectExpression)

      Visits a `select` clause.

      Parameters:
        `selectExpression` - the clause to transform
      Returns:
        the transformed method call

    - #### @Override
      Expression visitSetOperationExpression(SetOperationExpression setOperationExpression)

      Visits a set-operation expression.

      Parameters:
        `setOperationExpression` - the expression to transform
      Returns:
        the transformed expression

    - #### @Override
      Expression visitShutdownExpression(ShutdownExpression shutdownExpression)

      Visits a shutdown expression.

      Parameters:
        `shutdownExpression` - the expression to transform
      Returns:
        the shutdown call expression

    - #### @Override
      MethodCallExpression visitWhereExpression(WhereExpression whereExpression)

      Visits a `where` clause.

      Parameters:
        `whereExpression` - the clause to transform
      Returns:
        the transformed method call