All Implemented Interfaces:
Expression

public final class FunctionExpression extends AbstractSingleEncapsulatedExpression
This expression adds support to call native database functions.

New to JPA 2.1.

BNF: func_expression ::= <identifier>('function_name' {, func_item}*)
Since:
2.4
Version:
2.5
  • Constructor Details

    • FunctionExpression

      public FunctionExpression(AbstractExpression parent, String identifier)
      Creates a new FuncExpression.
      Parameters:
      parent - The parent of this expression
      identifier - The JPQL identifier
    • FunctionExpression

      public FunctionExpression(AbstractExpression parent, String identifier, FunctionExpressionFactory.ParameterCount parameterCount, String parameterQueryBNFId)
      Creates a new FunctionExpression.
      Parameters:
      parent - The parent of this expression
      identifier - The JPQL identifier
      parameterCount - The number of parameters a FunctionExpression can have
      parameterQueryBNFId - The unique identifier of the JPQLQueryBNF that will be used to parse the arguments of the function expression
  • Method Details

    • accept

      public void accept(ExpressionVisitor visitor)
      Description copied from interface: Expression
      Visits this Expression by the given visitor.
      Parameters:
      visitor - The ExpressionVisitor to visit this object
    • addOrderedEncapsulatedExpressionTo

      protected void addOrderedEncapsulatedExpressionTo(List<Expression> children)
      Description copied from class: AbstractEncapsulatedExpression
      Adds the Expressions representing the encapsulated Expression.
      Overrides:
      addOrderedEncapsulatedExpressionTo in class AbstractSingleEncapsulatedExpression
      Parameters:
      children - The list used to store the string representation of the encapsulated Expression
    • getEncapsulatedExpressionQueryBNFId

      public String getEncapsulatedExpressionQueryBNFId()
      Description copied from class: AbstractSingleEncapsulatedExpression
      Returns the BNF used to parse the encapsulated expression.
      Specified by:
      getEncapsulatedExpressionQueryBNFId in class AbstractSingleEncapsulatedExpression
      Returns:
      The BNF used to parse the encapsulated expression
    • getFunctionName

      public String getFunctionName()
      Returns the name of the SQL function.
      Returns:
      The name of the SQL function
    • getParameterCount

      public FunctionExpressionFactory.ParameterCount getParameterCount()
      Returns the number of parameters a FunctionExpression can have, which will be during validation.
      Returns:
      The number of parameters (encapsulated expressions) allowed by this expression
      Since:
      2.4
    • getQueryBNF

      public JPQLQueryBNF getQueryBNF()
      Description copied from interface: Expression
      Returns the BNF of this Expression.
      Returns:
      The JPQLQueryBNF, which represents the grammar of this Expression
    • getUnquotedFunctionName

      public String getUnquotedFunctionName()
      Returns the name of the SQL function.
      Returns:
      The name of the SQL function
    • hasComma

      public boolean hasComma()
      Determines whether the comma was parsed after the function name.
      Returns:
      true if a comma was parsed after the function name and the first expression; false otherwise
    • hasEncapsulatedExpression

      public boolean hasEncapsulatedExpression()
      Description copied from class: AbstractEncapsulatedExpression
      Determines whether something was parsed after the left parenthesis.
      Overrides:
      hasEncapsulatedExpression in class AbstractSingleEncapsulatedExpression
      Returns:
      true if something was parsed; false otherwise
    • hasFunctionName

      public boolean hasFunctionName()
      Determines whether the function name was parsed.
      Returns:
      true if the function name was parsed; false otherwise
    • hasSpaceAfterComma

      public boolean hasSpaceAfterComma()
      Determines whether a whitespace was parsed after the comma.
      Returns:
      true if there was a whitespace after the comma; false otherwise
    • parseEncapsulatedExpression

      protected void parseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant)
      Description copied from class: AbstractEncapsulatedExpression
      Parses the encapsulated expression by starting at the current position, which is part of the given WordParser.
      Overrides:
      parseEncapsulatedExpression in class AbstractSingleEncapsulatedExpression
      Parameters:
      wordParser - The text to parse based on the current position of the cursor
      whitespaceCount - The number of whitespace characters that were parsed after '('
      tolerant - Determines whether the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
    • toParsedTextEncapsulatedExpression

      protected void toParsedTextEncapsulatedExpression(StringBuilder writer, boolean actual)
      Description copied from class: AbstractEncapsulatedExpression
      Generates a string representation of the encapsulated Expression.
      Overrides:
      toParsedTextEncapsulatedExpression in class AbstractSingleEncapsulatedExpression
      Parameters:
      writer - The buffer used to append the encapsulated Expression's string representation
      actual - Determines whether to include any characters that are considered virtual, i.e. that was parsed when the query is incomplete and is needed for functionality like content assist