📄 forumschedulerunit.java~19~
字号:
package com.redmoon.forum;
import cn.js.fan.kernal.BaseSchedulerUnit;
import cn.js.fan.util.ErrMsgException;
import cn.js.fan.db.Conn;
import cn.js.fan.web.Global;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import java.util.Date;
import java.sql.PreparedStatement;
import com.redmoon.forum.message.MessageDb;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class ForumSchedulerUnit extends BaseSchedulerUnit {
static Logger logger = Logger.getLogger(ForumSchedulerUnit.class.getName());
static int refreshOnlineInterval = 5; // 5分钟
static long lastRefreshOnlineIntervalTime;
static long lastClearUserMessageInerval = System.currentTimeMillis();
static long clearUserMessageInterval = 24 * 60 * 60 * 1000; // 每隔24小时清除用户超出容量的短信息
static int message_expire_day = 150; // 天
static {
Config cfg = new Config();
refreshOnlineInterval = cfg.getIntProperty("forum.refreshOnlineInterval");
message_expire_day = cfg.getIntProperty("forum.message_expire_day");
clearUserMessageInterval = cfg.getIntProperty("interval_clear_message") * 60 * 60 * 1000;
name = "论坛调度器";
}
public ForumSchedulerUnit() {
lastTime = System.currentTimeMillis();
interval = 600000; // 每隔10分钟刷新一次
lastRefreshOnlineIntervalTime = System.currentTimeMillis();
lastClearUserMessageInerval = System.currentTimeMillis();
}
/**
* OnTimer
*
* @param currentTime long
* @todo Implement this cn.js.fan.kernal.ISchedulerUnit method
*/
public void OnTimer(long curTime) {
// logger.info("curTime=" + curTime);
if (curTime-lastTime>=interval) {
action();
lastTime = curTime;
}
if (curTime-lastRefreshOnlineIntervalTime>=refreshOnlineInterval) {
OnlineUserDb oud = new OnlineUserDb();
oud.refreshOnlineUser();
lastRefreshOnlineIntervalTime = curTime;
}
if (curTime - lastClearUserMessageInerval >= clearUserMessageInterval) {
clearMessageExpired(message_expire_day);
lastClearUserMessageInerval = curTime;
}
}
public void clearMessageExpired(int expireDay) {
MessageDb md = new MessageDb();
md.clearMessageExpired(expireDay);
}
public synchronized void action() {
refreshColor();
refreshBold();
}
public void refreshBold() {
MsgDb md = new MsgDb();
String sql = "select id from sq_message where isBold=1 and boldExpire<?";
// 如果加粗显示已到期
Conn conn = new Conn(Global.defaultDB);
ResultSet rs = null;
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "" + System.currentTimeMillis());
rs = conn.executePreQuery();
while (rs.next()) {
int id = rs.getInt(1);
// logger.info("msgRootId=" + msgRootId);
md = md.getMsgDb(id);
try {
md.ChangeBold(id, 0, new Date());
} catch (ErrMsgException e) {
logger.error("action:" + e.getMessage());
}
}
} catch (SQLException e) {
logger.error("refreshBold:" + e.getMessage());
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
}
public void refreshColor() {
MsgDb md = new MsgDb();
String sql = "select id from sq_message where color<>'' and colorExpire<?";
// 如果颜色值已到期
Conn conn = new Conn(Global.defaultDB);
ResultSet rs = null;
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "" + System.currentTimeMillis());
rs = conn.executePreQuery();
// logger.info("rs=" + rs);
while (rs.next()) {
int id = rs.getInt(1);
// logger.info("msgRootId=" + msgRootId);
md = md.getMsgDb(id);
try {
md.ChangeColor(id, "", new Date());
} catch (ErrMsgException e) {
logger.error("refreshColor:" + e.getMessage());
}
}
} catch (SQLException e) {
logger.error("refreshColor1:" + e.getMessage());
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -