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

📄 xcal.java

📁 Java p2p程序设计2002年版
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * XCal.java * * Created on November 26, 2001, 11:17 PM */package com.sams.jxta.xcal;// JDOM interfaceimport org.jdom.*;import org.jdom.output.*;import org.jdom.input.*;import java.util.Date;import java.text.SimpleDateFormat;import javax.xml.parsers.*;import org.xml.sax.*;import org.w3c.dom.*;import org.xml.sax.SAXException;import java.io.*;import java.net.*;import java.lang.reflect.*;import java.util.*;import net.jxta.endpoint.Message;import net.jxta.endpoint.MessageElement;import net.jxta.peer.*;/** * * @author  Administrator */public class XCal {    protected SimpleDateFormat format   = new SimpleDateFormat("yyyyMMdd'T'kkmmss'Z'");    static final String supporedVersion="2.0";        String versionAttr = "version";    String valueOfXML = null;    boolean changed = true;    String method ="PUBLISH";    public static final String iCalTag = "iCalendar";    public static final String vCalTag = "vCalendar";    public static final String vcardURITag = "x-JXTA-URI";    public static final String veventTag = "vevent";// Encapsulates event data    public static final String uidTag = "uid";    public static final String organizerTag = "organizer";    public static final String dtstampTag = "dtstamp";    public static final String summaryTag = "summary";    public static final String locationTag = "location";    public static final String X_VCARD_URI_Tag = "X-VCARD-URI";    public static final String dtstartTag = "dtstart";    public static final String dtendTag = "dtend";    public static final String categoriesTag = "categories";    public static final String itemTag = "item";    public static final String attendeeTag = "attendee";    public static final String noteTag = "note";    protected String uid="";    protected String vCardURI="";// URI of a VCARD    protected String organizer="";        protected String dtstamp=format.format( new Date(System.currentTimeMillis()));    protected String summary="test date";    protected String location="";    protected String vCardAddrType="";// type of address in VCARD "HOME", "WORK","" (unspecified returns the first addr)    protected String dtstart="";    protected String dtend="";    protected ArrayList category ;    // The following are for each attendie    //protected String role[]={"CHAIR"};//REQ-PART    //protected String isRSVP[]={"TRUE"};    protected ArrayList attendee=null;    protected String note="";    /** Creates new XCal */    public XCal() {        category = new ArrayList();        category.add("Meeting");    }    public XCal(String message) {        processMessage(message);    }    public String toString(){        return organizer+", "+summary+" at:"+location+" "+dtstart+"-"+dtend+" ["+dtstamp+"]";    }    /*    public XCal(Message message) {        try{            processMessage(message);        }catch(java.io.IOException ioe){            ioe.printStackTrace();        }catch( java.lang.reflect.InvocationTargetException ite){            ite.printStackTrace();        }    }     */    public String toXML(){        if (changed){            // Note that many compilers covert this into a series of appends            // to a StringBuffer, thus making this effiecient when written this way.            valueOfXML =  "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"            //+"<!DOCTYPE iCalendar PUBLIC \"-//IETF//DTD XCAL//iCalendar XML//EN\" \"http:////www.ietf.org//internet-drafts//draft-ietf-calsch-many-xcal-00.txt \" > \n"            +"<icalendar> \n"            +"<vcalendar method=\""+method+"\" version=\""+supporedVersion+"\" prodid=\"-//HandGen//NONSGML vGen v1.0//EN\"> \n"            +"<vevent> \n"            +"  <uid>"+uid+"</uid> \n"            +"  <dtstamp>"+dtstamp+"</dtstamp> \n"            +"  <organizer>"+organizer+"</organizer> \n"            +"  <summary>"+summary+"</summary> \n"            +"  <location>"+location+"</location> \n"            +"  <X-VCARD URI=\""+vCardURI+"\" addrType=\""+vCardAddrType+"\"/> \n"// location via a VCard            +"  <dtstart>"+dtstart+"</dtstart> \n"            +"  <dtend>"+dtend+"</dtend> \n"            +"  <note>"+note+"</note> \n";            if(category != null){                                valueOfXML+="  <categories> \n";                for(int i=0;i<category.size();i++){                    String cat = (String)category.get(i);                    valueOfXML+="    <item>"+cat+"</item> \n";                }                                valueOfXML+="  </categories> \n";            }            if(attendee != null){                                for(int i=0;i<attendee.size();i++){                    Attendee person = (Attendee)attendee. get(i);                    valueOfXML+="  <attendee role=\""+person.getRole()+"\" rsvp=\""+person.getRsvp()+"\">"+ person.getAttendee() +"</attendee> \n";                }            }            valueOfXML+="</vevent> \n"            +"</vcalendar> \n"            +"</icalendar> \n";/* TBD<class>CONFIDENTIAL</class><transp>TRANSPARENT</transp><categories><item>Anniversary</item><item>Personal</item><item>Special Occasion</item></categories><rrule>FREQ=YEARLY</rrule> */                                }// if changed        return valueOfXML;    }    public org.jdom.Document toJDOM(){        try{            ByteArrayInputStream in = new ByteArrayInputStream(toXML().getBytes());            SAXBuilder builder = new SAXBuilder();            org.jdom.Document doc = builder.build(in);            return doc;        }catch(JDOMException je){            je.printStackTrace();            return null;        }    }    /*    public void processMessage(Message msg) throws IOException, InvocationTargetException {        try{            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();            DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();                 MessageElement element = msg.getElement(iCalTag);            org.w3c.dom.Document  responseDoc = builder.parse(element.getStream());            org.w3c.dom.Element   root        = responseDoc.getDocumentElement();            processMessage(root);        }catch(java.io.IOException ioe){            ioe.printStackTrace();        }catch(org.xml.sax.SAXParseException spe){            System.out.println();            System.out.println("line:"+spe.getLineNumber());            System.out.println("Column:"+spe.getColumnNumber());            System.out.println("PublicId:"+spe.getPublicId() );            System.out.println("SystemId:"+spe.getSystemId() );            System.out.println(msg);            System.out.println("-------------------------------------------------------");            spe.printStackTrace(System.out);        }catch(org.xml.sax.SAXException se){            se.printStackTrace();        }catch(javax.xml.parsers.ParserConfigurationException pce){            pce.printStackTrace();            changed = true;        }    }*/    public void processMessage(String msg) {        try{            //DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();            //DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();                        //MessageElement element = msg.getElement(vCardTag);            //Document  responseDoc = builder.parse(element.getStream());            ByteArrayInputStream in = new ByteArrayInputStream(msg.getBytes());            org.jdom.input.SAXBuilder builder = new org.jdom.input.SAXBuilder();                        org.jdom.Document doc = builder.build(in);        /*         System.err.println("______________________________________________");        XMLOutputter outputter = new XMLOutputter("   ",true);        try{        outputter.output(doc, System.err);        }catch(java.io.IOException ioe){        }        System.err.println("______________________________________________");         */               org.jdom.Element element = doc.getRootElement();            if (element.getName().equals("icalendar")){                element = element.getChild("vcalendar").getChild("vevent");            }else if (element.getName().equals("vcalendar")){                element = element.getChild("vevent");            }            processMessage(element);                    }catch(org.jdom.JDOMException ioe){            ioe.printStackTrace();                                }    }        public void processMessageX(org.w3c.dom.Element   root) {                NodeList  vNodes    = root.getChildNodes();        for (int h = 0;  h < vNodes.getLength();  h++) {            Node vNode  = vNodes.item(h);                /*                String version = getText(vNode.getAttributeNode( versionAttr ));                if(supporedVersion.equals(version)&& vCalTag.equals(vNode.getNodeName())){                    System.out.println("Supported Version!");                }else{                    System.out.println("##### Error Unsupported vCard document version:"+version);                    continue;                }                 */            Enumeration enum= null;            org.w3c.dom.Element tag,tag1,tag2,tag3 =null;                        NodeList  hitNodes    = vNode.getChildNodes();            for (int i = 0;  i < hitNodes.getLength();  i++) {                Node     hitNode  = hitNodes.item(i);                                if (hitNode.getNodeName().equals(veventTag)){                    NodeList  childNodesList    = hitNode.getChildNodes();                    for (int j = 0;  j < childNodesList.getLength();  j++) {                        Node subNode  = childNodesList.item(j);                        if (organizerTag.equals(subNode.getNodeName())){                            organizer = getText(subNode);                        }else if (uidTag.equals(subNode.getNodeName())){                            uid = getText(subNode);                        }else if (dtstampTag.equals(subNode.getNodeName())){                            dtstamp = getText(subNode);                        }else if (summaryTag.equals(subNode.getNodeName())){                            summary = getText(subNode);                        }else if (locationTag.equals(subNode.getNodeName())){                            location = getText(subNode);                        }else if (dtstartTag.equals(subNode.getNodeName())){                            dtstart = getText(subNode);                        }else if (dtendTag.equals(subNode.getNodeName())){                            dtend = getText(subNode);                            //  }else if (categoriesTag.equals(subNode.getNodeName())){                            //     categories = getText(subNode);                        }else if (attendeeTag.equals(subNode.getNodeName())){                            NodeList  attendeeNodesList    = subNode.getChildNodes();                            for (int k = 0;  k < attendeeNodesList.getLength();  k++) {                                Node attendeeNode  = attendeeNodesList.item(k);                                //attendee[0] = getText(attendeeNode);                            }                        }else if (noteTag.equals(subNode.getNodeName())){                            note = getText(subNode);                        }                    }                }else if (organizerTag.equals(hitNode.getNodeName())){                    organizer = getText(hitNode);                }            }                        

⌨️ 快捷键说明

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