Public Member Functions | |
CacheDatabaseTable (DatabaseTable databaseTable) | |
String | getName () |
void | addColumn (CacheDatabaseColumn column) |
void | mergeColumns (CacheDatabaseTable t) throws SQLException |
ArrayList | getColumns () |
CacheDatabaseColumn | getColumn (String columnName) |
boolean | equals (Object other) |
synchronized void | addCacheEntry (CacheEntry ce) |
void | addPkCacheEntry (String pk, CacheEntry ce) |
ResultCacheEntry | getPkResultCacheEntry (String pk) |
void | removePkResultCacheEntry (Object pk) |
void | invalidateAll () |
synchronized void | invalidateAllExceptPk () |
String | getInformation (boolean longFormat) |
CacheDatabaseTable
represents a database table and its associated cache entries. It has an array of CacheDatabaseColumn
objects.
Keep it mind that ArrayList
and HashMap
are not synchronized...
Definition at line 51 of file CacheDatabaseTable.java.
|
Creates a new
Definition at line 63 of file CacheDatabaseTable.java. References org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumns(), and org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getName(). 00064 { 00065 // Clone the name and the columns 00066 name = databaseTable.getName(); 00067 ArrayList origColumns = databaseTable.getColumns(); 00068 int size = origColumns.size(); 00069 columns = new ArrayList(size); 00070 for (int i = 0; i < size; i++) 00071 columns.add(new CacheDatabaseColumn(((DatabaseColumn) origColumns.get(i)) 00072 .getName())); 00073 00074 // Create an empty cache 00075 cacheEntries = new ArrayList(); 00076 pkCacheEntries = new HashMap(); 00077 }
|
|
Adds a
Definition at line 187 of file CacheDatabaseTable.java. Referenced by org.objectweb.cjdbc.controller.cache.result.ResultCacheTable.processAddToCache(), org.objectweb.cjdbc.controller.cache.result.ResultCacheColumnUnique.processAddToCache(), and org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn.processAddToCache(). 00188 { 00189 cacheEntries.add(ce); 00190 }
|
|
Adds a
Warning! The underlying
Definition at line 96 of file CacheDatabaseTable.java. Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.mergeColumns(). 00097 { 00098 columns.add(column); 00099 }
|
|
Adds a
Definition at line 198 of file CacheDatabaseTable.java. Referenced by org.objectweb.cjdbc.controller.cache.result.ResultCacheColumnUnique.processAddToCache(). 00199 {
00200 synchronized (pkCacheEntries)
00201 {
00202 pkCacheEntries.put(pk, ce);
00203 }
00204 }
|
|
Two
Definition at line 172 of file CacheDatabaseTable.java. References org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.getColumns(), and org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.getName(). Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.equals(). 00173 { 00174 if (!(other instanceof CacheDatabaseTable)) 00175 return false; 00176 00177 CacheDatabaseTable t = (CacheDatabaseTable) other; 00178 return t.getName().equals(name) && t.getColumns().equals(columns); 00179 }
|
|
|
Returns a list of
Warning! The underlying
Definition at line 142 of file CacheDatabaseTable.java. Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.equals(), org.objectweb.cjdbc.controller.cache.result.ResultCacheColumnUnique.processAddToCache(), and org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn.processAddToCache(). 00143 {
00144 return columns;
00145 }
|
|
Returns information about the database table and its columns.
Definition at line 279 of file CacheDatabaseTable.java. References org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseColumn.getInformation(). Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.getInformation(). 00280 { 00281 String result = "Table " + name + ": "; 00282 int size = columns.size(); 00283 for (int i = 0; i < size; i++) 00284 { 00285 CacheDatabaseColumn c = (CacheDatabaseColumn) columns.get(i); 00286 if (longFormat) 00287 result += "\n"; 00288 result += c.getInformation(); 00289 if (!longFormat && (i < size - 1)) 00290 result += ","; 00291 } 00292 return result; 00293 }
|
|
Gets the name of the table.
Definition at line 84 of file CacheDatabaseTable.java. Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.equals(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.getTable(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.hasTable(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.mergeSchema(), and org.objectweb.cjdbc.controller.cache.result.ResultCache.setDatabaseSchema(). 00085 {
00086 return name;
00087 }
|
|
Gets a
Definition at line 212 of file CacheDatabaseTable.java. Referenced by org.objectweb.cjdbc.controller.cache.result.ResultCacheColumnUnique.isUpdateNecessary(), org.objectweb.cjdbc.controller.cache.result.ResultCacheColumnUnique.processAddToCache(), and org.objectweb.cjdbc.controller.cache.result.ResultCacheColumnUnique.processWriteNotify(). 00213 { 00214 if (pk == null) 00215 return null; 00216 synchronized (pkCacheEntries) 00217 { 00218 return (ResultCacheEntry) pkCacheEntries.get(pk); 00219 } 00220 }
|
|
Invalidates all cache entries of every column of this table. This does also affect the entries based on pk values. Definition at line 240 of file CacheDatabaseTable.java. References org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntry.invalidate(). Referenced by org.objectweb.cjdbc.controller.cache.result.ResultCacheTable.processWriteNotify(), org.objectweb.cjdbc.controller.cache.result.ResultCacheColumnUnique.processWriteNotify(), org.objectweb.cjdbc.controller.cache.result.ResultCacheColumn.processWriteNotify(), org.objectweb.cjdbc.controller.cache.result.ResultCache.setDatabaseSchema(), and org.objectweb.cjdbc.controller.cache.result.ResultCache.writeNotify(). 00241 { 00242 synchronized (this) 00243 { 00244 for (Iterator i = cacheEntries.iterator(); i.hasNext();) 00245 ((ResultCacheEntry) i.next()).invalidate(); 00246 cacheEntries.clear(); 00247 00248 for (int i = 0; i < columns.size(); i++) 00249 ((CacheDatabaseColumn) columns.get(i)).invalidateAll(); 00250 } 00251 synchronized (pkCacheEntries) 00252 { // All pk cache entries have been invalidated as a side effect by the 00253 // above loop. 00254 pkCacheEntries.clear(); 00255 } 00256 }
|
|
Invalidates all cache entries of every column of this table. This does not affect the entries based on pk values. Definition at line 262 of file CacheDatabaseTable.java. References org.objectweb.cjdbc.common.sql.AbstractRequest.getCacheAbility(), org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntry.getRequest(), org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntry.invalidate(), and org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntry.next. 00263 { 00264 for (Iterator i = cacheEntries.iterator(); i.hasNext();) 00265 { 00266 ResultCacheEntry qce = (ResultCacheEntry) i.next(); 00267 if (qce.getRequest().getCacheAbility() != RequestType.UNIQUE_CACHEABLE) 00268 qce.invalidate(); 00269 } 00270 cacheEntries.clear(); 00271 }
|
|
Merge the given table's columns with the current table. All missing columns are added if no conflict is detected. An exception is thrown if the given table columns conflicts with the current one.
Definition at line 109 of file CacheDatabaseTable.java. References org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.addColumn(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseColumn.equals(), org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseTable.getColumn(), org.objectweb.cjdbc.common.sql.schema.DatabaseTable.getColumns(), and org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseColumn.getName(). Referenced by org.objectweb.cjdbc.controller.cache.result.schema.CacheDatabaseSchema.mergeSchema(). 00110 { 00111 if (t == null) 00112 return; 00113 00114 ArrayList otherColumns = t.getColumns(); 00115 if (otherColumns == null) 00116 return; 00117 00118 int size = otherColumns.size(); 00119 for (int i = 0; i < size; i++) 00120 { 00121 CacheDatabaseColumn c = (CacheDatabaseColumn) otherColumns.get(i); 00122 CacheDatabaseColumn original = getColumn(c.getName()); 00123 if (original == null) 00124 addColumn(c); 00125 else 00126 { 00127 if (!original.equals(c)) 00128 throw new SQLException("Column " + c.getName() 00129 + " definition mismatch."); 00130 } 00131 } 00132 }
|
|
Remove a
Definition at line 227 of file CacheDatabaseTable.java. References org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntry.invalidate(). Referenced by org.objectweb.cjdbc.controller.cache.result.ResultCacheColumnUnique.processWriteNotify(). 00228 {
00229 synchronized (pkCacheEntries)
00230 {
00231 ResultCacheEntry rce = (ResultCacheEntry) pkCacheEntries.remove(pk);
00232 rce.invalidate();
00233 }
00234 }
|