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

📄 calendarservice.java

📁 Java p2p程序设计2002年版
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * AddressBookService.java
 *
 * Created on November 29, 2001, 1:27 PM
 */

package com.sams.jxta.pda;
import com.sams.jxta.xcal.*;
import net.jxta.resolver.QueryHandler;
import java.util.Date;
import java.text.SimpleDateFormat;
import net.jxta.impl.resolver.*;
import net.jxta.protocol.*;
import net.jxta.impl.protocol.*;

import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;

import java.io.*;
import java.net.*;
import java.lang.reflect.*;
import java.util.*;
import net.jxta.document.AdvertisementFactory;
import  net.jxta.peergroup.*;
import  net.jxta.pipe.*;
import net.jxta.discovery.*;
//import net.jxta.document.*;
import net.jxta.document.MimeMediaType;
import net.jxta.endpoint.*;
import net.jxta.id.*;
import net.jxta.exception.*;
import net.jxta.peer.*;
import net.jxta.pipe.*;
import net.jxta.peergroup.*;
import net.jxta.platform.*;
import net.jxta.protocol.*;
import net.jxta.service.*;
import javax.swing.DefaultListModel;

/**
 *
 * @author  Administrator
 */
public class CalendarService {
    
    String syncHandlerName = "SyncCalendarList";//Pull
    String pushHandlerName = "PushCalendarList";//Push
    String credential ="SAMS";
    //Hashtable addressGroups = new Hashtable();
    Hashtable allAddresses = new Hashtable();
    net.jxta.peer.PeerID peerID;
    /** Creates new CalendarService */
    PeerGroup rootPeerGroup;
    //InfoResolver resolverX;
    private DiscoveryService discovery;
    net.jxta.impl.resolver.ResolverServiceImpl resolver;
    //SynchronizerResolver synchronizerResolver;
    /** Creates new AddressBookService */
    public CalendarService(PeerGroup rootPeerGroup) {
        this.rootPeerGroup = rootPeerGroup;
        syncHandlerName += "-"+rootPeerGroup.getPeerGroupName();
        pushHandlerName += "-"+rootPeerGroup.getPeerGroupName();

        peerID = rootPeerGroup.getPeerID();
        discovery = rootPeerGroup.getDiscoveryService();
        //addGroupInterest(rootPeerGroup);
        
        PushHandler pushHandler = new  PushHandler(pushHandlerName,credential);
        SyncHandler syncHandler = new  SyncHandler(syncHandlerName,allAddresses,credential);
        
        resolver = (ResolverServiceImpl)rootPeerGroup.getResolverService();
        
        resolver.registerHandler(pushHandlerName, pushHandler);
        resolver.registerHandler(syncHandlerName, syncHandler);
        
    }
    
    static Vector models = new Vector(1);
    
    public void addModel(DefaultListModel model){
        models.add(model);
    }
    public void addEntry( XCal xCal){
        merge(xCal);
        // Get the handler for this group
        //???        System.out.println("handlers:"+handlers+ " peerGroup:"+peerGroup);
        //???         CalendarGroupHandler handler = (GroupHandler)handlers.get(peerGroup.getPeerGroupName());
        // Publish with the resolver
        //resolver.
        update(xCal.toXML());
        
    }
    public void  update(String message){
        System.out.println("Resolver sending messages");
        ResolverQueryMsg resolverQueryMsg = null;
        resolverQueryMsg = new ResolverQuery(pushHandlerName, credential,rootPeerGroup.getPeerID().toString(), message,1);
        
        // Note that the following may throw a RuntimeException
        // if the peer is not found.
        ResolverSend resolverSend = new  ResolverSend (resolver, null, resolverQueryMsg);
        
        resolverSend.start();
        /*
        // Send query to a specific rendezvous
        //Enumeration enum = peers.elements();
        try{
            Enumeration enum = discovery.getLocalAdvertisements( DiscoveryService.PEER, null, null);
            for (;enum.hasMoreElements();){
                PeerAdvertisement peer = (PeerAdvertisement)enum.nextElement();
                if (!peer.getID().equals(peerID)){
                    System.out.println("Sending a message to peer:"+ peer.getName()+"--"+peer.getID().toString());
                    try{
                        resolver.sendQuery(peer.getID().toString(), resolverQueryMsg);
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }catch(java.io.IOException ioe){
            ioe.printStackTrace();
        }
         */
    }
    
    public void synchronize(){
        //synchronizerResolver.synchronize();
        System.out.println("Resolver sending synchronize");
        ResolverQueryMsg resolverQueryMsg = null;
        resolverQueryMsg = new ResolverQuery(syncHandlerName, credential,rootPeerGroup.getPeerID().toString(), "",1);
        
        // Note that the following may throw a RuntimeException
        // if the peer is not found.
        ResolverSend resolverSend = new  ResolverSend (resolver, null, resolverQueryMsg);        
        resolverSend.start();
        /*
        // Send query to a specific rendezvous
        try{
            Enumeration enum = discovery.getLocalAdvertisements( DiscoveryService.PEER, null, null);
            for (;enum.hasMoreElements();){
                PeerAdvertisement peer = (PeerAdvertisement)enum.nextElement();
                if (!peer.getID().equals(peerID)){
                    System.out.println("Sending a message to peer:"+ peer.getName()+"--"+peer.getID().toString());
                    try{
                        resolver.sendQuery(peer.getID().toString(), resolverQueryMsg);
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }catch(java.io.IOException ioe){
            ioe.printStackTrace();
        }
         **/
        
    }
    public void updateEntry(XCal xCal){
    }
    public void deleteEntry(XCal xCal){
    }
    /**
     * Merge the new event into our database.
     */
    public synchronized void merge(XCal xCal){
        if (allAddresses.get(xCal.getDtstamp())!=null){
            System.out.println("Address book already has this message");
            // We already have this message
            return;
        }else{
            System.out.println("New address  message");
            allAddresses.put(xCal.getDtstamp(),xCal);
        }
        // Create something we can use.
        /*
        Document newDoc =xCal.toJDOM();
        Element root = newDoc.getRootElement();
         
        Hashtable addresses = calGroups.get(peerGroup.getPeerGroupName());
        addresses.put() .addContent(root);
         */
        // Update displays
        System.out.println("*****************updating list in display");
        for (int i =0;i <models.size();i++){
            System.out.println("************updating list item:"+xCal);

⌨️ 快捷键说明

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