Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn Class Reference

Inheritance diagram for org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn:

Inheritance graph
[legend]
Collaboration diagram for org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ResultCacheColumn (int maxEntries, int pendingTimeout)
void processAddToCache (CacheEntry qe)
boolean isUpdateNecessary (UpdateRequest request)
String getName ()

Protected Member Functions

void processWriteNotify (AbstractWriteRequest request)

Detailed Description

This is a query cache implementation with a column granularity:

Author:
Emmanuel Cecchet

Nicolas Modrzyk

Version:
1.0

Definition at line 51 of file ResultCacheColumn.java.


Constructor & Destructor Documentation

org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn.ResultCacheColumn int  maxEntries,
int  pendingTimeout
 

Builds a new ResultCache with a Column granularity.

Parameters:
maxEntries maximum number of entries
pendingTimeout pending timeout for concurrent queries

Definition at line 59 of file ResultCacheColumn.java.

00060   {
00061     super(maxEntries, pendingTimeout);
00062     parsingGranularity = ParsingGranularities.COLUMN;
00063   }


Member Function Documentation

String org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn.getName  )  [virtual]
 

See also:
org.objectweb.cjdbc.controller.cache.result.ResultCache.getName()

Implements org.objectweb.cjdbc.controller.cache.result.ResultCache.

Definition at line 142 of file ResultCacheColumn.java.

00143   {
00144     return "column";
00145   }

boolean org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn.isUpdateNecessary UpdateRequest  request  )  [virtual]
 

See also:
org.objectweb.cjdbc.controller.cache.result.AbstractResultCache.isUpdateNecessary(org.objectweb.cjdbc.common.sql.UpdateRequest)

Implements org.objectweb.cjdbc.controller.cache.result.ResultCache.

Definition at line 108 of file ResultCacheColumn.java.

00109   {
00110     return true;
00111   }

void org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn.processAddToCache CacheEntry  qe  )  [virtual]
 

See also:
org.objectweb.cjdbc.controller.cache.result.ResultCache.processAddToCache(CacheEntry)

Implements org.objectweb.cjdbc.controller.cache.result.ResultCache.

Definition at line 68 of file ResultCacheColumn.java.

References org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseColumn.addCacheEntry(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.addCacheEntry(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.getColumn(), org.objectweb.cjdbc.common.sql.schema.TableColumn.getColumnName(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.getColumns(), org.objectweb.cjdbc.common.sql.SelectRequest.getFrom(), org.objectweb.cjdbc.controller.cache.result.entries.CacheEntry.getRequest(), org.objectweb.cjdbc.common.sql.SelectRequest.getSelect(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.getTable(), org.objectweb.cjdbc.common.sql.schema.TableColumn.getTableName(), org.objectweb.cjdbc.common.sql.SelectRequest.getWhere(), and org.objectweb.cjdbc.common.log.Trace.warn().

00069   {
00070     SelectRequest request = qe.getRequest();
00071     ArrayList selectedColumns = request.getSelect();
00072     //  Update the tables columns dependencies
00073     if (selectedColumns == null || selectedColumns.isEmpty())
00074     {
00075       logger
00076           .warn("No parsing of select clause found - Fallback to table granularity");
00077       for (Iterator i = request.getFrom().iterator(); i.hasNext();)
00078       {
00079         CacheDatabaseTable table = cdbs.getTable((String) i.next());
00080         table.addCacheEntry(qe);
00081         // Add all columns, entries will be added below.
00082         ArrayList columns = table.getColumns();
00083         for (int j = 0; j < columns.size(); j++)
00084         {
00085           ((CacheDatabaseColumn) columns.get(j)).addCacheEntry(qe);
00086         }
00087         return;
00088       }
00089     }
00090     for (Iterator i = selectedColumns.iterator(); i.hasNext();)
00091     {
00092       TableColumn tc = (TableColumn) i.next();
00093       cdbs.getTable(tc.getTableName()).getColumn(tc.getColumnName())
00094           .addCacheEntry(qe);
00095     }
00096     if (request.getWhere() != null)
00097       for (Iterator i = request.getWhere().iterator(); i.hasNext();)
00098       {
00099         TableColumn tc = (TableColumn) i.next();
00100         cdbs.getTable(tc.getTableName()).getColumn(tc.getColumnName())
00101             .addCacheEntry(qe);
00102       }
00103   }

void org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn.processWriteNotify AbstractWriteRequest  request  )  [protected, virtual]
 

See also:
org.objectweb.cjdbc.controller.cache.result.ResultCache.processWriteNotify(org.objectweb.cjdbc.common.sql.AbstractWriteRequest)

Implements org.objectweb.cjdbc.controller.cache.result.ResultCache.

Definition at line 116 of file ResultCacheColumn.java.

References org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.getColumn(), org.objectweb.cjdbc.common.sql.schema.TableColumn.getColumnName(), org.objectweb.cjdbc.common.sql.AbstractWriteRequest.getColumns(), org.objectweb.cjdbc.common.sql.AbstractRequest.getSQL(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.getTable(), org.objectweb.cjdbc.common.sql.schema.TableColumn.getTableName(), org.objectweb.cjdbc.common.sql.AbstractWriteRequest.getTableName(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseColumn.invalidateAll(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.invalidateAll(), org.objectweb.cjdbc.common.sql.AbstractWriteRequest.isAlter(), and org.objectweb.cjdbc.common.log.Trace.warn().

00117   {
00118     //    Sanity check
00119     if (request.getColumns() == null)
00120     {
00121       logger.warn("No column parsing found - Fallback to table granularity ("
00122           + request.getSQL() + ")");
00123       cdbs.getTable(request.getTableName()).invalidateAll();
00124       return;
00125     }
00126     if (request.isAlter())
00127     {
00128       cdbs.getTable(request.getTableName()).invalidateAll();
00129       return;
00130     }
00131     for (Iterator i = request.getColumns().iterator(); i.hasNext();)
00132     {
00133       TableColumn tc = (TableColumn) i.next();
00134       cdbs.getTable(tc.getTableName()).getColumn(tc.getColumnName())
00135           .invalidateAll();
00136     }
00137   }


The documentation for this class was generated from the following file:
Generated on Mon Apr 11 22:03:30 2005 for C-JDBC by  doxygen 1.3.9.1