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

📄 dataparser.java

📁 东软短信网关接入程序
💻 JAVA
字号:
package com.zznode.dp.ismg.data;

/*
 * Created on 2004-11-4
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
import java.util.Vector;
import com.zznode.dp.ismg.util.StringHandler;
import com.zznode.dp.ismg.util.Log;
import com.zznode.dp.ismg.data.*;

/**
 * @author weich
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class DataParser {
  final String beginStr = "zzbgn";
  final String endStr = "zzend";
  final String delim = "@@";

  /**StringHandler类的实例对象*/
  private static StringHandler stringHandler = null;
  /**实例化日志操作对象*/
  private static Log log = null;

  /**本类的实例对象*/
  private static DataParser _instance;

  public DataParser() {
    stringHandler = new StringHandler().getStringHandler();
    log = new Log().getLog();
  }

  public DataParser getDataParser() {
    if (_instance == null) {
      _instance = new DataParser();
    }
    return _instance;
  }

  /**
   * 解析收到的字符串
   * @param line String 消息体
   * @return MessageModel[]
   */
  public MessageModel[] parseMessage(String line) {
    MessageModel[] messageModelArry = null;
    try {
      String[] record = line.split(endStr);
      messageModelArry = new MessageModel[record.length];
      log.writeLog("共收到" + record.length + "条工单:");
      for (int i = 0; i < record.length; i++) {
        MessageModel messageModel = new MessageModel();

        /**一条完整的工单信息*/
        String message = record[i];
        log.writeLog("message[" + i + "]:" + message);

        /**分析工单,分别提取消息ID、消息内容、发往的目的手机号*/
        Vector VMessageId = stringHandler.distillAccordTemplatePart(message,
            delim + "(.+)" + delim);
        if (VMessageId.size() > 0) {
          messageModel.setMessageId( (String) VMessageId.get(0));
          message = stringHandler.replaceAppointCharacter(message,
              delim + "(.+)" + delim + beginStr, ""); //将消息ID从消息体中去掉
          log.writeLog("消息ID:" + messageModel.getMessageId());
          System.out.println("消息ID:" + messageModel.getMessageId());
        }
        else {
          log.writeLog("消息ID不能为空!");
        }

        String messageContent = distillMessageContent(message);
        if (messageContent != null && !messageContent.equals("")) {
          messageModel.setMessageContent(messageDeal(messageContent, 70));
          log.writeLog("消息内容:" + messageContent);
          System.out.println("消息内容:" + messageContent);
        }
        else {
          log.writeLog("消息内容不能为空!");
        }

        String phone[] = distillPhone(message);
        if (phone.length > 0) {
          messageModel.setPhone(phone);
          for (int j = 0; j < messageModel.getPhone().length; j++) {
            System.out.print("目的手机号" + (j+1) + ":" + messageModel.getPhone()[j]);
          }
        }
        else {
          log.writeLog("目的手机号不能为空!");
        }
        System.out.println("");
        log.writeLog("");
        messageModelArry[i] = messageModel;
      }
      log.writeLog("\n");
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
    return messageModelArry;
  }

  /**
   * 超长消息字符串分次发送处理
   * @param Msg String
   * @param int erevy_leng 每次发送的消息长度(以byte类型计算)
   * @return String[]
   */
  private String[] messageDeal(String mess, int erevy_leng) {
    //计算消息截取段数  :56/70 = 0 => messPart=messPart=1
    int messLen = mess.length();
    int messPart = messLen / erevy_leng + 1;
    String[] messArray = new String[messPart];
    for (int i = 0; i < messPart; i++) {
      messArray[i] = mess.substring(erevy_leng * i,
                                    (erevy_leng * (i + 1) < messLen ?
                                     erevy_leng * (i + 1) :
                                     messLen));
    }
    return messArray;
  }

  /* 提取消息内容
   * @param _line String
   * @return String
   */
  private String distillMessageContent(String list) {
    String messageContent = "";
    String[] a = list.split(":");
    for (int i = 0; i < a.length - 1; i++) {
      if (i == a.length - 2) {
        messageContent += a[i];
      }
      else {
        messageContent += a[i] + ":";
      }
    }
    return messageContent;
  }

  /* 提取手机号
   * @param _line String
   * @return String
   */
  private String[] distillPhone(String list) {
    String phone[] = null;
    String[] a = list.split(":");
    phone = a[a.length - 1].split(",");
    return phone;
  }

}

⌨️ 快捷键说明

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