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

📄 cataloghandler.java

📁 基于jxta的文件共享和聊天系统源代码,下载下来分析吧
💻 JAVA
字号:
/* * Created on 22-ott-2005 *  *//** * @author magowiz * */package catalog_exchange;import java.io.ByteArrayInputStream;import java.net.URL;import java.util.Date;import java.util.Vector;import net.jxta.impl.protocol.ResolverResponse;import net.jxta.protocol.ResolverQueryMsg;import net.jxta.protocol.ResolverResponseMsg;import net.jxta.resolver.QueryHandler;import net.jxta.resolver.ResolverService;import org.w3c.dom.Document;/** * The Handler that handle catalog query and response messages and, *  when necessary, tells directly to the catalog manager to download * a catalog from web. * When a catalog is received it sends an event to the listeners.  * */public class CatalogHandler implements QueryHandler {		private ResolverService resSvc;	private Vector registeredListeners=new Vector();	private String handlerName;	private CatalogManager catMan;			public CatalogHandler (ResolverService r,Vector rl,String hn,CatalogManager cm)	{	 resSvc=r;		 registeredListeners=rl;	 handlerName=hn;	 catMan=cm;	 	}				public int processQuery(ResolverQueryMsg rqm)	{		CatalogExchangeQuery q;	  	ResolverResponse resp;	  	org.w3c.dom.Document catalogo;	  		  	System.out.println("query received");	  	//System.out.println(rqm.getQuery().toString());		try		{			q= new CatalogExchangeQuery(new ByteArrayInputStream(rqm.getQuery().getBytes()));			//System.out.println(q.getCatalogName());			catalogo=catMan.getCatalog(q.getCatalogName());						//System.out.println(q.getCatalogName());			//System.out.println("");			CatalogExchangeResponse r;						r=setupResponse(q,catalogo);						resp=new ResolverResponse(handlerName,null,rqm.getQueryId(),r.toString());			resSvc.sendResponse(rqm.getSrc(),resp);		    			return ResolverService.OK;		}		catch(Exception e)		{		System.out.println("query exception");		e.printStackTrace();		return ResolverService.Repropagate;		}	}			private CatalogExchangeResponse setupResponse(CatalogExchangeQuery q,Document catalogo)	{	 CatalogExchangeResponse resp=null;	 String got="true";	 if (catalogo!=null)	 {	 	Date dq,dl;	 		 	dl=catMan.getCatalogLastModified(q.getCatalogName());	 	if(q.getDateUpdate()!=-1){	 		dq=new Date(q.getDateUpdate());	 		if (dq.after(dl))	 		{	 			got="older";	 			resp=new CatalogExchangeResponse(got,q.getCatalogName(),q.getCatalogUrl(),dq.getTime());	 		}	 	else if(dq.before(dl))	 		{	 			got="newer";	 			resp=new CatalogExchangeResponse(got,q.getCatalogName(),q.getCatalogUrl(),	 					catMan.getCatalogDownloadDate(q.getCatalogName()).getTime(),						catMan.getCatalogLastModified(q.getCatalogName()).getTime(),						catalogo);	 					 		}	 	 else if(dq.equals(dl))	 	 {	 	 	got="equal"; 			resp=new CatalogExchangeResponse(got,q.getCatalogName(),q.getCatalogUrl(),q.getDateUpdate());	 	 }	 	}	 	else	 	{	 		got="true";	 		resp=new CatalogExchangeResponse(got,q.getCatalogName(),q.getCatalogUrl(),	 					catMan.getCatalogDownloadDate(q.getCatalogName()).getTime(),						catMan.getCatalogLastModified(q.getCatalogName()).getTime(),						catalogo);	 	}	 }	 else	 {	 		 	got="false";	 	Date dq=null;	 	if (q.getDateUpdate()!=-1)	 		dq=new Date(q.getDateUpdate());	 	if (dq!=null)	 	{	 		resp=new CatalogExchangeResponse(got,q.getCatalogName(),q.getCatalogUrl());	 	}	 	else	 	{	 		 resp=new CatalogExchangeResponse(got,q.getCatalogName(),q.getCatalogUrl(),q.getDateUpdate());	 	}	 }		 return resp;	 	}		public boolean catRWeb(String cn,URL u)	{		boolean s=true;		CatWebEvt cwe;				if (catMan.refreshCatalog(cn,u)!=0)			s=false;				cwe = new CatWebEvt(this, s);	 	if (registeredListeners.size() > 0)        {            CatalogExchangeListener listener = null;            for (int i = 0; i < registeredListeners.size(); i++)            {                listener = (CatalogExchangeListener)                    registeredListeners.elementAt(i);                listener.processAnswer(cwe);            }        }		return s;	}			public boolean catWeb(String cn, URL u)	{		boolean s=true;		CatWebEvt cwe;				if (catMan.downloadCatalog(cn,u)!=0)			s=false;				cwe = new CatWebEvt(this, s);	 	if (registeredListeners.size() > 0)        {            CatalogExchangeListener listener = null;            for (int i = 0; i < registeredListeners.size(); i++)            {                listener = (CatalogExchangeListener)                    registeredListeners.elementAt(i);                listener.processAnswer(cwe);            }        }		return s;	}		public void processResponse(ResolverResponseMsg rrm)	{		 CatalogExchangeResponse r;		 CatServEvt ev;		 System.out.println("response received");		 try		 {		 	r= new CatalogExchangeResponse(new ByteArrayInputStream(rrm.getResponse().getBytes()));			ev = new CatServEvt(this, r);		 	if (registeredListeners.size() > 0)	        {	            CatalogExchangeListener listener = null;	            for (int i = 0; i < registeredListeners.size(); i++)	            {	                listener = (CatalogExchangeListener)	                    registeredListeners.elementAt(i);	                listener.processAnswer(ev);	            }	        }		 	if((r.getGot().equals("true")))		 		catMan.insertPeerReceivedCatalog(r.getCatalog(),new Date(r.getDateDownload()),new Date(r.getDateLastUpdate()),r.getCatalogUrl(),r.getCatalogName());		 	else if((r.getGot().equals("newer")))		 		catMan.updatePeerReceivedCatalog(r.getCatalog(),new Date(r.getDateDownload()),new Date(r.getDateLastUpdate()),r.getCatalogUrl(),r.getCatalogName());		 }		 catch(Exception e)		 {		  System.out.println("response exception");		  e.printStackTrace();		 }		}			}

⌨️ 快捷键说明

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