package jp.aegif.nemaki.util.cache.model;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
public class NemakiCache<T> {
private Cache cache;
private final boolean cacheEnabled;
private static final Log log = LogFactory.getLog(NemakiCache.class);
public NemakiCache(boolean cacheEnabled, Cache cache){
this.cacheEnabled = cacheEnabled;
this.cache = cache;
}
public T get(String key){
if(cacheEnabled){
Element element = cache.get(key);
if(element == null || element.getObjectValue() == null){
return null;
}else{
return (T)element.getObjectValue();
}
}else{
return null;
}
}
public void put(String key, T data){
if(cacheEnabled){
Element element = new Element(key, data);
cache.put(element);
}
}
public void put(Element element){
if(cacheEnabled){
cache.put(element);
}
}
public void remove(String key){
if(cacheEnabled){
cache.remove(key);
}
}
public void removeAll(){
if(cacheEnabled){
cache.removeAll();
}
}
public Cache getCache(){
return this.cache;
}
public void setCache(Cache cache){
this.cache = cache;
}
public boolean isCacheEnabled(){
return cacheEnabled;
}
}