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

📄 sendthread.java

📁 中国移动MM7 彩信客户端java源码文档和数据库设计
💻 JAVA
字号:
package cn.netjava.mmsclient;

import java.sql.*;
import java.util.*;
import java.io.*;
import java.util.logging.Level;

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 cn.netjava.mmsclient.util.*;


/**
 * 
 * <p>Title:中国移动mm7协议客户端 V0.1</p>
 * <p>Description: 发送线程</p>
 * <p>Company:蓝杰实训 </p>
 * @author NetJava.cn 
 * @version 0.1
 */
public class SendThread extends Thread {
    public SendThread() {
    }

    static DataBase db = DataBase.getInstance();
    static LinkedList list = new LinkedList();
    static String errSubmit = "-100";
    public void run() {
        while (true) {
            try {
                Thread.sleep(100);
//                System.out.println("run.............");
                get4db();
                sendMMS();
            } catch (Exception ex) {
                LogManage.ins().logger.severe("SendThread : " + ex.getMessage());
            }

        }
    }


    private void get4db() {
        int size = 10;
        int tmpid[] = new int[size];
        try {
            String sql = "select top " + size +
                         " * from t_mms_interface_submit where flag=0";
            ResultSet rs = db.getRs(sql);
            int i = 0;
            while (rs.next()) {
                SendBean send = new SendBean();
                send.id = rs.getInt("id");
                tmpid[i] = send.id;
                i++;
                send.msg_id = rs.getString("msg_id");
                send.mobile = rs.getString("mobile");
                send.feemobile = rs.getString("feemobile");
                send.feetype = rs.getInt("feetype");
                send.infofee = rs.getInt("infofee");
                send.serviceid = rs.getString("serviceid");
                send.subject = rs.getString("subject");
                send.infoFile = rs.getString("infoFile");
                list.addLast(send);
            }
        } catch (Exception ex) {
            LogManage.ins().logger.severe("get4db : " + ex.getMessage());
        } finally {
            for (int j = 0; j < tmpid.length; j++) {
                if (tmpid[j] > 0) {
                    updateFlag(tmpid[j], 1);
                }
            }
        }

    }

    private void sendMMS() {
        try {
            while (list.size() > 0) {
                SendBean send = (SendBean) list.removeFirst();
                MM7SubmitReq submit = new MM7SubmitReq();
                submit.setTransactionID(String.valueOf(send.id));

                submit.addTo(send.mobile);
                submit.setVASID(SysConfig.getInstance().hashmap.get("spId").
                                toString());
                submit.setVASPID(SysConfig.getInstance().hashmap.get("spCode").
                                 toString());
                submit.setServiceCode(send.serviceid);
                submit.setSenderAddress(send.src_sp);
                if (send.subject == null) {
                    send.subject = "MMS";
                }
                submit.setSubject(send.subject);
                if (send.feemobile == null) {
                    send.feemobile = send.mobile;
                }
                submit.setChargedPartyID(send.feemobile);
                submit.setChargedParty((byte) send.feetype);
                submit.setDeliveryReport(true);
                submit.setReadReply(true);
                submit.setLinkedID(send.link_id);

                boolean hasContent = false;
                if (send.infoFile != null) {
                    ArrayList array = this.getSendFileList(send.infoFile);
                    if (!array.isEmpty()) {
                        hasContent = true;
                        MMContent content = new MMContent();
                        content.setContentType(MMConstants.ContentType.
                                               MULTIPART_MIXED);
                        content.setContentID("MM7");
                        for (int i = 0; i < array.size(); i++) {
                            String filename = (String) array.get(i);

                            MMContent sub1 = MMContent.createFromFile(
                                    filename);
                            MMContentType contentType = MMConstants.ContentType.
                                    TEXT;

                            if (filename.endsWith(".smil")) {
                                content.setContentType(MMConstants.ContentType.
                                        MULTIPART_RELATED);
                                contentType = MMConstants.ContentType.SMIL;
                            } else
                            if (filename.endsWith(".jpg") ||
                                filename.endsWith(".jpeg")) {
                                contentType = MMConstants.ContentType.JPEG;
                            } else
                            if (filename.endsWith(".gif")) {
                                contentType = MMConstants.ContentType.GIF;
                            } else
                            if (filename.endsWith(".midi") ||
                                filename.endsWith(".mid")) {
                                contentType = MMConstants.ContentType.MIDI;
                            } else
                            if (filename.endsWith(".amr")) {
                                contentType = MMConstants.ContentType.AMR;
                            } else
                            if (filename.endsWith(".png")) {
                                contentType = MMConstants.ContentType.PNG;
                            } else
                            if (filename.endsWith(".wbmp")) {
                                contentType = MMConstants.ContentType.WBMP;
                            }
                            sub1.setContentType(contentType);
                            sub1.setContentID(this.getFileName(filename));
                            content.addSubContent(sub1);
                        }
                        submit.setContent(content);
                    }
                }

                if (!hasContent) {
                    MMContent content = new MMContent();
                    content.setContentType(MMConstants.ContentType.TEXT);
                    content.setContentID("MMS");
                    byte[] bb = null;
                    bb = send.subject.getBytes();
                    InputStream input = new ByteArrayInputStream(bb);
                    MMContent sub2 = MMContent.createFromStream(input);
                    sub2.setContentID("main.txt");
                    sub2.setContentType(MMConstants.ContentType.TEXT);
                    content.addSubContent(sub2);
                    submit.setContent(content);
                }

                MM7Sender mm7Sender = new MM7Sender(MmsMaster.config);
                MM7RSRes rsRes;
                rsRes = (MM7RSRes) mm7Sender.send(submit);

                if (rsRes instanceof MM7SubmitRes) {

                    MM7SubmitRes submitRes = (MM7SubmitRes) rsRes;
                    send.msg_id = submitRes.getMessageID();
                    send.submit_rsp = String.valueOf(rsRes.getStatusCode());
                    //System.out.println(rsRes.getTransactionID());
                    LogManage.ins().logger.logp(Level.INFO, " |Submit| ", " ",
                                                "  " + submit.getTo() +
                                                " : " + submit.getSubject() +
                                                " : " +
                                                rsRes.getStatusCode());

                } else {
                    send.msg_id = errSubmit;
                    LogManage.ins().logger.logp(Level.INFO, " |Submit| ", " ",
                                                "  " + submit.getTo() +
                                                " : " + submit.getSubject() +
                                                " :  不正确消息! " +
                                                rsRes.getStatusCode());
                }
                saveSend(send);
            }
        } catch (Exception ex) {
            LogManage.ins().logger.severe("sendMMS : " + ex.getMessage());
        }
    }


    private String getFileName(String path) {
        int i = path.lastIndexOf(File.separator);
        return path.substring(i + 1);
    }

    private ArrayList getSendFileList(String path) {
        ArrayList array = new ArrayList();
        File file = new File(path);
        if (file.exists()) {
            if (file.isFile()) { //是文件
                array.add(path);
            } else { //是目录
                File[] allfile = file.listFiles();
                for (int i = 0; i < allfile.length; i++) {
                    File tmp = allfile[i];
                    if (tmp.isFile()) {
                        String name = tmp.getName().toLowerCase();
                        if (name.endsWith(".jpg")
                            || name.endsWith(".jpeg")
                            || name.endsWith(".gif")
                            || name.endsWith(".midi")
                            || name.endsWith(".mid")
                            || name.endsWith(".amr")
                            // || name.endsWith(".bmp")
                            || name.endsWith(".txt")
                            || name.endsWith(".xml")
                            || name.endsWith(".smil")
                            || name.endsWith(".png")
                            || name.endsWith(".wbmp")) {
                            array.add(tmp.getAbsolutePath());
                        }
                    }
                }
            }
        }
        return array;
    }


    private void updateFlag(int id, int flag) {
        try {
            db.exeSql("update t_mms_interface_submit set flag = " + flag +
                      " where id = " + id);
        } catch (Exception ex) {
            LogManage.ins().logger.severe("updateFlag : " + ex.getMessage());
        }
    }

    private void saveSend(SendBean send) {
        try {
            String sql = "delete t_mms_interface_submit  where id = " + send.id;
            db.exeSql(sql);
            sql = "INSERT INTO t_mms_submit (msg_id ,mobile ,feemobile ,feetype ,infofee ,serviceid ,subject ,infoFile ,src_sp ,link_id ,submit_rsp) VALUES('" +
                  send.msg_id + "','" + send.mobile + "','" + send.feemobile +
                  "','" + send.feetype + "','" + send.infofee + "','" +
                  send.serviceid + "','" + send.subject + "','" + send.infoFile +
                  "','" + send.src_sp + "','" + send.link_id + "','" +
                  send.submit_rsp + "')";
            db.exeSql(sql);
        } catch (Exception ex) {
            LogManage.ins().logger.severe("saveSend : " + ex.getMessage());
        }
    }

//    private String getspid(){
//
//    }
}

⌨️ 快捷键说明

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