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

  `children, id, parent`

  ### Fields inherited from class Expression

  `ADD, ALL, AND, ANY, ASTERISK, BETWEEN, BITWISE_AND, BITWISE_LEFT_SHIFT, BITWISE_NOT, BITWISE_OR, BITWISE_RIGHT_SHIFT, BITWISE_XOR, CASE_WHEN, CUSTOM_OP, DB_PATH, DBID_PATH, DIVIDE, ELSE, 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, SCALAR, SUBQUERY, SUBTRACT, THEN, TRUE, type, WHEN`

- ## Constructor Summary

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

- ## Method Summary

  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 EvaluatedNode

  `evaluateNode, evaluateSubNode, getRequiredChildrenCount`

  ### Methods inherited from class SimpleNode

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

  ### Methods inherited from class 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 Object

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

- ## Field Details

  - ### functionName

    protected String functionName

- ## Constructor Details

  - ### ASTFunctionCall

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

- ## Method Details

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