📄 cmppsubmit.java
字号:
import java.lang.*;
import java.net.*;
import java.io.*;
import CMPPCommandID;
import CMPPPacket;
public class CMPPSubmit extends CMPPPacket
{
public int msg_id = 1;//信息标识
public byte pk_total = 1;//相同msg_id的消息总条数,从1开始
public byte pk_number = 1;//相同msg_id的消息序号,从1开始
public byte registered_delivery = 0;//是否要求返回状态确认报告
public byte msg_level = 0;//信息级别
public String service_id = null;//服务类型
public byte fee_usertype = 0;//计费用户类型字段
public byte msg_fmt = 0;//信息格式
public String msg_src = null;//信息内容来源(SP_ID)
public String feetype = null;//资费类别
public String feecode = null;//资费代码(以分为单位)
public String valid_time = null;//存活有效期,遵循SMPP3.3协议
public String at_time = null;//定时发送,遵循SMPP3.3协议
public String src_terminal_id = null;//源终端MSISDN号码(没有可以为空)
public byte destusr_tl = 0;//接收消息的用户数量(小于100个用户)
public String[] dest_terminal_id;//接收业务的MSISDN号码
public byte msg_length = 0;//消息的长度(msg_fmt的值为0时,小于160个字节;其他<=140字节)
public String msg_content = null;//消息内容
//保留字段
private String reserve = "19751204";
public CMPPSubmit(int sequence_id)
{
super(CMPPCommandID.CMPP_SUBMIT,sequence_id);
}
public CMPPSubmit(CMPPPacket packet)
{
super(packet);
}
public void makeAscIISubmit(int number,int total,String terminal_id,String content)
{
msg_id = 1;
pk_total = (byte)total;
pk_number = (byte)number;
registered_delivery = 1;
msg_level = 0;
service_id = " ";
fee_usertype = 1;//对发送方计费
msg_fmt = 0;//ASCII串
msg_src = "888888";
feetype = "01";//对记费用户号码免费
feecode = "000000";//0分
valid_time = "00000000000000000";
at_time = "00000000000000000";
src_terminal_id = "000000000000000000000";
addDestTerminalID(terminal_id);
addMsgContent(content);
}
public void addDestTerminalID(String terminal_id)
{
if(terminal_id != null && terminal_id.length() > 0)
{
for(int i = terminal_id.length();i < 21;i ++)
//补齐数据
{
terminal_id = '0' + terminal_id;
}
int nSize = (dest_terminal_id == null) ? 0 : dest_terminal_id.length;
String[] ids = new String[nSize + 1];
for(int i = 0;i < nSize;i ++)
{
ids[i] = this.dest_terminal_id[i];
}
ids[nSize] = terminal_id;
destusr_tl = (byte)((nSize + 1) & 0xff);
dest_terminal_id = ids;
}
}
public void addMsgContent(String content)
{
if(content != null && content.length() > 0 && content.length() < 160)
{
msg_length = (byte)(content.length() & 0xff);
msg_content = content;
}
}
public boolean isValid()
{
if(command_id != CMPPCommandID.CMPP_SUBMIT)
{
CMPPLog.log("CMPPSubmit.isValid : not a CMPP_SUBMIT command !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(msg_id <= 0)
{
CMPPLog.log("CMPPSubmit.isValid : invalid msg_id !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(pk_number <= 0 || pk_number > pk_total)
{
CMPPLog.log("CMPPSubmit.isValid : invalid pk_total or pk_number !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(registered_delivery < 0 || registered_delivery > 2)
{
CMPPLog.log("CMPPSubmit.isValid : invalid registered_delivery !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(msg_level < 0 || msg_level > 9)
{
CMPPLog.log("CMPPSubmit.isValid : invalid msg_level !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(service_id == null || service_id.length() != 10)
{
CMPPLog.log("CMPPSubmit.isValid : invalid service_id !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(fee_usertype < 0 || fee_usertype > 2)
{
CMPPLog.log("CMPPSubmit.isValid : invalid fee_usertype !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(msg_fmt != 0 && msg_fmt != 3 && msg_fmt != 4 && msg_fmt != 8 && msg_fmt != 15)
{
CMPPLog.log("CMPPSubmit.isValid : invalid msg_fmt !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(msg_src == null || msg_src.length() != 6)
{
CMPPLog.log("CMPPSubmit.isValid : invalid msg_src !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(feetype == null || feetype.length() != 2)
{
CMPPLog.log("CMPPSubmit.isValid : invalid feetype !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(feecode == null || feecode.length() != 6)
{
CMPPLog.log("CMPPSubmit.isValid : invalid feecode !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(valid_time == null || valid_time.length() != 17)
{
CMPPLog.log("CMPPSubmit.isValid : invalid valid_time !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(at_time == null || at_time.length() != 17)
{
CMPPLog.log("CMPPSubmit.isValid : invalid at_time !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(src_terminal_id == null || src_terminal_id.length() != 21)
{
CMPPLog.log("CMPPSubmit.isValid : invalid src_terminal_id !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(destusr_tl <= 0 || destusr_tl >= 100)
{
CMPPLog.log("CMPPSubmit.isValid : invalid destusr_tl or too much destusr_tl !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(dest_terminal_id == null || dest_terminal_id.length != destusr_tl)
{
CMPPLog.log("CMPPSubmit.isValid : null dest_terminal_id or not according to destusr_tl !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
for(int i = 0;i < destusr_tl;i ++)
{
if(dest_terminal_id[i] == null || dest_terminal_id[i].length() != 21)
{
CMPPLog.log("CMPPSubmit.isValid : invalid dest_terminal_id !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
}
if(msg_length <= 0 || (msg_fmt == 0 && msg_length >= 160) || (msg_fmt != 0 && msg_length > 140))
{
CMPPLog.log("CMPPSubmit.isValid : invalid msg_length !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
if(msg_content == null || msg_content.length() != msg_length)
{
CMPPLog.log("CMPPSubmit.isValid : invalid msg_content !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
return false;
}
return true;
}
public void dump(long lMethod)
{
CMPPLog.log("\tmsg_id = 0x" + CMPPUtility.toHexString(msg_id),
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tpk_total = " + pk_total,
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tpk_number = " + pk_number,
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tregistered_delivery = " + registered_delivery
+ " [" + CMPPUtility.getRegisteredDeliveryDescription(registered_delivery) + "]",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tmsg_level = " + msg_level,
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tservice_id = \"" + service_id + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tfee_usertype = 0x" + CMPPUtility.toHexString(fee_usertype),
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tmsg_fmt = " + msg_fmt
+ " [" + CMPPUtility.getMsgFmtDescription(msg_fmt) + "]",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tmsg_src = \"" + msg_src + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tfeetype = \"" + feetype + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tfeecode = \"" + feecode + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tvalid_time = \"" + valid_time + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tat_time = \"" + at_time + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tsrc_terminal_id = \"" + src_terminal_id + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tdestusr_tl = " + destusr_tl,
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
for(int i = 0;i < destusr_tl;i ++)
{
CMPPLog.log("\tdest_terminal_id[" + i + "] = \"" + dest_terminal_id[i] + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
}
CMPPLog.log("\tmsg_length = " + msg_length,
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\tmsg_content = \"" + msg_content + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
CMPPLog.log("\treserve = \"" + reserve + "\"",
CMPPLog.LOG_CMPP_SUBMIT | lMethod);
}
public void wrap()
throws CMPPException
{
CMPPLog.log("CMPPSubmit.wrap : wrap elements !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_WRAP_METHOD);
dump(CMPPLog.LOG_WRAP_METHOD);
insertString(reserve);
insertString(msg_content);
insertByte(msg_length);
for(int i = destusr_tl;i > 0;i --)
{
insertString(dest_terminal_id[i - 1]);
}
insertByte(destusr_tl);
insertString(src_terminal_id);
insertString(at_time);
insertString(valid_time);
insertString(feecode);
insertString(feetype);
insertString(msg_src);
insertByte(msg_fmt);
insertByte(fee_usertype);
insertString(service_id);
insertByte(msg_level);
insertByte(registered_delivery);
insertByte(pk_number);
insertByte(pk_total);
insertInteger(msg_id);
}
public void unwrap()
throws CMPPException
{
CMPPLog.log("CMPPSubmit.unwrap : unwrap elements !",
CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_UNWRAP_METHOD);
msg_id = getInteger();
pk_total = getByte();
pk_number = getByte();
registered_delivery = getByte();
msg_level = getByte();
service_id = getString(10);
fee_usertype = getByte();
msg_fmt = getByte();
msg_src = getString(6);
feetype = getString(2);
feecode = getString(6);
valid_time = getString(17);
at_time = getString(17);
src_terminal_id = getString(21);
destusr_tl = getByte();
dest_terminal_id = new String[destusr_tl];
for(int i = 0;i < destusr_tl;i ++)
{
dest_terminal_id[i] = getString(21);
}
msg_length = getByte();
msg_content = getString(msg_length);
reserve = getString(8);
dump(CMPPLog.LOG_UNWRAP_METHOD);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -