@Override public String toString() { return "CacheIndex(" + getFields() + ")"; } }
public String toString() { return "CacheIndex(" + getFields() + ")"; } }
/** * PUBLIC: * Add the cache index to the descriptor's cache settings. * This allows for cache hits to be obtained on non-primary key fields. * The primary key is always indexed in the cache. * Cache indexes are defined by their database column names. */ public void addCacheIndex(CacheIndex index) { getCacheIndexes().put(index.getFields(), index); }
/** * PUBLIC: * Add the cache index to the descriptor's cache settings. * This allows for cache hits to be obtained on non-primary key fields. * The primary key is always indexed in the cache. * Cache indexes are defined by their database column names. */ public void addCacheIndex(CacheIndex index) { getCacheIndexes().put(index.getFields(), index); }
/** * INTERNAL: * Lookup the expression in the cache if it contains any indexes. */ public boolean isIndexableExpression(Expression expression, ClassDescriptor descriptor, AbstractSession session) { if (!hasCacheIndexes()) { return false; } for (CacheIndex index : this.cacheIndexes.values()) { List<DatabaseField> searchFields = index.getFields(); int size = searchFields.size(); Set<DatabaseField> foundFields = new HashSet(size); boolean isValid = expression.extractFields(true, false, descriptor, searchFields, foundFields); if (isValid && (foundFields.size() == size)) { return true; } } return false; }
/** * INTERNAL: * Lookup the expression in the cache if it contains any indexes. */ public boolean isIndexableExpression(Expression expression, ClassDescriptor descriptor, AbstractSession session) { if (!hasCacheIndexes()) { return false; } for (CacheIndex index : this.cacheIndexes.values()) { List<DatabaseField> searchFields = index.getFields(); int size = searchFields.size(); Set<DatabaseField> foundFields = new HashSet(size); boolean isValid = expression.extractFields(true, false, descriptor, searchFields, foundFields); if (isValid && (foundFields.size() == size)) { return true; } } return false; }
/** * INTERNAL: * Index the object by index in the cache using its row. */ public void indexObjectInCache(CacheKey cacheKey, AbstractRecord databaseRow, Object domainObject, ClassDescriptor descriptor, AbstractSession session, boolean refresh) { if (!hasCacheIndexes()) { return; } for (CacheIndex index : this.cacheIndexes.values()) { if (!refresh || index.isUpdateable()) { List<DatabaseField> fields = index.getFields(); int size = fields.size(); Object[] values = new Object[size]; for (int count = 0; count < size; count++) { values[count] = databaseRow.get(fields.get(count)); } CacheId indexValues = new CacheId(values); session.getIdentityMapAccessorInstance().putCacheKeyByIndex(index, indexValues, cacheKey, descriptor); } } }
/** * INTERNAL: * Index the object by index in the cache using its row. */ public void indexObjectInCache(CacheKey cacheKey, AbstractRecord databaseRow, Object domainObject, ClassDescriptor descriptor, AbstractSession session, boolean refresh) { if (!hasCacheIndexes()) { return; } for (CacheIndex index : this.cacheIndexes.values()) { if (!refresh || index.isUpdateable()) { List<DatabaseField> fields = index.getFields(); int size = fields.size(); Object[] values = new Object[size]; for (int count = 0; count < size; count++) { values[count] = databaseRow.get(fields.get(count)); } CacheId indexValues = new CacheId(values); session.getIdentityMapAccessorInstance().putCacheKeyByIndex(index, indexValues, cacheKey, descriptor); } } }
/** * INTERNAL: * Index the object by index in the cache using the object. */ public void indexObjectInCache(CacheKey cacheKey, Object object, ClassDescriptor descriptor, AbstractSession session, boolean refresh) { if (!hasCacheIndexes()) { return; } for (CacheIndex index : this.cacheIndexes.values()) { if (!refresh || index.isUpdateable()) { List<DatabaseField> fields = index.getFields(); int size = fields.size(); Object[] values = new Object[size]; for (int count = 0; count < size; count++) { values[count] = descriptor.getObjectBuilder().extractValueFromObjectForField(object, fields.get(count), session); } CacheId indexValues = new CacheId(values); session.getIdentityMapAccessorInstance().putCacheKeyByIndex(index, indexValues, cacheKey, descriptor); } } }
/** * INTERNAL: * Index the object by index in the cache using the object. */ public void indexObjectInCache(CacheKey cacheKey, Object object, ClassDescriptor descriptor, AbstractSession session, boolean refresh) { if (!hasCacheIndexes()) { return; } for (CacheIndex index : this.cacheIndexes.values()) { if (!refresh || index.isUpdateable()) { List<DatabaseField> fields = index.getFields(); int size = fields.size(); Object[] values = new Object[size]; for (int count = 0; count < size; count++) { values[count] = descriptor.getObjectBuilder().extractValueFromObjectForField(object, fields.get(count), session); } CacheId indexValues = new CacheId(values); session.getIdentityMapAccessorInstance().putCacheKeyByIndex(index, indexValues, cacheKey, descriptor); } } }
List<DatabaseField> fields = index.getFields(); int size = fields.size(); Object[] values = new Object[size];
List<DatabaseField> fields = index.getFields(); int size = fields.size(); Object[] values = new Object[size];
List<DatabaseField> fields = index.getFields(); int size = fields.size(); Object[] values = new Object[size];
List<DatabaseField> fields = index.getFields(); int size = fields.size(); Object[] values = new Object[size];