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