📄 msgcache.java~3~
字号:
if (!SecurityUtil.isValidSql(query))
return -1;
Integer count = null;
try {
count = (Integer) rmCache.getFromGroup(query, COUNT_GROUP_NAME + boardcode);
} catch (Exception e) {
logger.error(e.getMessage());
}
// If already in cache, return the count.
if (count != null) {
return count.intValue();
}
// Otherwise, we have to load the count from the db.
else {
int docCount = 0;
Conn conn = new Conn(connname);
ResultSet rs = null;
try {
rs = conn.executeQuery(query);
if (rs.next())
docCount = rs.getInt(1);
} catch (SQLException sqle) {
sqle.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if (conn != null) {
conn.close();
conn = null;
}
}
// Add the thread count to cache
try {
rmCache.putInGroup(query, COUNT_GROUP_NAME + boardcode,
new Integer(docCount));
} catch (Exception e) {
logger.error(e.getMessage());
}
return docCount;
}
}
/**
*
* @param sql String
* @return int -1 表示sql语句不合法
*/
public long getMsgCount(String sql, String boardcode, long rootid) {
//根据sql语句得出计算总数的sql查询语句
String query = SQLFilter.getCountSql(sql);
if (!SecurityUtil.isValidSql(query))
return -1;
Long count = null;
try {
count = (Long) rmCache.getFromGroup(query, COUNT_GROUP_NAME + boardcode + rootid);
} catch (Exception e) {
logger.error(e.getMessage());
}
// If already in cache, return the count.
if (count != null) {
return count.longValue();
}
// Otherwise, we have to load the count from the db.
else {
long docCount = 0;
Conn conn = new Conn(connname);
ResultSet rs = null;
try {
rs = conn.executeQuery(query);
if (rs.next())
docCount = rs.getLong(1);
} catch (SQLException sqle) {
sqle.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if (conn != null) {
conn.close();
conn = null;
}
}
// Add the thread count to cache
try {
rmCache.putInGroup(query, COUNT_GROUP_NAME + boardcode + rootid,
new Long(docCount));
} catch (Exception e) {
logger.error(e.getMessage());
}
return docCount;
}
}
/**
* 有三种cache
* 1、自身 2、sql结果集的总数 3、thread 4、版面列表 后三种为组
* @param isInvalidateGroup boolean
*/
public void removeFromCache(long id) {
try {
rmCache.remove(cachePrix + id);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
/**
* 更新boardcode版块的threads列表
* @param boardcode String
*/
public void removeFromCacheThreadsBlock(String boardcode) {
try {
rmCache.invalidateGroup(THREADBLOCKCACHEPRIX + boardcode);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
/**
* 更新thread (rootid) 的贴子列表
* @param boardcode String
* @param rootid int
*/
public void removeFromCacheMsgBlock(String boardcode, long rootid) {
try {
rmCache.invalidateGroup(MSGBLOCKCACHEPRIX + boardcode + rootid);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
public void removeFromCacheThreadsCount(String boardcode) {
try {
rmCache.invalidateGroup(COUNT_GROUP_NAME + boardcode);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
public void removeFromCacheMsgCount(String boardcode, long rootid) {
try {
rmCache.invalidateGroup(COUNT_GROUP_NAME + boardcode + rootid);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
public void refreshAdd(String boardcode, String userName, boolean isBlog, String blogUserDir) {
// logger.info("refreshAdd boardcode=" + boardcode);
removeFromCacheThreadsBlock(boardcode);
removeFromCacheThreadsCount(boardcode);
// logger.info("refreshAdd userName=" + userName);
// 刷新leaf
// Leaf lf = new Leaf();
// lf.removeFromCache(boardcode);
if (isBlog) {
removeFromCacheThreadsBlock(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, blogUserDir));
removeFromCacheThreadsCount(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, blogUserDir));
// 刷新全部文章的列表
removeFromCacheThreadsBlock(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, ""));
removeFromCacheThreadsCount(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, ""));
}
}
public void refreshChangeBoard(long id, String boardcode, String newboardcode) {
removeFromCacheThreadsBlock(boardcode);
removeFromCacheThreadsCount(boardcode);
removeFromCacheThreadsBlock(newboardcode);
removeFromCacheThreadsCount(newboardcode);
removeFromCache(id);
}
public void refreshReply(String boardcode, long rootid) {
logger.info("refreshReply boardcode=" + boardcode);
removeFromCache(rootid); // 更新rootid的recount rename
removeFromCacheThreadsBlock(boardcode); // 刷新贴子列表,以使被回贴可被up
removeFromCacheMsgBlock(boardcode, rootid);
removeFromCacheMsgCount(boardcode, rootid);
logger.info("refreshReply rootid=" + boardcode);
}
public void refreshUpdate(long id) {
removeFromCache(id);
}
/**
* 当更改文章所属用户博客的目录时,更新相应缓存
* @param id int
* @param userName String
* @param isBlog boolean
* @param blogUserDir String
* @param oldBlogUserDir String
*/
public void refreshUpdate(long id, String userName, boolean isBlog, String blogUserDir, String oldBlogUserDir) {
removeFromCacheThreadsBlock(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, blogUserDir));
removeFromCacheThreadsCount(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, blogUserDir));
removeFromCacheThreadsBlock(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, oldBlogUserDir));
removeFromCacheThreadsCount(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, oldBlogUserDir));
// 当贴子由非博客贴在论坛中编辑为博客贴时,刷新全部文章的列表
removeFromCacheThreadsBlock(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, ""));
removeFromCacheThreadsCount(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, ""));
refreshUpdate(id);
}
public void refreshMsgAndList(String boardcode, long id) {
removeFromCache(id);
removeFromCacheThreadsBlock(boardcode);
removeFromCacheThreadsCount(boardcode);
}
public void refreshDelRoot(String boardcode, long id, String userName, boolean isBlog, String blogUserDir) {
removeFromCache(id);
removeFromCacheThreadsBlock(boardcode);
removeFromCacheThreadsCount(boardcode);
removeFromCacheMsgBlock(boardcode, id);
removeFromCacheMsgCount(boardcode, id);
if (isBlog) {
removeFromCacheThreadsBlock(MsgDb.getVirtualBoardcodeOfBlogUser(userName, blogUserDir));
removeFromCacheThreadsCount(MsgDb.getVirtualBoardcodeOfBlogUser(userName, blogUserDir));
// 刷新博客的列表
removeFromCacheThreadsBlock(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, ""));
removeFromCacheThreadsCount(MsgDb.getVirtualBoardcodeOfBlogUser(
userName, ""));
}
}
public void refreshDelReply(String boardcode, long rootid, long id) {
removeFromCache(id);
removeFromCacheMsgBlock(boardcode, rootid);
removeFromCacheMsgCount(boardcode, rootid);
//logger.info("refreshDelReply: boardcode=" + boardcode + " rootid=" + rootid + " id=" + id);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -