package ddth.dasp.framework.cache;
import java.io.Serializable;
public class CacheEntry implements Serializable {
private static final long serialVersionUID = "$Id$".hashCode();
private String key;
private Object value;
private long creationTimestamp = System.currentTimeMillis(), lastAccessTimestamp = System
.currentTimeMillis(), expireAfterWrite = -1, expireAfterAccess = -1;
public CacheEntry() {
}
public CacheEntry(String key, Object value) {
setKey(key);
setValue(value);
}
public CacheEntry(String key, Object value, long expireAfterWrite, long expireAfterAccess) {
setKey(key);
setValue(value);
setExpireAfterAccess(expireAfterAccess);
setExpireAfterWrite(expireAfterWrite);
}
public boolean isExpired() {
if (expireAfterWrite >= 0) {
return creationTimestamp + expireAfterWrite * 1000L > System.currentTimeMillis();
}
if (expireAfterAccess >= 0) {
return lastAccessTimestamp + expireAfterAccess * 1000L > System.currentTimeMillis();
}
return false;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public Object getValue() {
if (!isExpired()) {
touch();
return value;
}
return null;
}
public void setValue(Object value) {
this.value = value;
}
public long getExpireAfterWrite() {
return expireAfterWrite;
}
public void setExpireAfterWrite(long expireAfterWrite) {
this.expireAfterWrite = expireAfterWrite;
}
public long getExpireAfterAccess() {
return expireAfterAccess;
}
public void setExpireAfterAccess(long expireAfterAccess) {
this.expireAfterAccess = expireAfterAccess;
}
public long getCreationTimestamp() {
return creationTimestamp;
}
public long getLastAccessTimestamp() {
return lastAccessTimestamp;
}
public void touch() {
lastAccessTimestamp = System.currentTimeMillis();
}
}