01: /*
02: $Header: /cvsroot/xorm/xorm/src/org/xorm/cache/DataCache.java,v 1.5 2002/10/29 22:26:55 wbiggs Exp $
03:
04: This file is part of XORM.
05:
06: XORM is free software; you can redistribute it and/or modify
07: it under the terms of the GNU General Public License as published by
08: the Free Software Foundation; either version 2 of the License, or
09: (at your option) any later version.
10:
11: XORM is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU General Public License for more details.
15:
16: You should have received a copy of the GNU General Public License
17: along with XORM; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: */
20: package org.xorm.cache;
21:
22: import java.util.Collection;
23:
24: import org.xorm.Configurable;
25: import org.xorm.datastore.Row;
26: import org.xorm.datastore.Table;
27:
28: /**
29: * The interface for a XORM cache. The cache contains Row objects.
30: * It is up to an implementation to determine the cache strategy and
31: * layout. A cache is not required to hold a reference for any period
32: * of time. The only requirements are as follows:
33: * <UL>
34: * <LI>If the get(table,primaryKey) does not return null, its
35: * return value must be equal (.equals()) to the most recently added Row
36: * where row.getTable() and row.getPrimaryKeyValue()
37: * are equal (.equals()) to the parameters.</LI>
38: * <LI>remove(row) must remove the given row from the cache (by
39: * .equals()). That is, if remove(row) is called, an immediate call
40: * to get(row.getTable(), row.getPrimaryKeyValue()) must return null.</LI>
41: * <LI>The cache must not call any methods that would modify the internal
42: * contents of a Row (for example, row.setValue()).</LI>
43: * </UL>
44: * The cache implementation may take arbitrary parameters specified in the
45: * JDO initialization properties set.
46: */
47: public interface DataCache extends Configurable {
48: /**
49: * Adds or replaces the Row in the cache. If the Table does not
50: * have a primary key defined, the implementation is not required
51: * to cache it.
52: */
53: public void add(Row row);
54:
55: /**
56: * Retrieves the Row from the cache with the
57: * matching primary key.
58: *
59: * @return a row matching the criteria, or null
60: */
61: public Row get(Table table, Object primaryKey);
62:
63: /**
64: * Removes a Row from the cache by its primary key. If no matching
65: * row exists, no change is made. Implementations of this method
66: * should use the .equals() operator for Row comparisons.
67: */
68: public void remove(Row row);
69: }
|