|
SolarMetric Kodo JDO 3.1.6 generated on August 25 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 the classes that affect this query. |
Collection |
getAggregateListeners()
Return the aggregate listeners for the query, or empty collection if none. |
String[] |
getAliases()
Return the aliases for the result expressions. |
boolean[] |
getAscending()
Return wheher each ordering 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. |
String[] |
getDataStoreActions(Map params)
Returns a description of the commands that will be sent to the datastore in order to execute this query. |
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. |
Collection |
getFilterListeners()
Return the filter listeners for the query, or empty collection if none. |
boolean |
getIgnoreCache()
|
String[] |
getImportPackages()
Return the import packages. |
String |
getImports()
Return the import declaration. |
String |
getLanguage()
Return the language of this query. |
String |
getOrdering()
Return the ordering expression that this query was configured with. |
String[] |
getOrderingCriteria()
Return the ordering criteria. |
String |
getParameters()
Return the declared parameters. |
Map |
getParameterTypes()
Return a map of parameter name to type for this query. |
PersistenceManager |
getPersistenceManager()
|
String |
getResult()
Return the result expression set for this query. |
Class |
getResultClass()
Returns the result class that has been set through setResultClass(java.lang.Class), or null if none. |
String[] |
getResultExpressions()
Return the result expressions. |
Boolean |
getUnique()
The unique flag, or null if it hasn't been set. |
String |
getVariables()
Return the declared variables. |
Map |
getVariableTypes()
Return a map of variable name to type for this query. |
boolean |
hasSubclasses()
Whether query results will include subclasses of the candidate class. |
boolean |
isAggregate()
Return true if the query is an aggregate. |
void |
lock()
Synchronize on the query's internal lock. |
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. |
void |
unlock()
Unlock the query's internal lock. |
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 String getLanguage()
KodoQuerygetLanguage in interface KodoQuerypublic FetchConfiguration getFetchConfiguration()
KodoQuerygetFetchConfiguration in interface KodoQuerypublic Collection getFilterListeners()
KodoQuerygetFilterListeners in interface KodoQuerypublic void registerListener(FilterListener listener)
KodoQueryregisterListener in interface KodoQuerypublic Collection getAggregateListeners()
KodoQuerygetAggregateListeners 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 boolean hasSubclasses()
KodoQueryhasSubclasses in interface KodoQuerypublic String getFilter()
KodoQuerygetFilter in interface KodoQuerypublic String getOrdering()
KodoQuerygetOrdering in interface KodoQuerypublic String getImports()
KodoQuerygetImports in interface KodoQuerypublic String getParameters()
KodoQuerygetParameters in interface KodoQuerypublic String getVariables()
KodoQuerygetVariables in interface KodoQuerypublic String getResult()
KodoQuerygetResult in interface KodoQuerypublic boolean isAggregate()
KodoQuerySPIisAggregate in interface KodoQuerySPIpublic void setUnique(boolean unique)
KodoQuerysetUnique in interface KodoQuerypublic Boolean getUnique()
KodoQuerygetUnique 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 KodoQuerypublic String[] getDataStoreActions(Map params)
KodoQuerygetDataStoreActions in interface KodoQuerykodo.query.KodoQueryparams - the named parameter map for the query invocationpublic ClassMetaData[] getAccessPathMetaDatas()
KodoQuerySPIgetAccessPathMetaDatas in interface KodoQuerySPIpublic String[] getImportPackages()
KodoQuerySPIgetImportPackages in interface KodoQuerySPIpublic Map getParameterTypes()
KodoQuerySPIgetParameterTypes in interface KodoQuerySPIpublic Map getVariableTypes()
KodoQuerySPIgetVariableTypes in interface KodoQuerySPIpublic String[] getOrderingCriteria()
KodoQuerySPIgetOrderingCriteria in interface KodoQuerySPIpublic boolean[] getAscending()
KodoQuerySPIgetAscending in interface KodoQuerySPIpublic String[] getResultExpressions()
KodoQuerySPIgetResultExpressions in interface KodoQuerySPIpublic String[] getAliases()
KodoQuerySPIgetAliases in interface KodoQuerySPIpublic void lock()
KodoQuerySPIlock in interface KodoQuerySPIpublic void unlock()
KodoQuerySPIunlock in interface KodoQuerySPI
|
SolarMetric Kodo JDO 3.1.6 generated on August 25 2004 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||