package railo.runtime.query;
import java.io.Serializable;
import java.util.Date;
import railo.runtime.PageContext;
import railo.runtime.dump.DumpData;
import railo.runtime.dump.DumpProperties;
import railo.runtime.dump.DumpTable;
import railo.runtime.dump.DumpUtil;
import railo.runtime.dump.Dumpable;
import railo.runtime.dump.SimpleDumpData;
import railo.runtime.op.Duplicator;
import railo.runtime.type.dt.DateTimeImpl;
/**
* a single entry of the query cache
*/
public final class QueryCacheEntry implements Serializable,Dumpable {
private static final long serialVersionUID = -8991589914700895254L;
private Object value;
private long creationDate;
/**
* constructor of the class
* @param cacheBefore
* @param query
*/
QueryCacheEntry(Date cacheBefore, Object value) {
this.value = Duplicator.duplicate(value,false);
this.creationDate=System.currentTimeMillis();
}
/**
* @param cacheAfter
* @return is in range or not
*/
public boolean isCachedAfter(Date cacheAfter) {
if(cacheAfter==null) return true;
if(creationDate>=cacheAfter.getTime()){
return true;
}
return false;
}
/**
* @return returns query object in entry
*/
public Object getValue() {
this.creationDate=System.currentTimeMillis();
return Duplicator.duplicate(value,false);
}
public DumpData toDumpData(PageContext pageContext, int maxlevel, DumpProperties properties) {
DumpTable table = new DumpTable("#669999","#ccffff","#000000");
table.setTitle("QueryCacheEntry");
table.appendRow(1,new SimpleDumpData("Value"),DumpUtil.toDumpData(value, pageContext, maxlevel, properties));
table.appendRow(1,new SimpleDumpData("Creation Date"),DumpUtil.toDumpData(new DateTimeImpl(creationDate,false), pageContext, maxlevel, properties));
return table;
}
}