www.pudn.com > mobileMms.rar > 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.*; 
 
/** 
 * 

Title:中国移动mm7协议客户端 V0.1

*

Description:

*

Company:蓝杰实训

* @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; } }