📄 recethread.java
字号:
package cn.netjava.mmsclient;
import com.cmcc.mm7.vasp.service.*;
import com.cmcc.mm7.vasp.message.*;
import com.cmcc.mm7.vasp.conf.*;
import com.cmcc.mm7.vasp.common.*;
import java.util.logging.Level;
import java.io.*;
import java.util.*;
import cn.netjava.mmsclient.util.*;
/**
* <p>Title:中国移动mm7协议客户端 V0.1</p>
* <p>Description: </p>
* <p>Company:蓝杰实训 </p>
* @author NetJava.cn
* @version 0.1
*/
public class ReceThread extends MM7Receiver {
private static String receReport = "100";
private static String readReport = "200";
private static String basePath = "c:\\mms"; //默认MMS保存路径
public ReceThread() {
Object tmpPath = SysConfig.getInstance().hashmap.get("receDir");
if (tmpPath != null) {
basePath = tmpPath.toString();
}
}
public MM7VASPRes doDeliver(MM7DeliverReq mm7DeliverReq) {
//System.out.println("mm7DeliverReq = " + mm7DeliverReq);
String msg_id = mm7DeliverReq.getTransactionID(); //注此msg_id,实为TransactionID 为了定位文件路径
String mobile = mm7DeliverReq.getSender();
String dest_sp = SysConfig.getInstance().hashmap.get("spId").toString(); ;
String subject = mm7DeliverReq.getSubject();
String path = null;
String link_id = mm7DeliverReq.getLinkedID();
LogManage.ins().logger.logp(Level.INFO, " |Deliver| ", " ",
" " + mobile +
" : " + subject);
if (mm7DeliverReq.isContentExist()) {
MMContent parentContent = mm7DeliverReq.getContent();
if (parentContent.isMultipart()) {
System.out.println("multipart");
List contentList = parentContent.getSubContents();
System.out.println("i=" + contentList.size());
for (int i = 0; i < contentList.size(); i++) {
MMContent mmContent = (MMContent) contentList.get(i);
String contentID = mmContent.getContentID();
contentID = "zxme" + i;
MMContentType mmContentType = mmContent.getContentType();
System.out.println("contenttype=" +
mmContentType.getPrimaryType() + "/" +
mmContentType.getSubType());
if (mmContentType.getSubType().trim().equalsIgnoreCase(
"jpeg")) {
contentID = contentID + ".jpg";
} else if (mmContentType.getSubType().trim().
equalsIgnoreCase("gif")) {
contentID = contentID + ".gif";
} else if (mmContentType.getSubType().trim().
equalsIgnoreCase("midi")) {
contentID = contentID + ".mid";
} else if (mmContentType.getSubType().trim().
equalsIgnoreCase("png")) {
contentID = contentID + ".png";
} else if (mmContentType.getPrimaryType().trim().
equalsIgnoreCase("text")) {
contentID = contentID + ".txt";
}
System.out.println("contentID=" + contentID);
byte content[] = mmContent.getContent();
System.out.println("content.length = " + content.length);
if (content.length > 0) {
try {
path = basePath + File.separator + this.getYear() +
File.separator + this.getMonth() +
File.separator +
this.getDay() + File.separator + msg_id;
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
FileOutputStream fileStream = new
FileOutputStream(path + File.separator +
contentID);
fileStream.write(content);
fileStream.close();
} catch (IOException e) {
System.err.println(e);
}
} else {
System.out.println("content is NULL ");
}
}
} else {
System.out.println("singlepart");
String contentID = parentContent.getContentID();
System.out.println("contentID=" + contentID);
if (contentID == null || contentID.length() == 0) {
contentID = "zxme.";
}
MMContentType mmContentType = parentContent.getContentType();
if (mmContentType.getSubType().equalsIgnoreCase("jpeg")) {
contentID = contentID + "jpg";
} else if (mmContentType.getSubType().equalsIgnoreCase("gif")) {
contentID = contentID + "gif";
} else if (mmContentType.getSubType().equalsIgnoreCase("mid")) {
contentID = contentID + "mid";
} else if (mmContentType.getSubType().equalsIgnoreCase("png")) {
contentID = contentID + "png";
} else if (mmContentType.getPrimaryType().equalsIgnoreCase(
"txt")) {
contentID = contentID + "txt";
}
byte content[] = parentContent.getContent();
System.out.println("content.length = " + content.length);
if (content.length > 0) {
try {
path = basePath + File.separator + this.getYear() +
File.separator + this.getMonth() +
File.separator +
this.getDay() + File.separator + msg_id;
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
FileOutputStream fileStream = new FileOutputStream(
path + File.separator + contentID);
fileStream.write(content);
fileStream.close();
} catch (IOException e) {
System.err.println(e);
}
} else {
System.out.println("content is NULL ");
}
}
}
saveDeliver(msg_id, mobile, dest_sp, subject, path, link_id);
MM7DeliverRes res = new MM7DeliverRes();
res.setTransactionID(mm7DeliverReq.getTransactionID());
res.setStatusCode(1000);
return res;
}
public MM7VASPRes doDeliveryReport(MM7DeliveryReportReq
mm7DeliveryReportReq) {
// System.out.println("transactionid=" +
// mm7DeliveryReportReq.getTransactionID());
// System.out.println("mm7DeliveryReportReq = " + mm7DeliveryReportReq);
MM7DeliveryReportRes res = new MM7DeliveryReportRes();
res.setTransactionID(mm7DeliveryReportReq.getTransactionID());
res.setStatusCode(1000);
String report_stat = mm7DeliveryReportReq.getStatusText();
byte b = mm7DeliveryReportReq.getMMStatus();
if (b == 1 || mm7DeliveryReportReq.getStatusText().endsWith("OK")) {
report_stat = receReport;
}
this.saveReport(mm7DeliveryReportReq.getSender(), report_stat,
mm7DeliveryReportReq.getMessageID());
// LogManage.ins().logger.info(mm7DeliveryReportReq.getSender() +" );
LogManage.ins().logger.logp(Level.INFO, " |Report| ", " ",
" " + mm7DeliveryReportReq.getSender() +
" : " + report_stat);
return res;
}
public MM7VASPRes doReadReply(MM7ReadReplyReq mm7ReadReplyReq) {
// System.out.println("transactionid=" + mm7ReadReplyReq);
MM7ReadReplyRes res = new MM7ReadReplyRes();
res.setTransactionID(mm7ReadReplyReq.getTransactionID());
res.setStatusCode(1000);
String report_stat = mm7ReadReplyReq.getStatusText();
byte b = mm7ReadReplyReq.getMMStatus();
if (b == 1 || mm7ReadReplyReq.getStatusText().endsWith("OK")) {
report_stat = readReport;
}
this.saveReport(mm7ReadReplyReq.getSender(), report_stat,
mm7ReadReplyReq.getMessageID());
LogManage.ins().logger.logp(Level.INFO, " |Report_Read| ", " ",
" " + mm7ReadReplyReq.getSender() +
" : " + report_stat);
return res;
}
public void start() {
super.start();
while (true) {
try {
Thread.sleep(1000);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
private void saveReport(String mobie, String report_stat, String msg_id) {
try {
String sql =
"insert into t_mms_report_tem(msg_id,report_stat,mobile,dest_sp) values('" +
msg_id + "','" + report_stat + "','" + mobie + "','" +
SysConfig.getInstance().hashmap.get("spId") + "')";
DataBase.getInstance().exeSql(sql);
} catch (Exception ex) {
LogManage.ins().logger.severe("saveReport : " + ex.getMessage());
}
}
private void saveDeliver(String msg_id, String mobile, String dest_sp,
String subject, String fileDir, String link_id) {
try {
String sql;
if (fileDir == null) {
sql = "insert into t_mms_interface_deliver(msg_id,mobile,dest_sp,subject,link_id) values('" +
msg_id + "','" + mobile + "','" + dest_sp + "','" +
subject + "','" + link_id + "')";
DataBase.getInstance().exeSql(sql);
sql =
"insert into t_mms_deliver(msg_id,mobile,dest_sp,subject,link_id) values('" +
msg_id + "','" + mobile + "','" + dest_sp + "','" +
subject + "','" + link_id + "')";
DataBase.getInstance().exeSql(sql);
} else {
sql = "insert into t_mms_interface_deliver(msg_id,mobile,dest_sp,subject,fileDir,link_id) values('" +
msg_id + "','" + mobile + "','" + dest_sp + "','" +
subject + "','" + fileDir + "','" + link_id + "')";
DataBase.getInstance().exeSql(sql);
sql = "insert into t_mms_deliver(msg_id,mobile,dest_sp,subject,fileDir,link_id) values('" +
msg_id + "','" + mobile + "','" + dest_sp + "','" +
subject + "','" + fileDir + "','" + link_id + "')";
DataBase.getInstance().exeSql(sql);
}
} catch (Exception ex) {
LogManage.ins().logger.severe("saveDeliver : " + ex.getMessage());
}
}
public String getYear() {
Calendar now = Calendar.getInstance();
String yyyy = String.valueOf(now.get(java.util.Calendar.YEAR));
return yyyy;
}
public String getMonth() {
Calendar now = Calendar.getInstance();
String mm = totwo(String.valueOf(now.get(Calendar.MONTH) + 1));
return mm;
}
public String getDay() {
Calendar now = Calendar.getInstance();
String dd = totwo(String.valueOf(now.get(Calendar.DAY_OF_MONTH)));
return dd;
}
public String totwo(String s) {
if (s.length() < 2) {
s = "0" + s;
return s;
}
return s;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -