Package groovy.sql

# Class SqlWhereVisitor

java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
groovy.sql.SqlWhereVisitor

All Implemented Interfaces:
  `GroovyCodeVisitor`

public class SqlWhereVisitor extends CodeVisitorSupport
AST visitor used by `DataSet` to derive an SQL `WHERE` clause and positional parameter list from a supported filter closure.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SqlWhereVisitor()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<Object>`
  `getParameters()`
  Returns the positional parameters collected while building the SQL fragment.
  `String`
  `getWhere()`
  Returns the SQL `WHERE` fragment built so far.
  `void`
  `setClosure(Closure<?> closure)`
  Supplies the closure whose captured variables may be referenced while the SQL fragment is being derived.
  `protected String`
  `tokenAsSql(Token token)`
  Maps a Groovy AST token to its SQL operator representation.
  `void`
  `visitBinaryExpression(BinaryExpression expression)`
  Visits a binary expression and renders it as SQL, collecting any literal values as parameters.
  `void`
  `visitBooleanExpression(BooleanExpression expression)`
  Visits the wrapped boolean expression.
  `void`
  `visitConstantExpression(ConstantExpression expression)`
  Adds a constant value as a positional parameter.
  `void`
  `visitPropertyExpression(PropertyExpression expression)`
  Appends a property reference as a column name.
  `void`
  `visitReturnStatement(ReturnStatement statement)`
  Visits the closure return expression that defines the filter.
  `void`
  `visitVariableExpression(VariableExpression expression)`
  Resolves a variable captured from the enclosing closure scope and adds it as a positional parameter.

  ### Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport

  `afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitAssertStatement, visitAttributeExpression, visitBitwiseNegationExpression, visitBlockStatement, visitBreakStatement, visitBytecodeExpression, visitCaseStatement, visitCastExpression, visitCatchStatement, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstructorCallExpression, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitEmptyStatement, visitExpressionStatement, visitFieldExpression, visitForLoop, visitGStringExpression, visitIfElse, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitSwitch, visitSynchronizedStatement, visitTernaryExpression, visitThrowStatement, visitTryCatchFinally, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitWhileLoop`

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

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

  ### Methods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor

  `visit, visit, visitEmptyExpression, visitListOfExpressions`

- ## Constructor Details

  - ### SqlWhereVisitor

    public SqlWhereVisitor()

- ## Method Details

  - ### getWhere

    public String getWhere()
    Returns the SQL `WHERE` fragment built so far.
    Returns:
      the derived where fragment

  - ### visitReturnStatement

    public void visitReturnStatement(ReturnStatement statement)
    Visits the closure return expression that defines the filter.
    Specified by:
      `visitReturnStatement` in interface `GroovyCodeVisitor`
    Overrides:
      `visitReturnStatement` in class `CodeVisitorSupport`
    Parameters:
      `statement` - the return statement to visit

  - ### visitBinaryExpression

    public void visitBinaryExpression(BinaryExpression expression)
    Visits a binary expression and renders it as SQL, collecting any literal values as parameters.
    Specified by:
      `visitBinaryExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitBinaryExpression` in class `CodeVisitorSupport`
    Parameters:
      `expression` - the binary expression to visit

  - ### visitBooleanExpression

    public void visitBooleanExpression(BooleanExpression expression)
    Visits the wrapped boolean expression.
    Specified by:
      `visitBooleanExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitBooleanExpression` in class `CodeVisitorSupport`
    Parameters:
      `expression` - the boolean expression to visit

  - ### visitConstantExpression

    public void visitConstantExpression(ConstantExpression expression)
    Adds a constant value as a positional parameter.
    Specified by:
      `visitConstantExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitConstantExpression` in class `CodeVisitorSupport`
    Parameters:
      `expression` - the constant expression to visit

  - ### visitPropertyExpression

    public void visitPropertyExpression(PropertyExpression expression)
    Appends a property reference as a column name.
    Specified by:
      `visitPropertyExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitPropertyExpression` in class `CodeVisitorSupport`
    Parameters:
      `expression` - the property expression to visit

  - ### setClosure

    public void setClosure(Closure<?> closure)
    Supplies the closure whose captured variables may be referenced while the SQL fragment is being derived.
    Parameters:
      `closure` - the closure currently being translated
    Since:
      6.0.0

  - ### visitVariableExpression

    public void visitVariableExpression(VariableExpression expression)
    Resolves a variable captured from the enclosing closure scope and adds it as a positional parameter.
    Specified by:
      `visitVariableExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitVariableExpression` in class `CodeVisitorSupport`
    Parameters:
      `expression` - the variable expression to visit

  - ### getParameters

    public List<Object> getParameters()
    Returns the positional parameters collected while building the SQL fragment.
    Returns:
      the collected parameter values

  - ### tokenAsSql

    protected String tokenAsSql(Token token)
    Maps a Groovy AST token to its SQL operator representation.
    Parameters:
      `token` - the AST token to translate
    Returns:
      the SQL operator text