Package org.apache.cayenne.exp.parser

## Class ASTFunctionCall

- java.lang.Object
- - org.apache.cayenne.exp.Expression
  - - org.apache.cayenne.exp.parser.SimpleNode
    - - org.apache.cayenne.exp.parser.EvaluatedNode
      - - org.apache.cayenne.exp.parser.ASTFunctionCall

- All Implemented Interfaces:
    `Serializable`, `Node`, `XMLSerializable`
  Direct Known Subclasses:
    `ASTAbs`, `ASTAggregateFunctionCall`, `ASTConcat`, `ASTCurrentDate`, `ASTCurrentTime`, `ASTCurrentTimestamp`, `ASTCustomFunction`, `ASTExtract`, `ASTLength`, `ASTLocate`, `ASTLower`, `ASTMod`, `ASTSqrt`, `ASTSubstring`, `ASTTrim`, `ASTUpper`

      public abstract class ASTFunctionCall
      extends EvaluatedNode

  Since:
    4.0
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected String` | `functionName` |

    - ### Fields inherited from class org.apache.cayenne.exp.parser.SimpleNode

      `children, id, parent`

    - ### Fields inherited from class org.apache.cayenne.exp.Expression

      `ADD, AND, ASTERISK, BETWEEN, BITWISE_AND, BITWISE_LEFT_SHIFT, BITWISE_NOT, BITWISE_OR, BITWISE_RIGHT_SHIFT, BITWISE_XOR, CUSTOM_OP, DB_PATH, DBID_PATH, DIVIDE, ENCLOSING_OBJECT, EQUAL_TO, EXISTS, FALSE, FULL_OBJECT, FUNCTION_CALL, GREATER_THAN, GREATER_THAN_EQUAL_TO, IN, LESS_THAN, LESS_THAN_EQUAL_TO, LIKE, LIKE_IGNORE_CASE, LIST, MULTIPLY, NEGATIVE, NOT, NOT_BETWEEN, NOT_EQUAL_TO, NOT_EXISTS, NOT_IN, NOT_LIKE, NOT_LIKE_IGNORE_CASE, OBJ_PATH, OR, PRUNED_NODE, SUBQUERY, SUBTRACT, TRUE, type`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ASTFunctionCall​(int id, String functionName, Object... nodes)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `appendAsEJBQL​(List<Object> parameterAccumulator, Appendable out, String rootId)` | Stores a String representation of Expression as EJBQL using a provided PrintWriter.
    `void` | `appendAsString​(Appendable out)` | Appends own content as a String to the provided Appendable.
    `protected void` | `appendFunctionNameAsString​(Appendable out)` |
    `boolean` | `equals​(Object o)` |
    `protected String` | `getExpressionOperator​(int index)` |
    `String` | `getFunctionName()` |
    `int` | `getType()` | Returns a type of expression.
    `int` | `hashCode()` |
    `protected static String` | `nameToCamelCase​(String functionName)` |
    `boolean` | `needParenthesis()` |
    `protected void` | `setFunctionName​(String functionName)` |

    - ### Methods inherited from class org.apache.cayenne.exp.parser.EvaluatedNode

      `evaluateNode, evaluateSubNode, getRequiredChildrenCount`

    - ### Methods inherited from class org.apache.cayenne.exp.parser.SimpleNode

      `appendAsEJBQL, appendAsEscapedString, appendChildrenAsEJBQL, appendScalarAsString, connectChildren, encodeScalarAsEJBQL, evaluate, evaluateChild, expName, flattenTree, getEJBQLExpressionOperator, getOperand, getOperandCount, getPathAliases, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, notExp, pruneNodeForPrunedChild, setOperand, unwrapChild, wrapChild`

    - ### Methods inherited from class org.apache.cayenne.exp.Expression

      `andExp, andExp, deepCopy, encodeAsXML, filter, filterObjects, first, joinExp, joinExp, match, orExp, orExp, params, params, paramsArray, setType, shallowCopy, toEJBQL, toEJBQL, toString, transform, transformExpression, traverse, traverse`

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

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

- - ### Field Detail

    - #### functionName

          protected String functionName

  - ### Constructor Detail

    - #### ASTFunctionCall

          public ASTFunctionCall​(int id,
                                 String functionName,
                                 Object... nodes)

  - ### Method Detail

    - #### getType

          public int getType()

      Description copied from class: `Expression`
      Returns a type of expression. Most common types are defined as public static fields of this interface.
      Overrides:
        `getType` in class `Expression`

    - #### needParenthesis

          public boolean needParenthesis()

    - #### getFunctionName

          public String getFunctionName()

    - #### setFunctionName

          protected void setFunctionName​(String functionName)

    - #### getExpressionOperator

          protected String getExpressionOperator​(int index)

      Specified by:
        `getExpressionOperator` in class `SimpleNode`

    - #### equals

          public boolean equals​(Object o)

      Overrides:
        `equals` in class `Expression`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Expression`

    - #### appendFunctionNameAsString

          protected void appendFunctionNameAsString​(Appendable out)
                                             throws IOException

      Throws:
        `IOException`

    - #### appendAsString

          public void appendAsString​(Appendable out)
                              throws IOException

      Description copied from class: `Expression`
      Appends own content as a String to the provided Appendable.
      Overrides:
        `appendAsString` in class `SimpleNode`
      Throws:
        `IOException`

    - #### appendAsEJBQL

          public void appendAsEJBQL​(List<Object> parameterAccumulator,
                                    Appendable out,
                                    String rootId)
                             throws IOException

      Description copied from class: `Expression`
      Stores a String representation of Expression as EJBQL using a provided PrintWriter. DB path expressions produce non-standard EJBQL path expressions. If the parameterAccumulator is supplied then as the EJBQL is output, it may load parameters into this list. In this case, the EJBQL output will contain reference to positional parameters. If no parameterAccumulator is supplied and a scalar type is encountered for which there is no EJBQL literal representation (such as dates) then this method will throw a runtime exception to indicate that it was not possible to generate a string-only representation of the Expression in EJBQL.
      Overrides:
        `appendAsEJBQL` in class `SimpleNode`
      Throws:
        `IOException`

    - #### nameToCamelCase

          protected static String nameToCamelCase​(String functionName)

      Parameters:
        `functionName` - in UPPER_UNDERSCORE convention
      Returns:
        functionName in camelCase convention