public class SubQueryExpression extends ValueExpression implements BindVariableChangedListener, SaveValueChangedListener
Constructor and Description |
---|
SubQueryExpression(Query q) |
Modifier and Type | Method and Description |
---|---|
void |
bindVariableChanged(BindVariableChangedEvent ev) |
Object |
evaluate(Object o,
Query q) |
String |
getAccessor() |
Class |
getExpectedReturnType(Query q)
Return the class of the object that "should" be returned from a call to the:
Expression.getValue(Object,Query) method. |
com.gentlyweb.utils.Getter |
getGetter() |
Query |
getQuery() |
boolean |
hasFixedResult(Query q)
Return whether the expression will evaluate to a fixed/constant result.
|
void |
init(Query q)
Perform the necessary initialisation for this expression.
|
boolean |
isTrue(Object o,
Query q)
This method allows ANY expression (including those that extend
ValueExpression )
to be used in the WHERE and HAVING clauses but ensuring that a boolean value is
available for every expression. |
void |
saveValueChanged(SaveValueChangedEvent ev) |
void |
setAccessor(String acc) |
String |
toString()
Return a string representation of the expression, making this abstract forces
sub-classes to provide an implementation.
|
getValue
isBracketed, setBracketed
public SubQueryExpression(Query q)
public void bindVariableChanged(BindVariableChangedEvent ev)
bindVariableChanged
in interface BindVariableChangedListener
public void saveValueChanged(SaveValueChangedEvent ev)
saveValueChanged
in interface SaveValueChangedListener
public com.gentlyweb.utils.Getter getGetter()
public void setAccessor(String acc)
public String getAccessor()
public Query getQuery()
public boolean hasFixedResult(Query q)
Expression
Expression.isTrue(Object,Query)
or Expression.getValue(Object,Query)
methods will return the same object (or that o1.equals (o2) == true)
regardless of the object passed to the method.hasFixedResult
in class Expression
q
- The Query object.true
if the expression evaluates to a fixed/constant result.public Class getExpectedReturnType(Query q) throws QueryParseException
Expression
Expression.getValue(Object,Query)
method. It may be that repeated executions
of a query will return different classes from this method. In general
sub-classes should take this variance into account.getExpectedReturnType
in class Expression
q
- The Query object.Expression.getValue(Object,Query)
method.QueryParseException
- If something goes wrong with determining the type.public void init(Query q) throws QueryParseException
Expression
init
in class Expression
q
- The Query object.QueryParseException
- If something goes wrong with the initialisation.public boolean isTrue(Object o, Query q) throws QueryExecutionException
Expression
ValueExpression
)
to be used in the WHERE and HAVING clauses but ensuring that a boolean value is
available for every expression.isTrue
in class Expression
o
- The current object to evaluate the expression on.q
- The Query object.true
if the expression evaluates to true
(well duh...).QueryExecutionException
- If there is a problem with the execution of the
expression.public Object evaluate(Object o, Query q) throws QueryExecutionException
evaluate
in class ValueExpression
QueryExecutionException
public String toString()
Expression
toString
in class Expression