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

📄 sagcycloc.java

📁 中国移动定位引擎的客户端
💻 JAVA
字号:
/**
* <p>Title: 小区推送LBP项目</p>
* <p>Description:
*   此类组织ISAG需要的参数,然后调用WSDL生成的Client代码,处理路由表,流量控制
* </p>
* 本类接收到的周期性请求里,可能包含多个定位号段,每个号段通过查询路由表,又可能拆分成多对小号段和LCS的URL
* 重发和异常处理机制要特别注意
* <p>Copyright: 2008 福建福富软件技术股份有限公司 </p>
* <p>Company: 福建福富软件技术股份有限公司</p> 
* @author chenxin
* @version v1.0
*/
package ffcs.lbp.SagClient;

import java.util.Iterator;
import java.util.List;
import java.util.Vector;

import cn.com.chinatelecom.schema.ctcc.common.v2_1.SimpleReference;
import cn.com.chinatelecom.schema.ctcc.common.v2_1.TimeMetric;
import cn.com.chinatelecom.schema.ctcc.common.v2_1.TimeMetrics;
import cn.com.chinatelecom.wsdl.ctcc.terminal_location.notification_manager.v2_2.service.TerminalLocationNotificationManager;
import cn.com.chinatelecom.wsdl.ctcc.terminal_location.notification_manager.v2_2.service.TerminalLocationNotificationManagerServiceClient;
import cn.com.chinatelecom.wsdl.ctcc.terminal_location.notification_manager.v2_2.service.TerminalLocationNotificationManagerServiceImpl;
import ffcs.config.Config;
import ffcs.config.Module;
import ffcs.lbp.common.LbpUtil;
import ffcs.lbp.common.SimpleHashtable;
import ffcs.lbp.dao.LCS;
import ffcs.lbp.dao.RouteDAO;
import ffcs.lbp.dao.UserInfoDao;
import ffcs.lbp.le.message.CycLoc;
import ffcs.lbp.le.message.tlv.TLVTable;
import ffcs.logging.Log;
import ffcs.logging.LogFactory;

public class SagCycLoc {
	private TLVTable IsdnRange=null;
	private int Interval; 	
	private int  StartTime	;
	private int  StopTime	;
	private int Duration;
	private String callback_url;
	private int RequestedAccuracy;
	private  SimpleHashtable SentReqList;//=new SimpleHashtable(maxSentReqList);
	private static Log log = LogFactory.getLog(SagCycLoc.class);
	public SagCycLoc() {
	}
	public SagCycLoc(CycLoc cycLoc){//TLVTable isdnrange,int interval,long  starttime,long  stoptime,int duration) {
		this.IsdnRange=cycLoc.getIsdnRange();
		this.Interval=cycLoc.getInterval(); 	
		this.StartTime=cycLoc.getStartTime();
		this.StopTime=cycLoc.getStopTime();
		this.Duration=cycLoc.getDuration();
	   }
	 /*
	  * 组成必要参数,调用WebService客户端,向ISAG发出定位请求
	  */
	public void bulidSagCycLoc(){
		/*
		 * 变量IsdnRange为包含多个号段的TLVTable
		 */
		  //先查询路由表,得到一个LCS对象的List,每个LCS对象包含IsdnRange和URL
		  Iterator<String>   range_it  = IsdnRange.values().iterator();
		  RouteDAO rt=new RouteDAO();
		  UserInfoDao userDao=new UserInfoDao();
		  List<String> userList =new   Vector<String>(); 
		  List <LCS>lcs_list;
		  LCS temp_lcs;
		  String target_url;
		  //构造WebService  客户端
		  TerminalLocationNotificationManagerServiceClient service = new TerminalLocationNotificationManagerServiceClient();
	      TerminalLocationNotificationManager impl;
	      
	      
	      
	      if(range_it.hasNext()){

		 	  //输入号段,输出已包含要定位号段,url等对端实体信息的lcs 列表
	      temp_lcs=  rt.getLCSforCycLoc(range_it.next());
        
        	    userList=userDao.getUserByRangesFromDB(temp_lcs.getIsdnRange());
            //  构造SimpleReference,包含名称,回送URL和唯一标识id
   		   	SimpleReference ref=new SimpleReference();
   	    	ref.setCorrelator(LbpUtil.getNextSeqNum()+"");
   	    	ref.setEndpoint(temp_lcs.getCallBackUrl());
   	    	ref.setInterfaceName("LBP");
   	    	//   构造频率和持续时间
	    	TimeMetric Frequency_time=new TimeMetric();
	    	Frequency_time.setMetric(TimeMetrics.SECOND);
	    	Frequency_time.setUnits(Interval);
	    	TimeMetric Duration_time=new TimeMetric();
	    	Duration_time.setMetric(TimeMetrics.SECOND);
	    	Duration_time.setUnits((int)Duration);
	    	try{
	    		target_url=temp_lcs.getURL();
//	    	调用WebServiceClient,
	 		  service.getTerminalLocationNotificationManagerLocalEndpoint(target_url);
			  impl=new TerminalLocationNotificationManagerServiceImpl();
	    	   impl=service.getTerminalLocationNotificationManager(target_url);
			  impl.startPeriodicNotification(ref, userList, 11, Frequency_time, Duration_time);
		    	//发送成功之后,记录号段,Correlator和URL,为以后停止周期性定位留底
		    	rt.LogSentRequest(temp_lcs.getIsdnRange(),LbpUtil.getSeqNum()+"",temp_lcs.getURL());
           }catch ( Exception e){
        	   log.error("调用ISAG的周期性定位出错"+e);
           }
	      }//end of " if(range_it.hasNext())"
		     
	    } 
	
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		

	
	 List<String> userList =new   Vector<String>();
	 userList.add("88389162"); 
	 userList.add("88389163"); 
	 userList.add("88389164");
	SimpleReference ref=new SimpleReference();
   	ref.setCorrelator("abcdefg");
   	ref.setEndpoint("http://192.168.26.65/RecvServlet/recv");
   	ref.setInterfaceName("LBP");
   	//   构造频率和持续时间
	TimeMetric Frequency_time=new TimeMetric();
	Frequency_time.setMetric(TimeMetrics.SECOND);
	Frequency_time.setUnits(5);
	TimeMetric Duration_time=new TimeMetric();
	Duration_time.setMetric(TimeMetrics.SECOND);
	Duration_time.setUnits(5);
	try{
		System.out.println("start");
		
//String ws="http://127.0.0.1/ISAGdemo/services/TerminalLocationNotificationManagerService";
String ws="http://192.168.26.68:8080/sagdemo/receive";
//	调用WebServiceClient
		  TerminalLocationNotificationManagerServiceClient service = new TerminalLocationNotificationManagerServiceClient();
//		  service.getTerminalLocationNotificationManager(ws);
		  service.getTerminalLocationNotificationManagerLocalEndpoint(ws);
		  TerminalLocationNotificationManager impl=new TerminalLocationNotificationManagerServiceImpl();
		   impl=service.getTerminalLocationNotificationManager(ws);
//  	参数构造完毕,调用Client

/*	      System.out.println(service.getTerminalLocationNotificationManagerLocalEndpoint());
	      Iterator end_pois=service.getEndpoints().iterator();
	      while(end_pois.hasNext()){
	    	  System.out.println(end_pois.next());
	      }*/
		  impl.startPeriodicNotification(ref, userList, 11, Frequency_time, Duration_time);
//    	NotiCli.startPeriodicNotification(ref, userList, 11, Frequency_time, Duration_time);


	
}catch (Exception e){
	e.printStackTrace();
	System.out.println(e);
}

	}
	
	
	
	

		public void readConfig() {
			try {
				Module module = Config.getInstance().getModule("IsagClient");
			    callback_url = module.getProperties("CallBackUrl");
			    RequestedAccuracy = Integer.parseInt(module.getProperties("RequestedAccuracy"));
			} catch (Exception e) {
				log.error("读配置文件出错", e);
				System.exit(0);
			}
		}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -