Class DefaultUDF

    • Field Detail

      • definition

        protected FunctionDef definition
        Define/Describe this user defined function. This object gives the return type and the number and type of all parameters.
      • functionName

        protected final java.lang.String functionName
        Parsed name of this UDF.
    • Constructor Detail

      • DefaultUDF

        public DefaultUDF​(java.lang.String name,
                          ADQLOperand[] params)
                   throws java.lang.NullPointerException
        Creates a user function.
        Parameters:
        params - Parameters of the function.
        Throws:
        java.lang.NullPointerException
      • DefaultUDF

        public DefaultUDF​(DefaultUDF toCopy)
                   throws java.lang.Exception
        Builds a UserFunction by copying the given one.
        Parameters:
        toCopy - The UserFunction to copy.
        Throws:
        java.lang.Exception - If there is an error during the copy.
    • Method Detail

      • getDefinition

        public final FunctionDef getDefinition()
        Get the signature/definition/description of this user defined function. The returned object provides information on the return type and the number and type of parameters.
        Returns:
        Definition of this function. (MAY be NULL)
      • setDefinition

        public final void setDefinition​(FunctionDef def)
                                 throws java.lang.IllegalArgumentException

        Let set the signature/definition/description of this user defined function.

        IMPORTANT: No particular checks are done here except on the function name which MUST be the same (case insensitive) as the name of the given definition. Advanced checks must have been done before calling this setter.

        Parameters:
        def - The definition applying to this parsed UDF, or NULL if none has been found.
        Throws:
        java.lang.IllegalArgumentException - If the name in the given definition does not match the name of this parsed function.
        Since:
        1.3
      • isNumeric

        public final boolean isNumeric()
        Description copied from interface: ADQLOperand
        Tell whether this operand is numeric or not.
        Returns:
        true if this operand is numeric, false otherwise.
      • isString

        public final boolean isString()
        Description copied from interface: ADQLOperand
        Tell whether this operand is a string or not.
        Returns:
        true if this operand is a string, false otherwise.
      • isGeometry

        public final boolean isGeometry()
        Description copied from interface: ADQLOperand
        Tell whether this operand is a geometrical region or not.
        Returns:
        true if this operand is a geometry, false otherwise.
      • getCopy

        public ADQLObject getCopy()
                           throws java.lang.Exception
        Description copied from interface: ADQLObject
        Gets a (deep) copy of this ADQL object.
        Returns:
        The copy of this ADQL object.
        Throws:
        java.lang.Exception - If there is any error during the copy.
      • getName

        public final java.lang.String getName()
        Description copied from interface: ADQLObject
        Gets the name of this object in ADQL.
        Returns:
        The name of this ADQL object.
      • getNbParameters

        public final int getNbParameters()
        Description copied from class: ADQLFunction
        Gets the number of parameters this function has.
        Specified by:
        getNbParameters in class ADQLFunction
        Returns:
        Number of parameters.
      • getParameter

        public final ADQLOperand getParameter​(int index)
                                       throws java.lang.ArrayIndexOutOfBoundsException
        Description copied from class: ADQLFunction
        Gets the index-th parameter.
        Specified by:
        getParameter in class ADQLFunction
        Parameters:
        index - Parameter number.
        Returns:
        The corresponding parameter.
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - If the index is incorrect (index < 0 || index >= getNbParameters()).
      • setParameter

        public ADQLOperand setParameter​(int index,
                                        ADQLOperand replacer)
                                 throws java.lang.ArrayIndexOutOfBoundsException,
                                        java.lang.NullPointerException,
                                        java.lang.Exception
        Function to override if you want to check the parameters of this user defined function.
        Specified by:
        setParameter in class ADQLFunction
        Parameters:
        index - Index of the parameter to replace.
        replacer - The replacer.
        Returns:
        The replaced parameter.
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - If the index is incorrect (index < 0 || index >= getNbParameters()).
        java.lang.NullPointerException - If a required parameter must be replaced by a NULL object.
        java.lang.Exception - If another error occurs.
        See Also:
        ADQLFunction.setParameter(int, adql.query.operand.ADQLOperand)
      • translate

        public java.lang.String translate​(ADQLTranslator caller)
                                   throws TranslationException
        Description copied from class: UserDefinedFunction

        Translate this User Defined Function into the language supported by the given translator.

        VERY IMPORTANT: This function MUST NOT use ADQLTranslator.translate(UserDefinedFunction) to translate itself. The given ADQLTranslator must be used ONLY to translate UDF's operands.

        Implementation example (extract of translate(ADQLTranslator)):

         public String translate(final ADQLTranslator caller) throws TranslationException{
                StringBuffer sql = new StringBuffer(functionName);
                sql.append('(');
                for(int i = 0; i < parameters.size(); i++){
                        if (i > 0)
                                sql.append(',').append(' ');
                        sql.append(caller.translate(parameters.get(i)));
                }
                sql.append(')');
                return sql.toString();
         }
         
        Specified by:
        translate in class UserDefinedFunction
        Parameters:
        caller - Translator to use in order to translate ONLY function parameters.
        Returns:
        The translation of this UDF into the language supported by the given translator.
        Throws:
        TranslationException - If one of the parameters can not be translated.