📄 wappspreceivesvcimpl.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 + -