⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbtranslatethread.java

📁 DbService数据库接口,测试规范?菘饨涌?测试规范数据库接口,测试规范
💻 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 + -