org.apache.openjpa.jdbc.kernel.exps
Class SQLEmbed

java.lang.Object
  extended by org.apache.openjpa.jdbc.kernel.exps.SQLEmbed
All Implemented Interfaces:
Serializable, JDBCFilterListener, FilterListener
Direct Known Subclasses:
SQLExpression, SQLValue

public class SQLEmbed
extends Object
implements JDBCFilterListener

Simple listener which embeds its SQL argument into the query. Listens on sql. Example:
"price < sql(\"(SELECT AVG (PRICE) FROM PRODUCT_TABLE)\")"

See Also:
Serialized Form

Field Summary
static String TAG
           
 
Constructor Summary
SQLEmbed()
           
 
Method Summary
 void appendTo(SQLBuffer buf, FilterValue target, FilterValue[] args, ClassMapping type, JDBCStore store)
          Append the SQL for this expression or value.
 Object evaluate(Object target, Class targetClass, Object[] args, Class[] argClasses, Object candidate, StoreContext ctx)
          Evaluate the given expression.
 boolean expectsArguments()
          Return true if this extension expects arguments to act on.
 boolean expectsTarget()
          Return true if this extension expects a target to act on.
 String getTag()
          Return the tag that this extension listens for.
 Class getType(Class targetClass, Class[] argClasses)
          Return the expected type of the result of this listener.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TAG

public static String TAG
Constructor Detail

SQLEmbed

public SQLEmbed()
Method Detail

getTag

public String getTag()
Description copied from interface: FilterListener
Return the tag that this extension listens for.

Specified by:
getTag in interface FilterListener

expectsArguments

public boolean expectsArguments()
Description copied from interface: FilterListener
Return true if this extension expects arguments to act on. Some extensions may not need arguments; for example, an extension to switch a string to upper case might be of the form: field.ext:toUpperCase ().

Specified by:
expectsArguments in interface FilterListener

expectsTarget

public boolean expectsTarget()
Description copied from interface: FilterListener
Return true if this extension expects a target to act on. Some extensions act on a field or object value; others stand alone. field.ext:toUpperCase () acts on the target field but has no arguments, while another possible form, ext:toUpperCase (field) has no target but does have an argument.

Specified by:
expectsTarget in interface FilterListener

evaluate

public Object evaluate(Object target,
                       Class targetClass,
                       Object[] args,
                       Class[] argClasses,
                       Object candidate,
                       StoreContext ctx)
Description copied from interface: FilterListener
Evaluate the given expression. This method is used when evaluating in-memory expressions. The method used when evaluating data store expressions will change depending on the data store in use.

Specified by:
evaluate in interface FilterListener
Parameters:
target - the target object / field value to act on; will be null if this extension does not expect a target
targetClass - the expected class of the target; given in case the target evaluates to null and typing is needed
args - the values of the arguments given in the filter; will be null if this extension does not expect an argument
argClasses - the expected classes of the arguments; given in case an argument evaluates to null and typing is needed
candidate - the candidate object being evaluated
ctx - the persistence context
Returns:
the value of the extension for this candidate; if this extension is an expression, this method should return Boolean.TRUE or Boolean.FALSE

appendTo

public void appendTo(SQLBuffer buf,
                     FilterValue target,
                     FilterValue[] args,
                     ClassMapping type,
                     JDBCStore store)
Description copied from interface: JDBCFilterListener
Append the SQL for this expression or value.

Specified by:
appendTo in interface JDBCFilterListener
Parameters:
buf - the SQL buffer to append to
target - the target to act on, or null if the listener doesn't expect a target
args - the values of the arguments given in the filter, or null if this listener doesn't expect arguments
type - the class mapping for the query's candidate class
store - the store that owns the query

getType

public Class getType(Class targetClass,
                     Class[] argClasses)
Description copied from interface: FilterListener
Return the expected type of the result of this listener.

Specified by:
getType in interface FilterListener
Parameters:
targetClass - the expected class of the target, or null if no target
argClasses - the expected classes of the arguments, or null if no arguments


Copyright © 2006-2007 Apache Software Foundation. All Rights Reserved.