Class FunctionExpression

  • 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}*)

    Version:
    2.5
    Author:
    James
    Since:
    2.4
    • Constructor Detail

      • FunctionExpression

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

        public FunctionExpression​(AbstractExpression parent,
                                  java.lang.String identifier,
                                  FunctionExpressionFactory.ParameterCount parameterCount,
                                  java.lang.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 Detail

      • getFunctionName

        public java.lang.String getFunctionName()
        Returns the name of the SQL function.
        Returns:
        The name of the SQL function
      • getUnquotedFunctionName

        public java.lang.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
      • 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)
        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​(java.lang.StringBuilder writer,
                                                          boolean actual)
        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