📄 submitrouter.java
字号:
package com.sms.platform.switchcenter.entity;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import org.jdom.Element;
import com.pub.util.ReaderXml;
import com.sms.protocol.standard12.Standard_Inner_Submit;
/**
* <p>
* Title: 通用短信代理
* </p>
*
* <p>
* Description:
* </p>
*
* <p>
* Copyright: Copyright (c) 2007
* </p>
*
* <p>
* Company:
* </p>
*
* @author not attributable
* @version 1.0
*/
public class SubmitRouter implements Comparator {
private static Logger log = Logger.getLogger(SubmitRouter.class);
private int gatewayID;
private String longCode;
private String keyWord;
private int lcCheckFlag;
private int kwCheckFlag;
private int operatorID;
private int provinceID;
private int coagentID;
private String serviceCode;
private int messageType;
private int feeValue;
private int serviceCodeID;
private int productID;
private int feeType;
private int productType;
public SubmitRouter() {
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("gatewayID : ").append(gatewayID).append("\t");
sb.append("longCode : ").append(longCode).append("\t");
sb.append("keyWord : ").append(keyWord).append("\t");
sb.append("lcCheckFlag : ").append(lcCheckFlag).append("\t");
sb.append("kwCheckFlag : ").append(kwCheckFlag).append("\t");
sb.append("operatorID : ").append(operatorID).append("\t");
sb.append("provinceID : ").append(provinceID).append("\t");
sb.append("coagentID : ").append(coagentID).append("\t");
sb.append("serviceCode : ").append(serviceCode).append("\t");
sb.append("messageType : ").append(messageType).append("\t");
sb.append("feeValue : ").append(feeValue).append("\t");
sb.append("serviceCodeID : ").append(serviceCodeID).append("\t");
sb.append("productID : ").append(productID).append("\t");
sb.append("serviceCodeType : ").append(feeType).append("\t");
sb.append("productType : ").append(productType).append(" ");
return sb.toString();
}
/**
* 装载业务路由数据
*
* @return List
*/
public static List<SubmitRouter> loadSubmitRouter() throws Exception {
List<SubmitRouter> router = null;
Element element = null;
List list = ReaderXml.loadListElement("./memory/OperationRouter.xml",
"//sub");
Iterator it = list.iterator();
router = new ArrayList<SubmitRouter>();
SubmitRouter opRouter = new SubmitRouter();
while (it.hasNext()) {
element = (Element) it.next();
if (ReaderXml.getAttributeInteger(element, "type", 0) == 1) {
continue;
}
opRouter.setGatewayID(ReaderXml.getChildTextInteger(element,
"gatewayID", 0));
opRouter.setLongCode(ReaderXml.getChildTextString(element,
"longCode", ""));
opRouter.setKeyWord(ReaderXml.getChildTextString(element,
"keyWord", ""));
opRouter.setLcCheckFlag(ReaderXml.getChildTextInteger(element,
"lcCheckFlag", 0));
opRouter.setKwCheckFlag(ReaderXml.getChildTextInteger(element,
"kwCheckFlag", 0));
opRouter.setOperatorID(ReaderXml.getChildTextInteger(element,
"operatorID", 0));
opRouter.setProvinceID(ReaderXml.getChildTextInteger(element,
"provinceID", 0));
opRouter.setCoagentID(ReaderXml.getChildTextInteger(element,
"coagentID", 0));
opRouter.setServiceCode(ReaderXml.getChildTextString(element,
"serviceCode", ""));
opRouter.setMessageType(ReaderXml.getChildTextInteger(element,
"messageType", 0));
opRouter.setFeeValue(ReaderXml.getChildTextInteger(element,
"feeValue", 0));
opRouter.setServiceCodeID(ReaderXml.getChildTextInteger(element,
"serviceCodeID", 0));
opRouter.setProductID(ReaderXml.getChildTextInteger(element,
"productID", 0));
opRouter.setFeeType(ReaderXml.getChildTextInteger(element,
"feeType", 0));
opRouter.setProductType(ReaderXml.getChildTextInteger(element,
"productType", 0));
router.add(opRouter);
opRouter = new SubmitRouter();
}
return router;
}
/**
* 返回 -1 向前移动, 1 向后移动, 0 不移动
*
* @param o1
* Object
* @param o2
* Object
* @return int
*/
public int compare(Object o1, Object o2) {
SubmitRouter sr1 = (SubmitRouter) o1;
SubmitRouter sr2 = (SubmitRouter) o2;
if (sr1.getCoagentID() > sr2.getCoagentID()) {
return -1;
} else if (sr1.getCoagentID() == sr2.getCoagentID()) {
;
} else {
return 1;
}
if (sr1.getOperatorID() < sr2.getOperatorID()) {
return -1;
} else if (sr1.getOperatorID() == sr2.getOperatorID()) {
;
} else {
return 1;
}
if (sr1.getProvinceID() > sr2.getProvinceID()) {
return -1;
} else if (sr1.getProvinceID() == sr2.getProvinceID()) {
;
} else {
return 1;
}
if (sr1.getProductID() > sr2.getProductID()) {
return -1;
} else if (sr1.getProductID() == sr2.getProductID()) {
;
} else {
return 1;
}
// for (int i = 0; i < sr1.serviceCode.length(); i++) {
// if (sr1.serviceCode.toCharArray()[i] > sr2.serviceCode
// .toCharArray()[i]) {
// return -1;
// } else if (sr1.serviceCode.toCharArray()[i] == sr2.serviceCode
// .toCharArray()[i]) {
// ;
// } else {
// return 1;
// }
// }
return 0;
}
public static final int COMPARE_SUCCESS = 0;
public static final int COMPARE_FAILURE = -1;
/**
* 长号码,关键字比较,返回 0成功 -1错误
*
* @param lc
* String
* @param kw
* String
* @param operatorID
* int
* @param provinceID
* int
* @return int
*/
public int compare(int co, int oprId, int provId, int prodId) {
// if (log.isDebugEnabled()) {
// log.debug(co + " : " + this.coagentID);
// log.debug(oprId + " : " + this.operatorID);
// log.debug(provId + " : " + this.provinceID);
// log.debug(prodId + " : " + this.getProductID());
// log.debug("========================================================");
// }
if (co > this.getCoagentID()) { //
return -1;
} else if (co == this.getCoagentID()) {
;
} else {
return 1;
}
if (oprId < this.operatorID) {
return -1;
} else if (oprId == this.operatorID) {
;
} else {
return 1;
}
// if (this.provinceID == 0 || this.provinceID == 1) {
// ;
// } else {
if (provId > this.provinceID) {
return -1;
} else if (provId == this.provinceID) {
;
} else {
return 1;
}
// }
if (prodId > this.getProductID()) {
return -1;
} else if (prodId == this.getProductID()) {
;
} else {
return 1;
}
return 0;
}
/**
* 二分查找
*
* @param list
* List
* @param lc
* String
* @param kw
* String
* @return boolean
*/
public static boolean search(List<SubmitRouter> list,
Standard_Inner_Submit sis) {
boolean ret = false;
int iindex = 0; // 相当于指针的东西
int istart = 0; //
int iend = list.size() - 1;
for (int i = 0; i < list.size(); i++) {
// System.out.println("iindex : " + iindex + " istart : " + istart +
// " iend : " + iend);
if (list.size() <= 2) {
iindex = i;
} else {
iindex = (istart + iend) / 2;
if (iindex == istart && istart == (iend - 1) && iindex != 0) {
iindex++;
}
}
SubmitRouter sr = list.get(iindex);
if (sr.compare(sis.getSrcClientID(), sis.getOperatorID(), sis
.getProvinceID(), sis.getProductID()) > SubmitRouter.COMPARE_SUCCESS) {
istart = iindex;
} else if (sr.compare(sis.getSrcClientID(), sis.getOperatorID(),
sis.getProvinceID(), sis.getProductID()) < SubmitRouter.COMPARE_SUCCESS) {
iend = iindex;
} else {
sis.setDesClientID(sr.getGatewayID());
sis.setServiceCodeID(sr.getServiceCodeID());
sis.setServiceCode(sr.getServiceCode());
sis.setFeeType((short) sr.getFeeType());
sis.setFeeValue((short) sr.getFeeValue());
ret = true;
// if (log.isDebugEnabled()) {
// log.debug("search : " + ret);
// }
break;
}
if (istart == iend) {
break;
}
}
if (ret == false && sis.getProvinceID() != 1) {
ret = false;
iindex = 0; // 相当于指针的东西
istart = 0; //
iend = list.size() - 1;
for (int i = 0; i < list.size(); i++) {
// System.out.println("iindex : " + iindex + " istart : " +
// istart +
// " iend : " + iend);
if (list.size() <= 2) {
iindex = i;
} else {
iindex = (istart + iend) / 2;
if (iindex == istart && istart == (iend - 1) && iindex != 0) {
iindex++;
}
}
SubmitRouter sr = list.get(iindex);
// String sc, String co, int oprId, int proId
if (sr.compare(sis.getSrcClientID(), sis.getOperatorID(), 1,
sis.getProductID()) > SubmitRouter.COMPARE_SUCCESS) {
istart = iindex;
} else if (sr.compare(sis.getSrcClientID(),
sis.getOperatorID(), 1, sis.getProductID()) < SubmitRouter.COMPARE_SUCCESS) {
iend = iindex;
} else {
sis.setDesClientID(sr.getGatewayID());
sis.setServiceCodeID(sr.getServiceCodeID());
sis.setServiceCode(sr.getServiceCode());
sis.setFeeType((short) sr.getFeeType());
sis.setFeeValue((short) sr.getFeeValue());
ret = true;
// if (log.isDebugEnabled()) {
// log.debug("search : " + ret);
// }
break;
}
if (istart == iend) {
break;
}
}
}
return ret;
}
/**
* 二分查找
*
* @param list
* List
* @param lc
* String
* @param kw
* String
* @return boolean
*/
public static String search2(List<SubmitRouter> list,
Standard_Inner_Submit sis) { // String
// lc,
// String
// kw)
// {
String ret = "";
int iindex = 0; // 相当于指针的东西
int istart = 0; //
// for (int i = 0; i < list.size(); i++) {
// SubmitRouter sr = list.get(i);
// System.out.println(sr.toString());
// }
int iend = list.size() - 1;
for (int i = 0; i < list.size(); i++) {
// System.out.println("iindex : " + iindex + " istart : " + istart +
// " iend : " + iend);
if (list.size() <= 2) {
iindex = i;
} else {
iindex = (istart + iend) / 2;
if (iindex == istart && istart == (iend - 1) && iindex != 0) {
iindex++;
}
}
SubmitRouter sr = list.get(iindex);
// String sc, String co, int oprId, int proId
if (sr.compare(sis.getSrcClientID(), sis.getProductID(), sis
.getOperatorID(), sis.getProvinceID()) > SubmitRouter.COMPARE_SUCCESS) {
istart = iindex;
} else if (sr.compare(sis.getSrcClientID(), sis.getProductID(), sis
.getOperatorID(), sis.getProvinceID()) < SubmitRouter.COMPARE_SUCCESS) {
iend = iindex;
} else {
sis.setDesClientID(sr.getGatewayID());
sis.setServiceCodeID(sr.getServiceCodeID());
if (sis.getServiceCode() == null
|| sis.getServiceCode().equals("")) {
sis.setServiceCode(sr.getServiceCode());
sis.setFeeType((short) sr.getFeeType());
sis.setFeeValue((short) sr.getFeeValue());
}
ret = sr.getProductType() + "," + sr.getFeeType() + ","
+ sr.getProductID() + "," + sr.getServiceCodeID();
// if (log.isDebugEnabled()) {
// log.debug("search : " + ret);
// }
break;
}
if (istart == iend) {
break;
}
}
return ret;
}
public int getCoagentID() {
return coagentID;
}
public int getGatewayID() {
return gatewayID;
}
public String getKeyWord() {
return keyWord;
}
public int getKwCheckFlag() {
return kwCheckFlag;
}
public int getLcCheckFlag() {
return lcCheckFlag;
}
public String getLongCode() {
return longCode;
}
public int getOperatorID() {
return operatorID;
}
public int getProvinceID() {
return provinceID;
}
public String getServiceCode() {
return serviceCode;
}
public int getMessageType() {
return messageType;
}
public void setCoagentID(int coagentID) {
this.coagentID = coagentID;
}
public void setGatewayID(int gatewayID) {
this.gatewayID = gatewayID;
}
public void setKeyWord(String keyWord) {
this.keyWord = keyWord;
}
public void setKwCheckFlag(int kwCheckFlag) {
this.kwCheckFlag = kwCheckFlag;
}
public void setLcCheckFlag(int lcCheckFlag) {
this.lcCheckFlag = lcCheckFlag;
}
public void setLongCode(String longCode) {
this.longCode = longCode;
}
public void setOperatorID(int operatorID) {
this.operatorID = operatorID;
}
public void setProvinceID(int provinceID) {
this.provinceID = provinceID;
}
public void setServiceCode(String serviceCode) {
this.serviceCode = serviceCode;
}
public void setMessageType(int messageType) {
this.messageType = messageType;
}
public int getFeeValue() {
return feeValue;
}
public void setFeeValue(int feeValue) {
this.feeValue = feeValue;
}
public int getProductID() {
return productID;
}
public void setProductID(int productID) {
this.productID = productID;
}
public int getServiceCodeID() {
return serviceCodeID;
}
public void setServiceCodeID(int serviceCodeID) {
this.serviceCodeID = serviceCodeID;
}
public int getProductType() {
return productType;
}
public void setProductType(int productType) {
this.productType = productType;
}
public int getFeeType() {
return feeType;
}
public void setFeeType(int feeType) {
this.feeType = feeType;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -