📄 cataloghandler.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 + -