📄 routedao.java
字号:
* 周期性定位时,取得路由信息.
* @param IsdnRange 一个号段
* @return LCS LCS对象
*/
public LCS getLCSforCycLoc(String IsdnRange){
String sql ="select isdn_range,lcs_id from lcs_route ";//where isdn_range=" + IsdnRange;
Connection conn = null;
ResultSet rs = null;
Statement st =null;
LCS resLcs = null;
Vector<String> ranges=new Vector<String>();
Vector<String> lcsIds=new Vector<String>();
try{
conn = DBPool.getConnection();
st = conn.createStatement();
rs = st.executeQuery(sql.toString());
while (rs!=null&&rs.next()) {
ranges.add(rs.getString("isdn_range"));
lcsIds.add(rs.getString("lcs_id"));
}
} catch (SQLException sqle) {
log.error("取得路由信息时出错"+sqle);
return null;
} finally {
JdbcUtil.closeResultSet(rs);
JdbcUtil.closeStat(st);
JdbcUtil.closeConn(conn);
}
int len=0;
int atLcsid=0;
String route_range;
String matched_rt_range="";//存放最后匹配到的路由号段
// 每次取出一个要定位的号段
;
//每次取出一个路由的号段,进行匹配
for(int i=0;i<ranges.size();i++){
route_range=ranges.get(i);
if(route_range.indexOf(IsdnRange)!=-1){
//在匹配到的路由号段中,挑出长度最长的
if(route_range.length()>len){
matched_rt_range=route_range;
len=route_range.length();
atLcsid=i;
}
}
}
resLcs.setIsdnRange(matched_rt_range);
resLcs.setLcsId(lcsIds.get(atLcsid));
//目前的lcsList中,只有lcsid和要定位的号段,通过读取配置文件,把其他信息补全
return maping(resLcs,"CycLocUrl");
}
private LCS CycLocLcsMaping(ResultSet rs){
LCS lcs=null;
try{
lcs = new LCS();
String lcs_id=rs.getString("lcs_id");
lcs.setLcsId(lcs_id);
Module module = Config.getInstance().getModule(lcs_id);
lcs.setURL(module.getProperties("CycLocUrl"));
lcs.setSpId(module.getProperties("SpId"));// SP ID/接入码
lcs.setSpPassword (module.getProperties("SpPassword"));;// SP 密码(MD5加密)
lcs.setServiceId (module.getProperties("ServiceId"));;// 业务ID
lcs.setOA(module.getProperties("OA")); ;// 业务订购地址。群发时不填
lcs.setFA (module.getProperties("FA"));;// 付费地址。可选
lcs.setIsQF(module.getProperties("IsQF").equalsIgnoreCase("true")?true:false);// True:群发 False:非群发 缺省为False
lcs.setMaxReceLink(Integer.parseInt(module.getProperties("MaxReceLink")));
lcs.setMaxReceRate(Integer.parseInt(module.getProperties("MaxReceRate")));
lcs.setMaxSendLink(Integer.parseInt(module.getProperties("MaxSendLink")));
lcs.setMaxSendRate(Integer.parseInt(module.getProperties("MaxSendRate")));
}catch(SQLException e){
e.printStackTrace();
}
return lcs;
}
/**
* 匹配数据记录中的登录信息,返回登录信息类对象
*/
private List<LCS> maping(List<LCS> lcs_list,String url_type){
try{
for(int i=0;i<lcs_list.size();i++){
String svr_id=lcs_list.get(i).getLcsId();
Module module = Config.getInstance().getModule(svr_id);
lcs_list.get(i).setURL(module.getProperties(url_type));
lcs_list.get(i).setCallBackUrl(module.getProperties("CallBackUrl"));
lcs_list.get(i).setSpId(module.getProperties("SpId"));// SP ID/接入码
lcs_list.get(i).setSpPassword (module.getProperties("SpPassword"));;// SP 密码(MD5加密)
lcs_list.get(i).setServiceId (module.getProperties("ServiceId"));;// 业务ID
lcs_list.get(i).setOA(module.getProperties("OA")); ;// 业务订购地址。群发时不填
lcs_list.get(i).setFA (module.getProperties("FA"));;// 付费地址。可选
lcs_list.get(i).setIsQF(module.getProperties("IsQF").equalsIgnoreCase("true")?true:false);// True:群发 False:非群发 缺省为False
lcs_list.get(i).setMaxReceLink(Integer.parseInt(module.getProperties("MaxReceLink")));
lcs_list.get(i).setMaxReceRate(Integer.parseInt(module.getProperties("MaxReceRate")));
lcs_list.get(i).setMaxSendLink(Integer.parseInt(module.getProperties("MaxSendLink")));
lcs_list.get(i).setMaxSendRate(Integer.parseInt(module.getProperties("MaxSendRate")));
}
}catch(Exception e){
e.printStackTrace();
}
return lcs_list;
}
private LCS maping(LCS lcs_list,String url_type){
try{
String svr_id=lcs_list.getLcsId();
Module module = Config.getInstance().getModule(svr_id);
lcs_list.setURL(module.getProperties(url_type));
lcs_list.setCallBackUrl(module.getProperties("CallBackUrl"));
lcs_list.setSpId(module.getProperties("SpId"));// SP ID/接入码
lcs_list.setSpPassword (module.getProperties("SpPassword"));;// SP 密码(MD5加密)
lcs_list.setServiceId (module.getProperties("ServiceId"));;// 业务ID
lcs_list.setOA(module.getProperties("OA")); ;// 业务订购地址。群发时不填
lcs_list.setFA (module.getProperties("FA"));;// 付费地址。可选
lcs_list.setIsQF(module.getProperties("IsQF").equalsIgnoreCase("true")?true:false);// True:群发 False:非群发 缺省为False
lcs_list.setMaxReceLink(Integer.parseInt(module.getProperties("MaxReceLink")));
lcs_list.setMaxReceRate(Integer.parseInt(module.getProperties("MaxReceRate")));
lcs_list.setMaxSendLink(Integer.parseInt(module.getProperties("MaxSendLink")));
lcs_list.setMaxSendRate(Integer.parseInt(module.getProperties("MaxSendRate")));
}catch(Exception e){
e.printStackTrace();
}
return lcs_list;
}
/**
* 匹配路由
* @param Isdn 单个号码
* @param RouteList 路由表数组
* @return int 本条路由对应的对端实体id
*/
private String matchRoute(String Isdn,List<Route> RouteList){
String temp="";
int route_len=0;
int route_num=-1;
String server_id="";
for(int i=0;i<RouteList.size();i++){
temp=(String)RouteList.get(i).getIsdnRange();
//找到了匹配的路由,
if(Isdn.startsWith(temp)){
//不过还没结束,要继续找出最长的那条路由
if(temp.length()>route_len){
route_len=temp.length();
route_num=i;
}
}
}
return RouteList.get(route_num).getServerID();
}
/**
* 匹配路由
* @param Isdns 多个号码
* @param RouteVector 路由表数组
* @param LcsId 路由表数组对应的LCS服务器ID,数组序号与RouteVector一致
* @return List<LCS> 归纳后的路由对象列表
*/
private List<LCS> matchRoute(List<String> Isdns,List<Route> route_list){
List<LCS> lcs_list=new Vector<LCS>();
/* int founded=0;//是否在LCS列表中,找到了指定的LCS
//循环取出要定位的号码,一个个确定路由
for(int i=0;i<Isdns.size();i++){
//匹配路由,得到对端实体id
String svr_id=matchRoute( Isdns.get(i),route_list);
if(lcs_list==null){
LCS temp_lcs=new LCS();
temp_lcs.setLcsId(svr_id);
temp_lcs.IsdnGroup.add(Isdns.get(i));
lcs_list.add(temp_lcs);
}
//LCS列表非空,则遍历一遍,如果列表中已经有此LCS,则把推送至相同LCS的号码,加入此LCS对象
else{
for(int j=0;j<lcs_list.size();j++){
String temp_svr_id=lcs_list.get(j).getLcsId();
if(temp_svr_id.equals(svr_id)){
lcs_list.get(j).IsdnGroup.add(Isdns.get(i));
founded=1;
}
}
//如果遍历了一遍,列表中无此LCS,则添加一个新的LCS
if(founded==0){
LCS tmp_lcs=new LCS();
tmp_lcs.setLcsId(svr_id);
tmp_lcs.IsdnGroup.add(Isdns.get(i));
lcs_list.add(tmp_lcs);
}
}
}*/
return lcs_list;
}
public void LogSentRequest(String isdn_range,String correlator,String target_url){
SentRequest sent_req=new SentRequest();
sent_req.setCorrelator(correlator);
sent_req.setIsdn_range(isdn_range);
sent_req.setTarget_url(target_url);
SentRequests.put(isdn_range, sent_req);
}
public SentRequest getSentRequest(String isdn_range){
if (SentRequests.size() >0 && SentRequests.containsKey(new Integer(isdn_range))) {
return SentRequests.get(isdn_range);
}
return null;
}
public SentRequest delSentRequest(String isdn_range){
if (SentRequests.size() >0 && SentRequests.containsKey(new Integer(isdn_range))) {
return SentRequests.remove(isdn_range);
}
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -