📄 abstractcache.java
字号:
/*
* Created on 2006-8-26 13:16:28
*
* By SinoBest
* Copyright hnisi.com.cn, 2005-2006, All rights reserved.
*/
package cn.com.juneng.system.common.cache;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.com.juneng.system.common.COMMON;
import cn.com.juneng.system.common.util.SimpleDAO;
/**
* @author yehailong
*
*/
public abstract class AbstractCache {
protected abstract String getTableName();
protected abstract List loadDBData() throws Exception;
protected abstract void synchronzeCacheData() throws Exception;
protected abstract List loadCacheData();
/**
* 同步检查时间 (单位:秒)
*
* @return
*/
protected abstract int getCheckTime();
private static Map synchronizeTime = new HashMap();
protected synchronized List getCacheData() throws Exception {
long curTime = System.currentTimeMillis();
boolean startSync = false;
if (synchronizeTime.get(getTableName()) == null) {
startSync = true;
} else {
// 上次同步时间
long synTime = ((Long) synchronizeTime.get(getTableName()))
.longValue();
int checkTime = getCheckTime();
if (checkTime == 0) {
checkTime = 30;
}
if (curTime - synTime > getCheckTime() * 1000) {
// 30秒检查一次TABLE_MONITOR
startSync = true;
}
}
if (!startSync) {
synchronzeCacheData();
return loadCacheData();
} else {
// 检查DATA_CHANGE
synchronizeTime.put(getTableName(), new Long(curTime));
String sql = "select DATA_CHANGE from TABLE_MONITOR where TABLE_NAME='"
+ getTableName() + "'";
List dataList = SimpleDAO.query(sql);
if (COMMON.isEmpty(dataList)) {
throw new CacheNotDefineException("TABLE_MONITOR表中未定义'"
+ getTableName() + "'");
}
Map map = (Map) dataList.get(0);
String dataChange = (String) map.get("DATA_CHANGE");
if ("0".equals(dataChange)) {
// 数据未变化,直接返回缓存
if (loadCacheData() == null) {
synchronzeCacheData();
}
return loadCacheData();
} else if ("1".equals(dataChange)) {
// 同步缓存
synchronzeCacheData();
// 更新标志
sql = "update TABLE_MONITOR set DATA_CHANGE='0' where TABLE_NAME='"
+ getTableName() + "'";
SimpleDAO.execute(sql);
return loadCacheData();
}
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -