info.aduna.gee.publication.servlets.util
Class MultiLevelExpiringCache

java.lang.Object
  extended by info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache

public class MultiLevelExpiringCache
extends Object

A multilevel maximum size cache. For the moment we implement a maximum of 3 keys. It's easy to extend it. Note: a MultiLevelExpiringCache can only be used with a constant number of keys. Either 1,2,3,4. You can't mix 1,2,3,4 get/put requests!


Field Summary
protected  int _currentSize
          We track the currentsize for efficiency
protected  long _insertCount
          The insertCount for a new put
protected  int _maxSize
          The maximum amount of Objects in the cache
protected  long _noSaves
          The number of protected "young" members of the Cache
protected  HashMap _theCache
          The cache
 
Constructor Summary
MultiLevelExpiringCache(int maxSize)
           
MultiLevelExpiringCache(int maxSize, int noSaves)
          Create an expiring cache.
 
Method Summary
protected  void _cleanUp()
          Called by synchronized method.
protected  void _destroy(HashMap map)
           
protected  void _destroy(info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO mleo)
           
protected  void _destroy(Object o)
          Destroy an object or a branch of the tree cache.
protected  info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO _findEldest(HashMap map, info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO candidate)
          Called by synchronized method.
 Object _get(Object key1, Object key2, Object key3, Object key4, boolean unpackMleo)
          Get the object for the set of keys.
protected  long _priority(info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO mleo)
          The priority of an MLEO; it determines the sequence in which MLEO's are flushed from the cache.
protected  int _recalculateSize(HashMap map)
          Called by synchronized method.
protected  boolean _removeValue(HashMap parent, Object keyInParent, HashMap map, info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO mleo)
          Called by synchronized method
 Object get(Object key1)
           
 Object get(Object key1, Object key2)
           
 Object get(Object key1, Object key2, Object key3)
           
 Object get(Object key1, Object key2, Object key3, Object key4)
           
 void put(Object key1, Object value)
           
 void put(Object key1, Object key2, Object value)
           
 void put(Object key1, Object key2, Object key3, Object value)
           
 void put(Object key1, Object key2, Object key3, Object key4, Object value)
           
 void remove()
           
 void remove(Object key1)
           
 void remove(Object key1, Object key2)
           
 void remove(Object key1, Object key2, Object key3)
           
 void remove(Object key1, Object key2, Object key3, Object key4)
          Note: e.g.
 int size()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_theCache

protected HashMap _theCache
The cache


_currentSize

protected int _currentSize
We track the currentsize for efficiency


_insertCount

protected long _insertCount
The insertCount for a new put


_maxSize

protected int _maxSize
The maximum amount of Objects in the cache


_noSaves

protected long _noSaves
The number of protected "young" members of the Cache

Constructor Detail

MultiLevelExpiringCache

public MultiLevelExpiringCache(int maxSize)

MultiLevelExpiringCache

public MultiLevelExpiringCache(int maxSize,
                               int noSaves)
Create an expiring cache.

Parameters:
maxSize - the maximum total size of the cache
noSaves - the number of last inserted objects not to be removed when full.
Method Detail

get

public Object get(Object key1)

get

public Object get(Object key1,
                  Object key2)

get

public Object get(Object key1,
                  Object key2,
                  Object key3)

get

public Object get(Object key1,
                  Object key2,
                  Object key3,
                  Object key4)

_get

public Object _get(Object key1,
                   Object key2,
                   Object key3,
                   Object key4,
                   boolean unpackMleo)
Get the object for the set of keys.

Parameters:
upackMleo - if true return the stored Object, if false return the MLEO itself

put

public void put(Object key1,
                Object value)

put

public void put(Object key1,
                Object key2,
                Object value)

put

public void put(Object key1,
                Object key2,
                Object key3,
                Object value)

put

public void put(Object key1,
                Object key2,
                Object key3,
                Object key4,
                Object value)

remove

public void remove()

remove

public void remove(Object key1)

remove

public void remove(Object key1,
                   Object key2)

remove

public void remove(Object key1,
                   Object key2,
                   Object key3)

remove

public void remove(Object key1,
                   Object key2,
                   Object key3,
                   Object key4)
Note: e.g. in a four level MLEC, it is allowed to remove everything "below" either 1, 2, 3 or 4 keys. Note: objects that are removed are also destroyed!


size

public int size()

_recalculateSize

protected int _recalculateSize(HashMap map)
Called by synchronized method.


_cleanUp

protected void _cleanUp()
Called by synchronized method. Note: currently we always clean by 1.


_findEldest

protected info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO _findEldest(HashMap map,
                                                                                            info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO candidate)
Called by synchronized method.


_priority

protected long _priority(info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO mleo)
The priority of an MLEO; it determines the sequence in which MLEO's are flushed from the cache.


_removeValue

protected boolean _removeValue(HashMap parent,
                               Object keyInParent,
                               HashMap map,
                               info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO mleo)
Called by synchronized method


_destroy

protected void _destroy(info.aduna.gee.publication.servlets.util.MultiLevelExpiringCache.MLEO mleo)

_destroy

protected void _destroy(HashMap map)

_destroy

protected void _destroy(Object o)
Destroy an object or a branch of the tree cache.



Copyright © 1997-2008 Aduna. All Rights Reserved.