package com.wireless.sms.ismp.global;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import org.apache.log4j.Logger;
import com.wireless.sms.ismp.InitHandler;
public class CommonData {
//kk add at 2005-6-15 增加广东电信根据业务代码获取定制、退定指令 map 表
private static Map keymap = null;
private static Logger molog = LoggerConstant.mo_log;
public static boolean reload = false;
//kk add at 2005-6-15 增加根据 MTType 字段匹配相应表 map
private static Map mttypeMap = null;
private static long lastTime = 0;
private static long mttypeLastTime = 0;
//用于测试路由
private static Hashtable testData = new Hashtable();
private static String _gateWayId = InitHandler.GATEWAYID;
public static Hashtable getTestData() {
return testData;
}
public static Map getKeyMap() {
if (keymap == null || reload ||
System.currentTimeMillis() - lastTime > 30 * 60 * 1000) {
molog.info("更新定制、退定指令表");
String gatewayID = InitHandler.GATEWAYID;
Connection conn = null;
Statement stmt = null;
/** sms_pcode表是相关网关业务配置详表;
* vc2pcode业务代码,VC2KEYWORDSUB1定制指令1,VC2LONGCODESUB1定制指令1对应的长号码
* vc2isblurkeywordsub1是否模糊匹配定制指令1(0-不模糊 1-模糊),
* VC2KEYWORDUNSUB1退定指令1,VC2LONGCODEUNSUB1退定指令1对应的长号码*/
Hashtable tempMap = new Hashtable();
String sql = "select t.vc2pcode, t.VC2KEYWORDSUB1, t.VC2LONGCODESUB1, t.vc2isblurkeywordsub1, " +
"t.VC2KEYWORDUNSUB1, t.VC2LONGCODEUNSUB1 " +
" from smsplatform.sms_pcode t " +
"where t.numgatewayid = " + gatewayID + " " +
"and t.NUMMOBCLASS = 2 " +
"and t.vc2isactive = 1 ";
try {
conn = DBPool.POOL.getConnection();
stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery(sql);
while (rst.next()) {
String pcode = rst.getString("vc2pcode");
if (pcode == null) {//业务代码不能为空
continue;
}
pcode = pcode == null ? "" : pcode.trim();
String keywordsub1 = rst.getString("VC2KEYWORDSUB1");
keywordsub1 = keywordsub1 == null ? "" : keywordsub1.trim();
molog.info("...定制业务 : " + pcode);
molog.info("定制指令 : " + keywordsub1);
String longcodesub1 = rst.getString("VC2LONGCODESUB1");
longcodesub1 = (longcodesub1 == null || longcodesub1.equals("")) ?
" " : longcodesub1.trim();
String isblurkeywordsub = rst.getString("vc2isblurkeywordsub1");
if (isblurkeywordsub == null) {
isblurkeywordsub = "";
}
if (!isblurkeywordsub.equals("1")) {
isblurkeywordsub = "0";
}
String keywordunsub1 = rst.getString("VC2KEYWORDUNSUB1");
keywordunsub1 = keywordunsub1 == null ? "" : keywordunsub1.trim();
molog.info("退定指令 : " + keywordunsub1);
String longcodeunsub1 = rst.getString("VC2LONGCODEUNSUB1");
longcodeunsub1 = (longcodeunsub1 == null || longcodeunsub1.equals("")) ?
" " : longcodeunsub1.trim();
tempMap.put(pcode,
keywordsub1 + ":" + longcodesub1 + ":" + keywordunsub1 +
":" + longcodeunsub1 + ":" +
isblurkeywordsub);
}
keymap = new Hashtable(tempMap);
molog.info("更新定制、退定指令表完毕");
}
catch (Exception e) {
e.printStackTrace();
molog.error("更新定制、退定指令表异常 : ", e);
SendThread.getInstance().sendmonitor("D000001");
}
finally {
if (stmt != null) {
try {
stmt.close();
stmt = null;
}
catch (SQLException ex) {
}
}
if (conn != null) {
try {
conn.close();
conn = null;
}
catch (SQLException ex1) {
}
}
}
lastTime = System.currentTimeMillis();
}
return keymap;
}
public static Map getCNKeyMap() {
if (keymap == null || reload ||
System.currentTimeMillis() - lastTime > 30 * 60 * 1000) {
molog.info("更新定制、退定指令表");
String gatewayID = InitHandler.GATEWAYID;
Connection conn = null;
Statement stmt = null;
Hashtable tempMap = new Hashtable();
String sql = "select t.vc2pcode, t.VC2KEYWORDSUB1, t.VC2LONGCODESUB1, t.vc2isblurkeywordsub1, " +
"t.VC2KEYWORDUNSUB1, t.VC2LONGCODEUNSUB1 " +
" from smsplatform.sms_pcode t " +
"where t.numgatewayid = " + gatewayID + " " +
"and t.NUMMOBCLASS = 2 " +
"and t.vc2isactive = 1 ";
try {
conn = DBPool.POOL.getConnection();
stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery(sql);
while (rst.next()) {
String pcode = rst.getString("vc2pcode");
if (pcode == null) {
continue;
}
pcode = pcode == null ? "" : pcode.trim();
String keywordsub1 = rst.getString("VC2KEYWORDSUB1");
keywordsub1 = keywordsub1 == null ? "" : keywordsub1.trim();
molog.info("定制指令 : " + keywordsub1);
String longcodesub1 = rst.getString("VC2LONGCODESUB1");
longcodesub1 = (longcodesub1 == null || longcodesub1.equals("")) ?
" " : longcodesub1.trim();
String isblurkeywordsub = rst.getString("vc2isblurkeywordsub1");
if (isblurkeywordsub == null) {
isblurkeywordsub = "";
}
if (!isblurkeywordsub.equals("1")) {
isblurkeywordsub = "0";
}
String keywordunsub1 = rst.getString("VC2KEYWORDUNSUB1");
keywordunsub1 = keywordunsub1 == null ? "" : keywordunsub1.trim();
molog.info("退定指令 : " + keywordunsub1);
String longcodeunsub1 = rst.getString("VC2LONGCODEUNSUB1");
longcodeunsub1 = (longcodeunsub1 == null || longcodeunsub1.equals("")) ?
" " : longcodeunsub1.trim();
tempMap.put(pcode,
keywordsub1 + ":" + longcodesub1 + ":" + keywordunsub1 +
":" + longcodeunsub1 + ":" +
isblurkeywordsub);
}
keymap = new Hashtable(tempMap);
molog.info("更新定制、退定指令表完毕");
}
catch (Exception e) {
e.printStackTrace();
molog.error("更新定制、退定指令表异常 : ", e);
SendThread.getInstance().sendmonitor("D000001");
}
finally {
if (stmt != null) {
try {
stmt.close();
stmt = null;
}
catch (SQLException ex) {
}
}
if (conn != null) {
try {
conn.close();
conn = null;
}
catch (SQLException ex1) {
}
}
}
lastTime = System.currentTimeMillis();
}
return keymap;
}
/**返回匹配上该定制指令的业务代码
* keyMap.put(pcode,
keywordsub1 + ":" + longcodesub1 + ":" + keywordunsub1 +
":" + longcodeunsub1 + ":" +
isblurkeywordsub)
注释:pcode业务代码,keywordsub1定制指令1,longcodesub1定制指令1对应的长号码
* isblurkeywordsub是否模糊匹配定制指令1(0-不模糊 1-模糊),
* keywordunsub1退定指令1,longcodeunsub1退定指令1对应的长号码*/
public static S