📄 smssorting.java
字号:
package sms;
import java.util.HashMap;
import java.util.Map;
import common.SMSParametersInfo;
/*
* 本类负责将6个需要发送的String组合成1~6条短信,返回一个HashMap引用
* 根据排列组合,共有32种分法
*/
public class SMSSorting {
String uid;
String model;
String ip;
String ctrlName;
String severity;
String evtStr;
public Map Segmentation(String uid,
String model,
String ip,
String ctrlName,
String severity,
String evtStr){
// boolean couldSend=true;
Map couldnotSendMap=null;
Map dividHashMap=new HashMap();
this.uid=uid;
this.model=model;
this.ip=ip;
this.ctrlName=ctrlName;
this.severity=severity;
this.evtStr=evtStr;
/*
* 利用HashMap来分类保存短信的划分结果,算法规则:
* 1、0开头的划分为一条短信,例如01,02,03...,这些key所对应的value组成一个长字符串,归入一条短信
* 2、1开头的划分为一条短信,例如11,12,13...,这些key所对应的value组成一个长字符串,归入一条短信
* 依次类推,目前算法最多划分为7条,因为还没有找到可以划分一个参数中不同单词的算法
*/
if(uid.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
//uid的长度小于SMS_Parameter_MAXLENGTH,测试是否可以在同一条短信中添加其他的String
dividHashMap.put("01", uid);
if((uid.length()+model.length())<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
//uid和model长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
dividHashMap.put("02", model);
if((uid.length()+model.length()+ip.length())<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
//uid+model+ip长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
dividHashMap.put("03", ip);
if((uid.length()+model.length()+ip.length()+ctrlName.length())<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
//uid+model+ip+ctrlName长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
dividHashMap.put("04", ctrlName);
if((uid.length()+model.length()+ip.length()+ctrlName.length()+severity.length())<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
//uid+model+ip+ctrlName+severity长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
dividHashMap.put("05", severity);
if((uid.length()+model.length()+ip.length()+ctrlName.length()+severity.length()+evtStr.length())<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
//uid+model+ip+ctrlName+severity+evtStr长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
dividHashMap.put("06", evtStr);
}else{
//uid+model+ip+ctrlName+severity+evtStr长度之和大于SMSParametersInfo.SMS_Parameter_MAXLENGTH
//而uid+model+ip+ctrlName+severity长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
if(evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", evtStr);
}else{
System.out.println("参数evtStr的长度超出了规定允许的范围");
return couldnotSendMap;
}
}//evtStr相关处理完毕
}else{
//uid+model+ip+ctrlName+severity长度之和大于SMSParametersInfo.SMS_Parameter_MAXLENGTH
//而uid+model+ip+ctrlName长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
if(severity.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
//共2中分法
if((severity+evtStr).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", severity);
dividHashMap.put("12", evtStr);
}else{//千万注意,此处只能有一个分割模式!!!!!!!!!
if(severity.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", severity);
dividHashMap.put("21", evtStr);
}
}
}else{
//severity,evtStr中有一个长度大于SMSParametersInfo.SMS_Parameter_MAXLENGTH
if(severity.length()>SMSParametersInfo.SMS_Parameter_MAXLENGTH){
System.out.println("参数severity的长度超出了规定允许的范围");
return couldnotSendMap;
}
if(evtStr.length()>SMSParametersInfo.SMS_Parameter_MAXLENGTH){
System.out.println("参数evtStr的长度超出了规定允许的范围");
return couldnotSendMap;
}
}
}//severity相关处理完毕
}else{
//uid+model+ip+ctrlName长度之和大于SMSParametersInfo.SMS_Parameter_MAXLENGTH
//而uid+model+ip长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
if(ctrlName.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&severity.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
){
//ctrlName,severity,evtStr长度均满足要求
//进行排列,分别检测ctrlName+severity和severity+evtStr
//可能的分发有4中
//1.ctrlName+severity一条,evtStr一条
//2.ctrlName一条,severity+evtStr一条
//3.ctrlName一条,severity一条,evtStr一条
//4.ctrlName severity evtStr一起发送
if((ctrlName+severity+evtStr).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ctrlName);
dividHashMap.put("12", severity);
dividHashMap.put("13", evtStr);
}else if((ctrlName+severity).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ctrlName);
dividHashMap.put("12", severity);
dividHashMap.put("21", evtStr);
}else if((severity+evtStr).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ctrlName);
dividHashMap.put("21", severity);
dividHashMap.put("22", evtStr);
}else{
//此else表示以上两个if均不满足,每个参数只能以单独的短信形式发出
dividHashMap.put("11", ctrlName);
dividHashMap.put("21", severity);
dividHashMap.put("31", evtStr);
}
}else{
//检查在ctrlName,severity,evtStr中是那一个参数大于SMSParametersInfo.SMS_Parameter_MAXLENGTH
if(ctrlName.length()>SMSParametersInfo.SMS_Parameter_MAXLENGTH){
System.out.println("参数ctrlName的长度超出了规定允许的范围");
}
if(severity.length()>SMSParametersInfo.SMS_Parameter_MAXLENGTH){
System.out.println("参数severity的长度超出了规定允许的范围");
}
if(evtStr.length()>SMSParametersInfo.SMS_Parameter_MAXLENGTH){
System.out.println("参数evtStr的长度超出了规定允许的范围");
}
return couldnotSendMap;
}
}//ctrlName相关处理完毕
}else{
//uid+model+ip长度之和大于SMSParametersInfo.SMS_Parameter_MAXLENGTH
//而uid+model长度之和小于SMSParametersInfo.SMS_Parameter_MAXLENGTH
if(ip.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&ctrlName.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&severity.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
){
//发送方法有8种
if((ip+ctrlName+severity+evtStr).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ip);
dividHashMap.put("12", ctrlName);
dividHashMap.put("13", severity);
dividHashMap.put("14", evtStr);
}else if(ip.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&(ctrlName+severity+evtStr).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ip);
dividHashMap.put("21", ctrlName);
dividHashMap.put("22", severity);
dividHashMap.put("23", evtStr);
}else if((ip+ctrlName).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&(severity+evtStr).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ip);
dividHashMap.put("12", ctrlName);
dividHashMap.put("21", severity);
dividHashMap.put("22", evtStr);
}else if((ip+ctrlName+severity).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ip);
dividHashMap.put("12", ctrlName);
dividHashMap.put("13", severity);
dividHashMap.put("21", evtStr);
}else if(ip.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&ctrlName.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&(severity+evtStr).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ip);
dividHashMap.put("21", ctrlName);
dividHashMap.put("31", severity);
dividHashMap.put("32", evtStr);
}else if(ip.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&(ctrlName+severity).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ip);
dividHashMap.put("21", ctrlName);
dividHashMap.put("22", severity);
dividHashMap.put("31", evtStr);
}else if((ip+ctrlName).length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&severity.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ip);
dividHashMap.put("12", ctrlName);
dividHashMap.put("21", severity);
dividHashMap.put("31", evtStr);
}else if(ip.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&ctrlName.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&severity.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH
&&evtStr.length()<SMSParametersInfo.SMS_Parameter_MAXLENGTH){
dividHashMap.put("11", ip);
dividHashMap.put("21", ctrlName);
dividHashMap.put("31", severity);
dividHashMap.put("41", evtStr);
}
}else{
//检查在ip,ctrlName,severity,evtStr中是那一个参数大于SMSParametersInfo.SMS_Parameter_MAXLENGTH
if(ip.length()>SMSParametersInfo.SMS_Parameter_MAXLENGTH){
System.out.println("参数ip的长度超出了规定允许的范围");
return couldnotSendMap;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -