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