com.ibatis.sqlmap.engine.config.CacheModelConfig Maven / Gradle / Ivy
package com.ibatis.sqlmap.engine.config;
import com.ibatis.sqlmap.engine.cache.*;
import com.ibatis.sqlmap.engine.impl.*;
import com.ibatis.sqlmap.engine.scope.*;
import java.util.Properties;
public class CacheModelConfig {
private ErrorContext errorContext;
private CacheModel cacheModel;
CacheModelConfig(SqlMapConfiguration config, String id, CacheController controller, boolean readOnly, boolean serialize) {
this.errorContext = config.getErrorContext();
this.cacheModel = new CacheModel();
SqlMapClientImpl client = config.getClient();
errorContext.setActivity("building a cache model");
cacheModel.setReadOnly(readOnly);
cacheModel.setSerialize(serialize);
errorContext.setObjectId(id + " cache model");
errorContext.setMoreInfo("Check the cache model type.");
cacheModel.setId(id);
cacheModel.setResource(errorContext.getResource());
try {
cacheModel.setCacheController(controller);
} catch (Exception e) {
throw new RuntimeException("Error setting Cache Controller Class. Cause: " + e, e);
}
errorContext.setMoreInfo("Check the cache model configuration.");
if (client.getDelegate().isCacheModelsEnabled()) {
client.getDelegate().addCacheModel(cacheModel);
}
errorContext.setMoreInfo(null);
errorContext.setObjectId(null);
}
public void setFlushInterval(long hours, long minutes, long seconds, long milliseconds) {
errorContext.setMoreInfo("Check the cache model flush interval.");
long t = 0L;
t += milliseconds;
t += seconds * 1000L;
t += minutes * 60L * 1000L;
t += hours * 60L * 60L * 1000L;
if (t < 1L)
throw new RuntimeException("A flush interval must specify one or more of milliseconds, seconds, minutes or hours.");
cacheModel.setFlushInterval(t);
}
public void addFlushTriggerStatement(String statement) {
errorContext.setMoreInfo("Check the cache model flush on statement elements.");
cacheModel.addFlushTriggerStatement(statement);
}
public CacheModel getCacheModel() {
return cacheModel;
}
public void setControllerProperties(Properties cacheProps) {
cacheModel.setControllerProperties(cacheProps);
}
}