com.mckoi.database
Class AbstractFunction

java.lang.Object
  extended by com.mckoi.database.AbstractFunction
All Implemented Interfaces:
Function
Direct Known Subclasses:
AbstractAggregateFunction

public abstract class AbstractFunction
extends java.lang.Object
implements Function

An abstract implementation of Function.

Author:
Tobias Downer

Constructor Summary
AbstractFunction(java.lang.String name, Expression[] params)
          Constructs the Function with the given expression array as parameters.
 
Method Summary
 java.util.List allElements()
          Returns the list of all elements that are used by this function.
 java.util.List allVariables()
          Returns the list of all Variable's that are used by this function.
 java.lang.String getName()
          Returns the name of the function.
 Expression getParameter(int n)
          Returns the parameter at the given index in the parameters list.
 void init(VariableResolver resolver)
          The init function.
 boolean isAggregate(QueryContext context)
          Returns whether the function is an aggregate function or not.
 boolean isGlob()
          Returns true if the param is the special case glob parameter (*).
 int parameterCount()
          Returns the number of parameters for this function.
 void prepareParameters(ExpressionPreparer preparer)
          Prepares the parameters of the function.
 TType returnTType()
           
 TType returnTType(VariableResolver resolver, QueryContext context)
          By Default, we assume a function returns a Numeric object.
protected  void setAggregate(boolean status)
          Call this from the constructor if the function is an aggregate.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.mckoi.database.Function
evaluate
 

Constructor Detail

AbstractFunction

public AbstractFunction(java.lang.String name,
                        Expression[] params)
Constructs the Function with the given expression array as parameters.

Method Detail

setAggregate

protected void setAggregate(boolean status)
Call this from the constructor if the function is an aggregate.


parameterCount

public int parameterCount()
Returns the number of parameters for this function.


getParameter

public Expression getParameter(int n)
Returns the parameter at the given index in the parameters list.


isGlob

public boolean isGlob()
Returns true if the param is the special case glob parameter (*).


getName

public java.lang.String getName()
Returns the name of the function. The name is a unique identifier that can be used to recreate this function. This identifier can be used to easily serialize the function when grouped with its parameters.

Specified by:
getName in interface Function

allVariables

public java.util.List allVariables()
Returns the list of all Variable's that are used by this function. This looks up each expression in the list of parameters. This will cascade if the expressions have a Function, etc.

Specified by:
allVariables in interface Function

allElements

public java.util.List allElements()
Returns the list of all elements that are used by this function. This looks up each expression in the list of parameters. This will cascade if the expressions have a Function, etc.

Specified by:
allElements in interface Function

isAggregate

public final boolean isAggregate(QueryContext context)
Returns whether the function is an aggregate function or not.

Specified by:
isAggregate in interface Function

prepareParameters

public void prepareParameters(ExpressionPreparer preparer)
                       throws DatabaseException
Prepares the parameters of the function.

Specified by:
prepareParameters in interface Function
Throws:
DatabaseException

init

public void init(VariableResolver resolver)
The init function. By default, we don't do anything however this should be overwritten if we need to check the parameter arguments.


returnTType

public TType returnTType(VariableResolver resolver,
                         QueryContext context)
By Default, we assume a function returns a Numeric object.

Specified by:
returnTType in interface Function

returnTType

public TType returnTType()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object