|
SolarMetric Kodo JDO 3.0.3 generated on February 20 2004 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--kodo.datacache.CacheAwareQuery
A Query implementation that caches the OIDs involved in
the query, and can determine whether or not the query has been
dirtied.
| Fields inherited from interface kodo.query.KodoQuery |
FLUSH_FALSE, FLUSH_TRUE, FLUSH_WITH_CONNECTION |
| Constructor Summary | |
CacheAwareQuery(KodoQuery query,
QueryCache cache)
Create a new CacheAwareQuery that delegates to
query if no cached results are available. |
|
| Method Summary | |
void |
abortCaching()
Instructs this query to notify all CachingList objects
created by it to stop caching results. |
protected ResultList |
checkCache(QueryKey qk)
Look in the query cache for a result for the given query key. |
void |
close(Object arg)
|
void |
closeAll()
|
void |
compile()
|
void |
declareImports(String arg)
|
void |
declareParameters(String arg)
|
void |
declareVariables(String arg)
|
Object |
execute()
|
Object |
execute(Object arg)
|
Object |
execute(Object arg0,
Object arg1)
|
Object |
execute(Object arg0,
Object arg1,
Object arg2)
|
Object |
executeWithArray(Object[] args)
|
Object |
executeWithMap(Map args)
|
ClassMetaData[] |
getAccessPathMetaDatas()
Return an array of ClassMetaData for all
classes involved in this query, or null if the access
path for this query cannot be computed. |
boolean[] |
getAscending()
For each expression returned by getOrdering(), return whether
that expression is ascending. |
QueryCache |
getCache()
Return the QueryCache that this object is associated
with. |
Class |
getCandidateClass()
Return the class of the objects that this query will return, or null if this information is not available /
not relevant. |
Collection |
getCandidateCollection()
Return the candidate collection, or null if an
extent was specified instead of a collection. |
KodoExtent |
getCandidateExtent()
Return the candidate extent, or null if a
collection was specified instead of an extent. |
KodoQuery |
getDelegate()
Returns the query that is being cached. |
FetchConfiguration |
getFetchConfiguration()
Return the (mutable) fetch configuration for this query. |
String |
getFilter()
Return the filter that this query has been configured with. |
boolean |
getIgnoreCache()
|
String[] |
getOrdering()
Return the ordering expressions that this query was configured with. |
String[][] |
getParameterDeclarations()
Return a two-dimensional String array containing
the parameter declarations for this query. |
PersistenceManager |
getPersistenceManager()
|
String[] |
getResult()
Return the result expressions set for this query. |
String[] |
getResultAliases()
For each expression from getResult(), return the alias set for
that expression. |
Class |
getResultClass()
Returns the result class that has been set through setResultClass(java.lang.Class), or null if none. |
void |
registerListener(AggregateListener listener)
Register a filter listener for the query. |
void |
registerListener(FilterListener listener)
Register a filter listener for the query. |
void |
setCandidates(Collection arg)
|
void |
setCandidates(Extent arg)
|
void |
setClass(Class arg)
|
void |
setFilter(String arg)
|
void |
setIgnoreCache(boolean arg)
|
void |
setOrdering(String arg)
|
void |
setResult(String result)
JDO 2.0 Preview. |
void |
setResultClass(Class cls)
JDO 2.0 Preview. |
void |
setUnique(boolean unique)
JDO 2.0 Preview. |
protected Object |
wrapResult(Object o,
QueryKey qk)
Wrap the query result in a list that will cache the values upon completion of the traversal of the underlying list. |
Object |
writeReplace()
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public CacheAwareQuery(KodoQuery query,
QueryCache cache)
CacheAwareQuery that delegates to
query if no cached results are available.| Method Detail |
protected ResultList checkCache(QueryKey qk)
Look in the query cache for a result for the given query key. Only look if this query is being executed outside a transaction or in a transaction with IgnoreCache set to true or in a transaction with IgnoreCache set to false but in which none of the classes involved in this query have been touched.
Caching is not used when using pessimistic transactions. This is because we must obtain locks on the data, and it is likely that making n trips to the database to make the locks will be slower than running the query against the database.
If KodoQuery#getQueryCacheEnabled returns
false, this method returns null.
Return the list if we meet the above criteria and if a list
is found for qk. Else, return
null.
This implementation means that queries against the cache are of READ_COMMITTED isolation level. It'd be nice to support READ_SERIALIZABLE -- to do so, we'd just return false when in a transaction.
protected Object wrapResult(Object o,
QueryKey qk)
Wrap the query result in a list that will cache the values upon completion of the traversal of the underlying list.
This list must not register its results with the cache if one of the classes involved in this query is touched during the traversal of the query.
This method may decide not to do any caching of the query identified. For example, it might just return the supplied list if the query involves classes that are not cacheable.
public QueryCache getCache()
QueryCache that this object is associated
with.public void abortCaching()
CachingList objects
created by it to stop caching results. Upon invoking this
method, all caching efforts are aborted, and any partial
results are dropped.public KodoQuery getDelegate()
public Object writeReplace()
throws ObjectStreamException
public void setClass(Class arg)
setClass in interface Querypublic void setCandidates(Extent arg)
setCandidates in interface Querypublic void setCandidates(Collection arg)
setCandidates in interface Querypublic void setFilter(String arg)
setFilter in interface Querypublic void declareImports(String arg)
declareImports in interface Querypublic void declareParameters(String arg)
declareParameters in interface Querypublic void declareVariables(String arg)
declareVariables in interface Querypublic void setOrdering(String arg)
setOrdering in interface Querypublic void setIgnoreCache(boolean arg)
setIgnoreCache in interface Querypublic boolean getIgnoreCache()
getIgnoreCache in interface Querypublic void compile()
compile in interface Querypublic Object execute()
execute in interface Querypublic Object execute(Object arg)
execute in interface Query
public Object execute(Object arg0,
Object arg1)
execute in interface Query
public Object execute(Object arg0,
Object arg1,
Object arg2)
execute in interface Querypublic Object executeWithMap(Map args)
executeWithMap in interface Querypublic Object executeWithArray(Object[] args)
executeWithArray in interface Querypublic PersistenceManager getPersistenceManager()
getPersistenceManager in interface Querypublic void close(Object arg)
close in interface Querypublic void closeAll()
closeAll in interface Querypublic FetchConfiguration getFetchConfiguration()
KodoQuerygetFetchConfiguration in interface KodoQuerypublic void registerListener(FilterListener listener)
KodoQueryregisterListener in interface KodoQuerypublic void registerListener(AggregateListener listener)
KodoQueryregisterListener in interface KodoQuerypublic KodoExtent getCandidateExtent()
KodoQuerynull if a
collection was specified instead of an extent.getCandidateExtent in interface KodoQuerypublic Collection getCandidateCollection()
KodoQuerynull if an
extent was specified instead of a collection.getCandidateCollection in interface KodoQuerypublic Class getCandidateClass()
KodoQuerynull if this information is not available /
not relevant.getCandidateClass in interface KodoQuerypublic String getFilter()
KodoQuerygetFilter in interface KodoQuerypublic String[] getOrdering()
KodoQuerygetOrdering in interface KodoQuerypublic boolean[] getAscending()
KodoQueryKodoQuery.getOrdering(), return whether
that expression is ascending.getAscending in interface KodoQuerypublic String[][] getParameterDeclarations()
KodoQueryString array containing
the parameter declarations for this query. For example, a
query that has two int parameters called
foo and bar would return
{ { "int", "foo" }, { "int", "bar" } }. Returns
null if there are no parameter declarations.getParameterDeclarations in interface KodoQuerypublic String[] getResult()
KodoQuerygetResult in interface KodoQuerypublic String[] getResultAliases()
KodoQueryKodoQuery.getResult(), return the alias set for
that expression.getResultAliases in interface KodoQuerypublic ClassMetaData[] getAccessPathMetaDatas()
KodoQueryClassMetaData for all
classes involved in this query, or null if the access
path for this query cannot be computed.getAccessPathMetaDatas in interface KodoQuerypublic void setUnique(boolean unique)
KodoQuerysetUnique in interface KodoQuerypublic void setResult(String result)
KodoQuerynull, this
query will return a list of the query's candidate class. Otherwise,
this query will return aggregate function results and / or
individual field values (projections).setResult in interface KodoQuerykodo.query.KodoQuerydata - a comma-delimited list of fields, functions on fields,
or aggregate functions to return from this querypublic void setResultClass(Class cls)
KodoQueryQuery.execute() or one of its siblings. The
behavior of this method depends the nature of the query being executed.
In particular, if used in conjunction with KodoQuery.setResult(java.lang.String),
the argument to this method should be
Object[].class, a class with bean-like setters
for each of the items listed in the result specification, or
a class with a method called put with two
Object arguments.setResultClass in interface KodoQuerypublic Class getResultClass()
KodoQueryKodoQuery.setResultClass(java.lang.Class), or null if none.getResultClass in interface KodoQuery
|
SolarMetric Kodo JDO 3.0.3 generated on February 20 2004 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||