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

📄 wappspreceivesvcimpl.java

📁 短信
💻 JAVA
字号:
package com.asiainfo.batchsend.wappush.psp;
import java.io.File;
import java.io.LineNumberReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedList;
import java.util.List;

import org.apache.log4j.Logger;

import com.asiainfo.batchsend.sms.boss.DBCon;
import com.asiainfo.batchsend.util.FileUtil;
import com.asiainfo.batchsend.util.FtpUtil;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Company: Asiainfo Technologies(China),Inc </p>
 * <p>Date: Nov 6, 2007 3:55:51 PM </p>
 * <p>Email to: jiangyl@asiainfo.com </p>
 * @author jiangyl
 * @version 1.0
 */

public class WapPspReceiveSvcImpl {
	private static final Logger log = Logger.getLogger(WapPspReceiveSvcImpl.class);	
	
	public static class FileNameFilter implements java.io.FilenameFilter{
		public boolean accept(File dir, String name) {
			if ( name.toLowerCase().endsWith("log"))
				return true;
			return false;
		}
	}
	
	public String[] listFile(){
		return new File(WapConfig.logPath).list(new FileNameFilter());
	}
	
	public void runReceive() {
		//访问日志
		FtpUtil ftp = null;
		try {
			//下载文件
			ftp = new FtpUtil(WapConfig.user,WapConfig.password,WapConfig.server,WapConfig.dataPath);
			ftp.connect(WapConfig.ftpLog);
			ftp.logPath = WapConfig.logPath;
			String logSuff = "log";
			String visit ="backvisit";
			String[] file = ftp.nameList("*log");
			for ( int i = 0; i < file.length; i++ ){
				if ( file[i].indexOf(logSuff) > 0 && file[i].indexOf(visit)== -1 ){
					ftp.get(file[i]);
					ftp.rename(file[i], file[i]+".bak");
				}
			}
			ftp.close();
			ftp = null;
			
			//解析文件入库
			String[] files = this.listFile();
			for ( int i = 0; i < files.length; i++ ){
				String[] sqls = this.getSqlByFile(files[i],"NB_WAP_REPORT_STATUS");
				boolean flag = this.save2Db(sqls);
				if (flag){
				   FileUtil.moveWapLogFile(files[i]);
				   log.info("文件名称" + files[i] + "已经成功入库");
				}
			}
		}catch(Exception e){
			log.error("",e);
		}finally{
			if ( ftp != null ){
				try{
					ftp.close();
				}catch(Exception se){
				}
			}
		}
		
		//回访文件
		try {
			//下载文件
			ftp = new FtpUtil(WapConfig.user,WapConfig.password,WapConfig.server,WapConfig.dataPath);
			ftp.connect(WapConfig.ftpLog);
			ftp.logPath = WapConfig.logPath;
			String logSuff = "log";
			String visit ="backvisit";
			String[] file = ftp.nameList("*log");
			for ( int i = 0; i < file.length; i++ ){
				if ( file[i].indexOf(logSuff) > 0 && file[i].indexOf(visit) > 0){
					ftp.get(file[i]);
					ftp.rename(file[i], file[i]+".bak");
				}
			}
			ftp.close();
			ftp = null;
			
			//解析文件入库
			String[] files = this.listFile();
			for ( int i = 0; i < files.length; i++ ){
				String[] sqls = this.getSqlByFile(files[i],"NB_WAP_VISIT_STATUS");
				boolean flag = this.save2Db(sqls);
				if (flag){
				   FileUtil.moveWapLogFile(files[i]);
				   log.info("文件名称" + files[i] + "已经成功入库");
				}
			}
		}catch(Exception e){
			log.error("",e);
		}finally{
			if ( ftp != null ){
				try{
					ftp.close();
				}catch(Exception se){
				}
			}
		}
		
	}
	
	private String[] getSqlByFile(String file, String tableName){
		List list = new LinkedList();
		LineNumberReader reader = null;
		String line;
		try{
			reader = new LineNumberReader(new FileReader( WapConfig.logPath + file));
			while ( (line = reader.readLine()) != null && !line.equals("")){
				list.add(constructSql(line,tableName));
			}
			reader.close();
		} catch (Exception e) {
			try{
				reader.close();
			}catch(Exception se){
			}
			log.error("",e);
		}
		return (String[])list.toArray(new String[list.size()]);
	}
	
	
	//发送成功之后如何处理数据
	private String constructSql(String line,String tableName) {
		String[] val = line.split("[ ]+");
		String taskId = val[1].trim();
		String sql = null;
		taskId = taskId.substring(taskId.length()-20);
		if ( tableName.equalsIgnoreCase("NB_WAP_REPORT_STATUS") ){
			sql = "insert into " + tableName + " (PSP_ID, TASK_ID, MSISDN,STATUS) values(" + val[0]+ ",'" + taskId +  "','" +  val[3]+ "'," + val[5].substring(0,1)+")";
		}else if ( tableName.equalsIgnoreCase("NB_WAP_VISIT_STATUS") ){
			String time = val[4];
			time =  time.substring(0,4)+"-" +  time.substring(4,6) +"-" +  time.substring(6,8) +" " +  time.substring(8,10)+":" +  time.substring(10,12) + ":" + time.substring(12,14);
			sql = "insert into " + tableName + " (PSP_ID, TASK_ID, MSISDN,STATUS,VISIT_TIME) values(" + val[0]+ ",'" + taskId +  "','" +  val[3]+ "',0,'" + time + "')";
		}
		return sql;
	}
	
	
    //发送失败后需要如何处理数据
	public boolean save2Db(String[] sqls) {
		boolean flag = true;
		Connection conn = null;
		if ( sqls == null || sqls.length == 0 )
			return true;
		try {
			conn = DBCon.getShenYunDataSource().getConnection();
			conn.setAutoCommit(false);
			Statement ps = conn.createStatement();
			for (  int i = 0; i < sqls.length; i++ ){
				ps.addBatch(sqls[i]);
			}
			ps.executeBatch();
			conn.commit();
		} catch (SQLException e) {
			flag = false;
			try{
				conn.rollback();
			}catch(SQLException se){
			}
			log.error("深运平台在设置nb_mms_push表发送失败状态的时候发生严重的错误",e);
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
			}
		}
		return flag;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -