package org.infosec.ismp.applet.discover.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.infosec.ismp.applet.comm.util.HttpInvokerProxyFactoryBeanUtil;
import org.infosec.ismp.applet.comm.util.ServerConfig;
import org.infosec.ismp.applet.discover.listener.SearchListener;
import org.infosec.ismp.applet.discover.thread.CDPSearchThread;
import org.infosec.ismp.manager.rmi.tm.discover.model.appletForm.CDPAppletForm;
import org.infosec.ismp.manager.rmi.tm.discover.service.applet.CDPSearchService;
/**
* CDP搜索方法类service类
* @author Wu Guojie
* @date 2009-6-11
* @version 1.0
*/
public class CDPSearchAppletService {
/**
* 搜索线程
*/
private static CDPSearchThread cdpSearchThread = null;
/**
* 搜索方法service
*/
private static CDPSearchAppletService service = null;
/**
* 构造器
*/
private CDPSearchAppletService(){}
/**
* 实例化搜索方法service
* @return 搜索方法service
*/
public static CDPSearchAppletService getInstance(){
if(service==null){
service = new CDPSearchAppletService();
}
return service;
}
/**
* 创建cdpSearchService
*/
CDPSearchService cdpSearchService = getCDPSearchService();
/**
* 远程获取cdpSearchService
* @return CDPSearchService实例
*/
public CDPSearchService getCDPSearchService(){
try{
CDPSearchService service = (CDPSearchService)HttpInvokerProxyFactoryBeanUtil
.getService(ServerConfig.getServerPath()+"/remoting/cdpSearchServiceRemoting", CDPSearchService.class);
return service;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
/**
* 搜索
* @param cdpAppletForm
* cdpAppletForm
* @return 搜索结果list
*/
public Map<String,List> doSearch(CDPAppletForm cdpAppletForm, SearchListener listener) {
cdpSearchThread = new CDPSearchThread(cdpAppletForm, listener);
cdpSearchThread.start();
/**
* 结果map
*/
Map<String,List> map = new HashMap<String,List>();
map = cdpSearchThread.getMap();
return map;
}
/**
* 停止搜索
*/
public void stopSearch(boolean silent){
cdpSearchThread.stopped(silent);
}
/**
* 保存节点
*/
public void addNodeList(Map<String,List> map){
cdpSearchThread.addNodeList(map);
}
/**
* 是否有人正在执行搜索功能
* @return 是/否
*/
public boolean isSearching(){
boolean isSearching = false;
try{
if(cdpSearchService!=null){
try{
isSearching = cdpSearchService.isSearching();
}catch(Exception e1){
throw new Exception("远程服务cdpSearchService不可用!");
}
}else{
throw new Exception("未能获取远程服务cdpSearchService!");
}
}catch(Exception e){
e.printStackTrace();
}
return isSearching;
}
/**
* 是否有人正在执行搜索功能
* @param listener
* 监听器
* @return 是/否
*/
public boolean isSearching(SearchListener listener){
boolean isSearching = false;
try{
if(cdpSearchService!=null){
try{
isSearching = cdpSearchService.isSearching();
}catch(Exception e1){
listener.remoteServiceExecuteError("远程服务没响应,请稍候再试!");
throw new Exception("远程服务cdpSearchService.isSearching不可用!");
}
}else{
listener.remoteServiceNotResponse("远程服务没响应,请稍候再试!");
throw new Exception("未能获取远程服务cdpSearchService!");
}
}catch(Exception e){
e.printStackTrace();
}
return isSearching;
}
/**
* 方法说明:获取所有已经向Manager注册的AgentBO列表(邓东和数据库的交际)
* @return
*/
// public List<AgentBO> getAllRegisteredAgentBO(){
// List<AgentBO> list = new ArrayList<AgentBO>();
// try{
// list = cdpSearchService.getAllRegisteredAgentBO();
// }catch(Exception e){
// e.printStackTrace();
// }
// return list;
// }
}