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

📄 routedao.java

📁 中国移动定位引擎的客户端
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	     * 周期性定位时,取得路由信息.
	     * @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 + -