📄 jpda.java
字号:
/* * ResolverTest.java * */package com.sams.jxta.pda;import com.sams.jxta.groups.*;import com.sams.jxta.xcal.*;import com.sams.jxta.vcard.*;import java.util.Date;import java.util.Hashtable;import net.jxta.resolver.*;import java.io.StringWriter;import java.io.InputStream;import java.io.IOException;import java.io.ByteArrayInputStream;import java.util.Enumeration;import java.lang.reflect.InvocationTargetException;import net.jxta.exception.*;import net.jxta.protocol.*;import java.text.SimpleDateFormat;import net.jxta.peergroup.PeerGroup;import net.jxta.peergroup.PeerGroupFactory;import net.jxta.exception.PeerGroupException;import net.jxta.document.Advertisement;import net.jxta.document.AdvertisementFactory;import net.jxta.document.MimeMediaType;import net.jxta.discovery.DiscoveryService;import net.jxta.discovery.DiscoveryListener;import net.jxta.discovery.DiscoveryEvent;import net.jxta.protocol.DiscoveryResponseMsg;import net.jxta.protocol.PeerGroupAdvertisement;import net.jxta.impl.peergroup.Platform;import net.jxta.impl.peergroup.GenericPeerGroup;import net.jxta.document.Advertisement;import net.jxta.resolver.QueryHandler;import net.jxta.document.*;import net.jxta.protocol.*;import net.jxta.impl.protocol.*;import net.jxta.impl.resolver.*;import javax.swing.DefaultListModel;/** * This is a quick and simple example to primarly illustrate how to start project jxta * from an application, and how to create a DiscoveryListener interface * This is meant as an on going effort, if you can add to the * example to help others understand, and integrate project jxta, * feel free to do so, please refer to the "todo" section in README . */public class JPDA{ public static final String JPDA_ROOT_GROUP = "JPDA_ROOT_GROUP"; public static final net.jxta.peergroup.PeerGroupID JPDA_ROOT_GROUP_ID = new net.jxta.impl.id.UUID.PeerGroupID(new net.jxta.impl.id.UUID.UUID( 0xAAA122616461AAAAL, 0xAAA1246150325033L )); // classInit supplies these PeerGroup netPeerGroup = null; /** * root world peer group for this application **/ protected PeerGroup rootJPDA = null; protected SimpleDateFormat format = new SimpleDateFormat("MM, dd, yyyy hh:mm:ss.S"); protected AssistantView assistant; static public void main(String args[]) { // Initialize System.out.println("Initializing"); JPDA myapp = new JPDA(); System.out.println("Starting JXTA"); myapp.startJxta(); System.out.println("Start the application"); myapp.startApplication(args); } public JPDA() { // tests(); } protected GroupManager groupManager; protected PeerDiscoveryThread peerDiscoveryThread; private void startJxta() { try{ netPeerGroup = PeerGroupFactory.newNetPeerGroup(); GroupManager.setNetPeerGroup(netPeerGroup); rootJPDA = netPeerGroup; PeerDiscoveryThread peerDiscoveryThread = new PeerDiscoveryThread(rootJPDA); Thread discoThread = new Thread(peerDiscoveryThread); discoThread.start(); groupManager = new GroupManager(netPeerGroup); rootJPDA = groupManager.addGroup(JPDA_ROOT_GROUP,"net.jxta.impl.membership.NullMembershipService","Root application group",null,true,com.sams.jxta.pda.JPDA.JPDA_ROOT_GROUP_ID);//>>>,JPDA_ROOT_GROUP_ID); // Three trials int count =0; //NullCredential credential = new NullCredential( this, netPeerGroup, peer, "PDA-User" ); while(count<3 && (groupManager.joinGroup(rootJPDA,null,"NullAuthentication")==null)){ count++; } groupManager = new GroupManager(rootJPDA); peerDiscoveryThread = new PeerDiscoveryThread(rootJPDA); discoThread = new Thread(peerDiscoveryThread); discoThread.start(); addNewGroup(rootJPDA); assistant = new AssistantView(this); } catch (Exception e) { // could not instanciate the group, print the stack and exit System.out.println("fatal error : group creation failure"); e.printStackTrace(); System.exit(-1); } } public void addNewGroup(PeerGroup joinedPeerGroup){ startServices(joinedPeerGroup); } public PeerGroup addGroup(String groupName, String groupDescription){ System.out.println("getName:"+rootJPDA.getPeerGroupName()); System.out.println("parent.getName:"+((GenericPeerGroup)rootJPDA).getParentGroup().getPeerGroupName()); System.out.println("parent.getName:"+((GenericPeerGroup)rootJPDA).getParentGroup().getParentGroup().getPeerGroupName()); groupName = JPDA_ROOT_GROUP+"-"+groupName; GroupManager groupManager = new GroupManager(rootJPDA);//netPeerGroup);//rootJPDA return groupManager.addGroup(groupName,"net.jxta.impl.membership.NullMembershipService","JPDA:"+groupDescription,null,true,null); } public Object joinGroup(PeerGroup peerGroup){ int count =0; Object credential=null; while(count<3 && credential == null) { try{ credential = groupManager.joinGroup(peerGroup,null,"NullAuthentication"); }catch(Exception gmae){ gmae.printStackTrace(); } count++; } return credential; } // Start the application public void startApplication(String args[]){ try{ PeerGroup group = netPeerGroup;// This needs to be a smaller group. }catch(Exception e){ e.printStackTrace(); } //startAddressBook(); //startCalendar(); assistant = new AssistantView(this); assistant.setVisible(true); } /** * Utility to convert a document to a string. */ public static String serializeDoc(StructuredTextDocument doc) { StringWriter out = new StringWriter(); try { doc.sendToWriter(out); return out.toString(); } catch (Exception e) { e.printStackTrace(); return ""; } } public void tests(){ System.out.println("Start of XML test"); VCard vCard = new VCard(); vCard.setFirstName("foo first"); vCard.setLastName("foo last"); vCard.setEmail("foo@foo.com"); String xml = vCard.toXML(); vCard = new VCard(); vCard.processMessage(xml); System.out.println( vCard.toXML()); XCal xCal = new XCal(); xCal.setDtstart(new Date().toString()); xCal.setDtend(new Date().toString()); xCal.setSummary("Test date"); xCal.setOrganizer("turbogeek@cluck.com"); xml = xCal.toXML(); xCal = new XCal(); System.out.println( xml); xCal.processMessage(xml); System.out.println(xCal.toXML()); System.out.println("end of XML test"); //System.exit(0); } Hashtable addressBookService= new Hashtable(); Hashtable calendarService= new Hashtable(); Hashtable toDoService= new Hashtable(); public void startServices(PeerGroup peerGroup){ startAddressBook(peerGroup); startCalendar(peerGroup); startToDo(peerGroup); } public void startAddressBook(PeerGroup peerGroup){ addressBookService.put(peerGroup.getPeerGroupID(),new AddressBookService(peerGroup)); } public void startCalendar(PeerGroup peerGroup){ calendarService.put(peerGroup.getPeerGroupID(), new CalendarService(peerGroup)); } public void startToDo(PeerGroup peerGroup){ toDoService.put(peerGroup.getPeerGroupID(), new ToDoListService(peerGroup)); } public void addEntry(PeerGroup peerGroup,VCard vCard){ System.out.println("+++ "+peerGroup.getPeerGroupID()+"+++ "); AddressBookService addressBookServices = (AddressBookService)addressBookService.get(peerGroup.getPeerGroupID()); addressBookServices.addEntry(vCard); System.out.println("+++ "+addressBookServices.pushHandlerName+"+++ "); } public void updateAddress(PeerGroup peerGroup,VCard vCard){ ((AddressBookService)addressBookService.get(peerGroup.getPeerGroupID())).updateEntry(vCard); } public void addEvent(PeerGroup peerGroup,XCal xCal){ ((CalendarService)calendarService.get(peerGroup.getPeerGroupID())).addEntry(xCal); } public void updateEvent(PeerGroup peerGroup,XCal xCal){ ((CalendarService)calendarService.get(peerGroup.getPeerGroupID())).updateEntry(xCal); } public void addToDo(PeerGroup peerGroup,VToDo vToDo){ ((ToDoListService)toDoService.get(peerGroup.getPeerGroupID())).addEntry( vToDo); } public void updateToDo(PeerGroup peerGroup,VToDo vToDo){ ((ToDoListService)toDoService.get(peerGroup.getPeerGroupID())).addEntry( vToDo); } public void addCalendarModel(DefaultListModel model){ ((CalendarService)calendarService.get(rootJPDA.getPeerGroupID())).addModel(model); } public void addToDoModel(DefaultListModel model){ ((ToDoListService)toDoService.get(rootJPDA.getPeerGroupID())).addModel(model); } public void addAddressModel(DefaultListModel model){ ((AddressBookService)addressBookService.get(rootJPDA.getPeerGroupID())).addModel(model); } public void synchronize(){ synchronizeCalendarService(); synchronizeToDoListService(); synchronizeAddressBookService(); } public void synchronizeCalendarService(){ Enumeration enum = calendarService.elements(); while(enum.hasMoreElements()){ ((CalendarService)enum.nextElement()).synchronize(); } } public void synchronizeToDoListService(){ Enumeration enum = toDoService.elements(); while(enum.hasMoreElements()){ ((ToDoListService)enum.nextElement()).synchronize(); } } public void synchronizeAddressBookService(){ Enumeration enum = addressBookService.elements(); while(enum.hasMoreElements()){ ((AddressBookService)enum.nextElement()).synchronize(); } } /** Getter for property netPeerGroup. * @return Value of property netPeerGroup. */ public net.jxta.peergroup.PeerGroup getNetPeerGroup() { return netPeerGroup; } /** Getter for property rootJPDA. * @return Value of property rootJPDA. */ public net.jxta.peergroup.PeerGroup getRootJPDA() { return rootJPDA; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -