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

📄 calendarservice.java

📁 Java p2p程序设计2002年版
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            ((DefaultListModel)models.elementAt(i)).addElement(xCal);
        }
        
    }
    /**
     * implementation of QueryHandler for for synchronization.
     */
    class SyncHandler implements QueryHandler{
        protected String handlerName;
        protected String credential;
        protected Hashtable addressBook;
        protected SimpleDateFormat format   = new SimpleDateFormat("MM, dd, yyyy hh:mm:ss.S");
        
        public SyncHandler(String handlerName,Hashtable addressBook, String credential){
            this.handlerName = handlerName;
            this.credential = credential;
            this.addressBook = addressBook;
            
        }// end of constructor PullHandler()
        /**
         * call back method, when messages are received by the ResolverService
         * it calls back this method to deal with received responses
         * @param response ResolverQueryMsg reponse
         *
         * @version $Revision: 1.1 $
         * @since JXTA 1.0
         */
        public void processResponse(ResolverResponseMsg response) {
            System.out.println("Received a response");
            String textDoc = response.getResponse();
            if (textDoc ==null)return;
            //System.out.println("Received a response:"+textDoc);
            
            try{
                ByteArrayInputStream in = new ByteArrayInputStream(textDoc.getBytes());
                org.jdom.input.SAXBuilder builder = new org.jdom.input.SAXBuilder();
                org.jdom.Document doc = builder.build(in);
                org.jdom.Element root = doc.getRootElement();
                //secific to todo/calendar
                //root = root .getChild("event-list");
                List book = (List) root .getChildren("icalendar");
                ListIterator lister = book.listIterator();
                
                while (lister.hasNext()){
                    org.jdom.Element address = (org.jdom.Element) lister.next();
                    
                    //address = address .getChild("vcalendar");
                    //address = address .getChild("xcal");
                    
                    System.out.println("Received a response:"+address.getText());
                    XMLOutputter putter = new XMLOutputter("  ",true);
                    StringWriter writer = new StringWriter();
                    putter.output(address,writer);
                    
                    System.out.println(" sync messag:"+writer.toString());
                    String xml = writer.toString();
                    merge(new XCal(xml));
                }
                
            }catch(Exception je){//org.jdom.JDOMException je){
                je.printStackTrace();
                // return null;
            }
            
            
            
            //String textDoc = response.getResponse();
            //System.out.println(textDoc);
            System.out.println(((ResolverResponse)response).toString());
        }// End of processResponse()
        
        /**
         * Process the resolver query, and generate response
         * @return GenericResolverMsg Response to the query
         * @param query ResolverQueryMsg query
         */
        public ResolverResponseMsg processQuery(ResolverQueryMsg query) throws NoResponseException, ResendQueryException, DiscardQueryException{
            try{
                System.out.println("Received a synchronizer query");
                
                org.jdom.Element root = new org.jdom.Element("event-list");//,format.format( new Date(now)));
                org.jdom.Document doc = new org.jdom.Document(root);
                
                Enumeration enum = addressBook.elements();
                for(;enum.hasMoreElements();){
                    org.jdom.Document d2 =((XCal)enum.nextElement()).toJDOM();
                    org.jdom.Element ele = d2.getRootElement();
                    ele.detach();
                    root.addContent(ele);
                }
                // Return a generic response;
                ResolverResponseMsg message = null;
                XMLOutputter putter = new XMLOutputter("  ",true);
                StringWriter writer = new StringWriter();
                putter.output(doc,writer);
                
                System.out.println(" sync messag:"+writer.toString());
                message = new ResolverResponse(handlerName, credential,query.getQueryId(), writer.toString());
                return (ResolverResponseMsg)message;
            }catch(Exception e ){
                e.printStackTrace();
                throw new NoResponseException("Error processing query");
            }
        }// end of processQuery()
        
    }// end of class PullHandler
    
    class PushHandler implements QueryHandler{
        protected String handlerName;
        protected String credential;
        protected SimpleDateFormat format   = new SimpleDateFormat("MM, dd, yyyy hh:mm:ss.S");
        
        public PushHandler(String handlerName, String credential){
            this.handlerName = handlerName;
            this.credential = credential;
        }// end of constructor CalendarHandler()
        /**
         * call back method, when messages are received by the ResolverService
         * it calls back this method to deal with received responses
         * @param response ResolverQueryMsg reponse
         *
         * @version $Revision: 1.1 $
         * @since JXTA 1.0
         */
        public void processResponse(ResolverResponseMsg response) {
            System.out.println("Received a ToDo response");
            //String textDoc = response.getResponse();
            //System.out.println(textDoc);
            System.out.println(((ResolverResponse)response).toString());
        }// End of processResponse()
        
        /**
         * Process the resolver query, and generate response
         * @return GenericResolverMsg Response to the query
         * @param query ResolverQueryMsg query
         *
         * @exception NoResponseException is thrown when the resolver service
         * does not have an response and is not interested by the response.
         * @exception ResendQueryException is thrown when the resolver service
         * does not have a response, but is interested by the response. In that
         * case, the resolver service is responsible for forward the response
         * to the original peer that has issued the query.
         * @exception DiscardQueryException is thrown when the resolver service
         * has decided that the query should simply be ignored.
         * @exception IOException is thrown when the service resolver was not able to
         * process the query
         *
         * @version $Revision: 1.1 $
         * @since JXTA 1.0
         */
        public ResolverResponseMsg processQuery(ResolverQueryMsg query) throws NoResponseException, ResendQueryException, DiscardQueryException{
            System.out.println("Received a query");
            System.out.println(((ResolverQuery)query).toString());
            //net.jxta.document.StructuredTextDocument doc = null;
            String xml = query.getQuery();
            // Process the incomming data
            merge(new XCal(xml));
            
            throw new NoResponseException("Got the data we were interested in.");
                /*
            try{
                doc = (StructuredTextDocument)StructuredDocumentFactory.newStructuredDocument(new MimeMediaType( "text/xml" ),
                new ByteArrayInputStream(xml.getBytes()) );
            }catch(java.io.IOException ioe){
                ioe.printStackTrace();
            }
            // Let the originator know we received the message.
            net.jxta.document.Element e = null;
            long now = System.currentTimeMillis();
            e = doc.createElement("message consumed:",format.format( new Date(now)));
            doc.appendChild(e);
            // Return a generic response;
            ResolverResponseMsg message = null;
            xml = serializeDoc(doc);
            message = new ResolverResponse(handlerName, credential,query.getQueryId(), xml);
            return (ResolverResponseMsg)message;
                 */
        }// end of processQuery()
        
    }// end of class CalendarHandler
    
}

⌨️ 快捷键说明

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