📄 dbtranslatethread.java
字号:
package com.rainbow.mas.plugin.dbplugin;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import com.rainbow.mas.plugin.dbplugin.translator.MmsTranslator;
import com.rainbow.mas.plugin.dbplugin.translator.SmsTranslator;
import com.rainbow.mas.plugin.dbplugin.translator.WapPushTranslator;
import com.rainbow.mas.plugin.dbplugin.util.SysConfUtil;
public class DbTranslateThread extends Thread {
static Logger logger = LogManager.getLogger(MmsTranslator.class);
static SimpleDateFormat datefmt = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
enum EnumState {
RUNNING, STOPED, PAUSED
};
private EnumState state = EnumState.RUNNING;
private Date lastCleanTime = null;
private Date lastCheckTime = null;
private int cleanPeriod = 7;// 日
private int checkPeriod = 5;// 秒 原来为60秒检查一次 测试暂时改为6
private Calendar cal = null;
private MmsTranslator mms = null;
private SmsTranslator sms = null;
private WapPushTranslator push = null;
public DbTranslateThread() {
state = EnumState.RUNNING;
mms = new MmsTranslator();
sms = new SmsTranslator();
push = new WapPushTranslator();
cal = Calendar.getInstance();
lastCheckTime = cal.getTime();
lastCleanTime = cal.getTime();
cleanPeriod = 7;// 日
checkPeriod = 5;// 秒
}
public synchronized void setStop() {
state = EnumState.STOPED;
}
public synchronized void pause() {
state = EnumState.PAUSED;
}
public synchronized void keepon(){
state = EnumState.RUNNING;
}
private void updateParams() {
String szLastCleanTime = SysConfUtil.getValue("SELF", "DbLastCleanTime");
//"2007-08-29 10:23:10";
String szLastCheckTime = SysConfUtil
.getValue("SELF", "DbLastCheckTime");
String szCleanPeriod = SysConfUtil.getValue("SELF", "DbCleanPeriod");
String szCheckPeriod = SysConfUtil.getValue("SELF", "DbCheckPeriod");
try {
//System.out.println(szLastCleanTime);
lastCleanTime = datefmt.parse(szLastCleanTime);
} catch (ParseException e) {
logger.error("Bad date format!Plz use yyyy-MM-dd HH:mm:ss", e);
}
try {
lastCheckTime = datefmt.parse(szLastCheckTime);
} catch (ParseException e) {
logger.error("Bad date format!Plz use yyyy-MM-dd HH:mm:ss", e);
}
try{
cleanPeriod = Integer.parseInt(szCleanPeriod);
}catch (NumberFormatException e){
logger.error("Bad cleanperiod format!Plz use integer!", e);
}
try{
checkPeriod = Integer.parseInt(szCheckPeriod);
}catch (NumberFormatException e){
logger.error("Bad checkperiod format!Plz use integer!", e);
}
}
public void saveCheckTime(Date checkTime) {
if (checkTime!=null){
String time = datefmt.format(checkTime);
SysConfUtil.setValue("SELF", "DbLastCheckTime",time);
}
}
public void saveCleanTime(Date cleanTime) {
if (cleanTime!=null){
String time = datefmt.format(cleanTime);
SysConfUtil.setValue("SELF", "DbLastCleanTime",time);
}
}
public void run() {
Calendar tempCal = Calendar.getInstance();
while (state != EnumState.STOPED) {
try {
if (state != EnumState.PAUSED) {
updateParams();
Date cur = cal.getTime();
tempCal.setTime(lastCleanTime);
tempCal.add(Calendar.DATE, cleanPeriod);
Date target = tempCal.getTime();
//数据库转译
mms.inbound(1000);
mms.outbound(lastCheckTime);
///////////
sms.inbound(1000);
sms.outbound(lastCheckTime);
///////////
push.inbound(1000);
push.outbound(lastCheckTime);
//数据库历史数据清理
if ( target.before(cur)){
mms.clean(target);
sms.clean(target);
push.clean(target);
saveCleanTime(target);
}
saveCheckTime(cur);
}
Thread.sleep(checkPeriod * 1000);
} catch (InterruptedException e) {
logger.debug("interrupted exception!");
}
}
}
public static void main(String[] args) {
DbTranslateThread db = new DbTranslateThread();
db.start();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -