Package com.gentlyweb.utils
Class ObjectCache
- java.lang.Object
-
- com.gentlyweb.utils.ObjectCache
-
- All Implemented Interfaces:
ObjectCacheManager
public class ObjectCache extends Object implements ObjectCacheManager
The ObjectCache is it's own manager which means that classes that extend this one can do so quickly and without having to implement theObjectCacheManager
interface they only have to provide their own functionality whilst client classes can rely on the interface. All operations defined withObjectCacheManager
are supported here.
-
-
Constructor Summary
Constructors Constructor Description ObjectCache(int policy)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ObjectCache
cacheSlice(Date from, Date to)
ObjectCache
cacheSliceFrom(Date from)
ObjectCache
cacheSliceTo(Date to)
int
capacity()
Return the current capacity of the cache, it should basically be (max size - current size).boolean
containsKey(Object key)
Object
firstKey()
Object
firstValue()
void
flush()
Clear our data structures.Object
get(Object key)
Date
getLastAccessTime(Object key)
int
getMaxSize()
int
getPolicy()
boolean
isEmpty()
Return whether the cache is empty or not.Iterator
iterator()
List
keys()
Return a List of all the keys in the cache.List
keys(GeneralFilter f)
Return a List of all the keys in the cache that match the conditions imposed by theGeneralFilter
passed in.List
keysForFilteredValues(GeneralFilter f)
Return a List of keys in the cache that match the conditions imposed by theGeneralFilter
AND are applied to the values NOT the keys.void
keysToList(List list)
Object
lastValue()
void
merge(ObjectCache cache)
Merge the current cache with another.void
put(Object key, Object value)
void
putAll(Map map)
Add all the entries in the Map to cache.void
remove(Object key)
protected void
resize()
void
resize(int size)
Resize the cache to a particular size, if the size is actually bigger than the current size then this operation should not touch the cached objects, if the size is less then the cache should be reduced in size using the current policy until the size is reached.void
setMaxSize(int size)
Set the maximum size of the cache.void
setPolicy(int type)
Set the policy for managing the cache, should be one of:ObjectCache.OLDEST
,ObjectCache.YOUNGEST
,ObjectCache.RANDOM
.int
size()
Map
slice(Date from, Date to)
Map
sliceFrom(Date from)
Map
sliceTo(Date to)
void
toMap(Map map)
Get all the entries in the cache as a Map of key to value.List
values()
Return a List of all the values in the cache.List
values(GeneralFilter f)
Return a List of all the values in the cache that match the conditions imposed by theGeneralFilter
passed in.void
valuesToList(List list)
-
-
-
Field Detail
-
OLDEST
public static final int OLDEST
- See Also:
- Constant Field Values
-
YOUNGEST
public static final int YOUNGEST
- See Also:
- Constant Field Values
-
RANDOM
public static final int RANDOM
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ObjectCache
public ObjectCache(int policy) throws IllegalArgumentException
- Throws:
IllegalArgumentException
-
-
Method Detail
-
setPolicy
public void setPolicy(int type) throws IllegalArgumentException
Description copied from interface:ObjectCacheManager
Set the policy for managing the cache, should be one of:ObjectCache.OLDEST
,ObjectCache.YOUNGEST
,ObjectCache.RANDOM
.- Specified by:
setPolicy
in interfaceObjectCacheManager
- Parameters:
type
- The policy.- Throws:
IllegalArgumentException
-
getPolicy
public int getPolicy()
-
iterator
public Iterator iterator()
-
keys
public List keys()
Return a List of all the keys in the cache.- Returns:
- The List (ArrayList) of all the keys in the cache.
-
values
public List values()
Return a List of all the values in the cache.- Returns:
- The List (ArrayList) of all the values in the cache.
-
keysForFilteredValues
public List keysForFilteredValues(GeneralFilter f) throws IllegalAccessException, InvocationTargetException, FilterException
Return a List of keys in the cache that match the conditions imposed by theGeneralFilter
AND are applied to the values NOT the keys.- Parameters:
f
- The filter to use.- Returns:
- A List of the keys that map to the matched values.
- Throws:
IllegalAccessException
- Thrown by the {@link GeneralFilter.accept(Object)} method if we can't get access to a value defined in the GeneralFilter for the value class.InvocationTargetException
- Thrown by the {@link GeneralFilter.accept(Object)} method if (as a result of accessing a field) an exception is thrown by a value object.FilterException
- Thrown by the {@link GeneralFilter.accept(Object)} method if (as a result of accessing a field) the type of object returned by the field access is not of the expected type.
-
values
public List values(GeneralFilter f) throws IllegalAccessException, InvocationTargetException, FilterException
Return a List of all the values in the cache that match the conditions imposed by theGeneralFilter
passed in. We first gain all the values in the cache and then pass them through the filter returning the values that match. Because a GeneralFilter can only filter on a single class type (but the values may not be of a single type) we ignore any values that are not of the type specified for the GeneralFilter.- Returns:
- A List (ArrayList) of all the values in the cache.
- Throws:
IllegalAccessException
- Thrown by the {@link GeneralFilter.accept(Object)} method if we can't get access to a value defined in the GeneralFilter for the value class.InvocationTargetException
- Thrown by the {@link GeneralFilter.accept(Object)} method if (as a result of accessing a field) an exception is thrown by a value object.FilterException
- Thrown by the {@link GeneralFilter.accept(Object)} method if (as a result of accessing a field) the type of object returned by the field access is not of the expected type.
-
keys
public List keys(GeneralFilter f) throws IllegalAccessException, InvocationTargetException, FilterException
Return a List of all the keys in the cache that match the conditions imposed by theGeneralFilter
passed in. We first gain all the keys in the cache and then pass them through the filter returning the keys that match. Because a GeneralFilter can only filter on a single class type (but the keys may not be of a single type) we ignore any keys that are not of the type specified for the GeneralFilter.- Returns:
- A List (ArrayList) of all the keys in the cache.
- Throws:
IllegalAccessException
- Thrown by the {@link GeneralFilter.accept(Object)} method if we can't get access to a value defined in the GeneralFilter for the key class.InvocationTargetException
- Thrown by the {@link GeneralFilter.accept(Object)} method if (as a result of accessing a field) an exception is thrown by a key object.FilterException
- Thrown by the {@link GeneralFilter.accept(Object)} method if (as a result of accessing a field) the type of object returned by the field access is not of the expected type.
-
valuesToList
public void valuesToList(List list)
-
keysToList
public void keysToList(List list)
-
toMap
public void toMap(Map map)
Description copied from interface:ObjectCacheManager
Get all the entries in the cache as a Map of key to value.- Specified by:
toMap
in interfaceObjectCacheManager
- Parameters:
map
- The Map that should be populated with the key/values in the cache.
-
putAll
public void putAll(Map map)
Description copied from interface:ObjectCacheManager
Add all the entries in the Map to cache.- Specified by:
putAll
in interfaceObjectCacheManager
- Parameters:
map
- The Map to get key/values from.
-
containsKey
public boolean containsKey(Object key)
-
merge
public void merge(ObjectCache cache)
Description copied from interface:ObjectCacheManager
Merge the current cache with another.- Specified by:
merge
in interfaceObjectCacheManager
- Parameters:
cache
- The cache to merge.
-
cacheSliceTo
public ObjectCache cacheSliceTo(Date to)
-
cacheSliceFrom
public ObjectCache cacheSliceFrom(Date from)
-
cacheSlice
public ObjectCache cacheSlice(Date from, Date to)
-
isEmpty
public boolean isEmpty()
Description copied from interface:ObjectCacheManager
Return whether the cache is empty or not.- Specified by:
isEmpty
in interfaceObjectCacheManager
- Returns:
true
if the cache is empty,false
if it has entries.
-
capacity
public int capacity()
Description copied from interface:ObjectCacheManager
Return the current capacity of the cache, it should basically be (max size - current size).- Specified by:
capacity
in interfaceObjectCacheManager
- Returns:
- The current number of items that can be added until the cache reaches it's maximum size.
-
getMaxSize
public int getMaxSize()
-
setMaxSize
public void setMaxSize(int size)
Description copied from interface:ObjectCacheManager
Set the maximum size of the cache.- Specified by:
setMaxSize
in interfaceObjectCacheManager
- Parameters:
size
- The maximum size.
-
firstValue
public Object firstValue()
-
lastValue
public Object lastValue()
-
firstKey
public Object firstKey()
-
size
public int size()
-
remove
public void remove(Object key)
-
resize
public void resize(int size)
Description copied from interface:ObjectCacheManager
Resize the cache to a particular size, if the size is actually bigger than the current size then this operation should not touch the cached objects, if the size is less then the cache should be reduced in size using the current policy until the size is reached. Either way the maximum size should be set to this value.- Specified by:
resize
in interfaceObjectCacheManager
- Parameters:
size
- The new size.
-
resize
protected void resize()
-
flush
public void flush()
Clear our data structures.- Specified by:
flush
in interfaceObjectCacheManager
-
-