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

📄 submitrouter.java

📁 短信开发用于文件交换处理转发的类模块
💻 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 + -