01: //$Id: SQLFunction.java 10775 2006-11-08 16:56:52Z steve.ebersole@jboss.com $
02: package org.hibernate.dialect.function;
03:
04: import java.util.List;
05:
06: import org.hibernate.QueryException;
07: import org.hibernate.engine.Mapping;
08: import org.hibernate.engine.SessionFactoryImplementor;
09: import org.hibernate.type.Type;
10:
11: /**
12: * Provides support routines for the HQL functions as used
13: * in the various SQL Dialects
14: *
15: * Provides an interface for supporting various HQL functions that are
16: * translated to SQL. The Dialect and its sub-classes use this interface to
17: * provide details required for processing of the function.
18: *
19: * @author David Channon
20: */
21: public interface SQLFunction {
22: /**
23: * The return type of the function. May be either a concrete type which
24: * is preset, or variable depending upon the type of the first function
25: * argument.
26: *
27: * @param columnType the type of the first argument
28: * @param mapping The mapping source.
29: * @return The type to be expected as a return.
30: * @throws org.hibernate.QueryException Indicates an issue resolving the return type.
31: */
32: public Type getReturnType(Type columnType, Mapping mapping)
33: throws QueryException;
34:
35: /**
36: * Does this function have any arguments?
37: *
38: * @return True if the function expects to have parameters; false otherwise.
39: */
40: public boolean hasArguments();
41:
42: /**
43: * If there are no arguments, are parens required?
44: *
45: * @return True if a no-arg call of this function requires parentheses.
46: */
47: public boolean hasParenthesesIfNoArguments();
48:
49: /**
50: * Render the function call as SQL fragment.
51: *
52: * @param args The function arguments
53: * @param factory The SessionFactory
54: * @return The rendered function call
55: * @throws org.hibernate.QueryException Indicates a problem rendering the
56: * function call.
57: */
58: public String render(List args, SessionFactoryImplementor factory)
59: throws QueryException;
60: }
|