📄 vtodo.java
字号:
/* * ToDo.java * * Created on November 26, 2001, 11:38 PM */package com.sams.jxta.xcal;import org.jdom.*;import org.jdom.output.*;import org.jdom.input.*;import java.lang.reflect.*;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.util.*;import net.jxta.endpoint.Message;import net.jxta.endpoint.MessageElement;import net.jxta.peer.*;import org.apache.log4j.Category;import net.jxta.impl.id.UUID.UUIDFactory;/** * * @author Administrator */public class VToDo { private static final Category LOG = Category.getInstance(VToDo.class.getName()); protected SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd'T'kkmmss'Z'"); public static final String iCalTag = "iCalendar"; public static final String vCalTag = "vCalendar"; public static final String vtodoTag = "vtodo"; public static final String dtstampTag = "dtstamp"; public static final String dtstartTag = "dtstart"; public static final String dueTag = "due"; public static final String summaryTag = "summary"; public static final String priorityTag = "priority"; public static final String completedTag = "completed"; public static final String statusTag = "status"; public static final String commentTag = "comment"; public static final String categoriesTag = "categories"; // Custom tags public static final String idTag = "x-jxta-id"; public static final String groupIDTag = "x-jxta-group-id"; public static final String groupNameTag = "x-jxta-group-name"; public static final String groupDescTag = "x-jxta-group-desc"; public static final String peerNameTag = "x-jxta-peer-name"; public static final String peerIDTag = "x-jxta-peer-id"; public static final String statusTypes[] ={ "NEEDS-ACTION", "ACCEPTED","DECLINED", "TENTATIVE", "DELEGATED", "COMPLETED","IN-PROGRESS"}; protected boolean changed = true; protected String valueOfXML = null; protected String dtstamp=format.format( new Date(System.currentTimeMillis()));// Date static final String supporedVersion="2.0"; String method ="PUBLISH"; protected String id=UUIDFactory.newUUID().toString();// Custom tag to specify ID of item protected String dtstart=dtstamp;// Date protected String completed = "";// Date protected String due=""; protected String status=""; protected String summary="test To-Do"; protected String priority = ""; protected String comment = ""; protected String category[] = {""}; protected String groupName = ""; protected String groupID = ""; protected String groupDesc = ""; protected String peerID = ""; protected String peerName = ""; /** Creates new ToDo */ public VToDo() { } /** Creates new ToDo */ public VToDo(String message) { processMessage(message); } public String toXML(){ if (changed){ // Note that many compilers convert 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" +"<vtodo> \n" +" <"+dtstampTag+">"+dtstamp+"</"+dtstampTag+"> \n" +" <"+peerIDTag+">"+peerID+"</"+peerIDTag+">\n" +" <"+peerNameTag+">"+peerName+"</"+peerNameTag+">\n" +" <"+idTag+">"+id+"</"+idTag+">\n" +" <"+groupIDTag+">"+groupID+"</"+groupIDTag+">\n" +" <"+groupNameTag+">"+groupName+"</"+groupNameTag+">\n" +" <"+groupDescTag+">"+groupDesc+"</"+groupDescTag+">\n" +" <summary>"+summary+"</summary> \n" +" <comment>"+comment+"</comment> \n" +" <dtstart>"+dtstart+"</dtstart> \n" +" <due>"+due+"</due> \n" +" <priority>"+priority+"</priority> \n" +" <categories> \n" +" <item>"+category[0]+"</item> \n" +" </categories> \n" +"</vtodo> \n" +"</vcalendar> \n" +"</icalendar> \n"; } 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(String msg) { try{ id = "error"; dtstamp = "error"; ByteArrayInputStream in = new ByteArrayInputStream(msg.getBytes()); org.jdom.input.SAXBuilder builder = new org.jdom.input.SAXBuilder(); org.jdom.Document doc = builder.build(in); org.jdom.Element element = doc.getRootElement(); if (element.getName().equals("icalendar")){ element = element.getChild("vcalendar").getChild("vtodo"); }else if (element.getName().equals("vcalendar")){ element = element.getChild("vtodo"); } processMessage(element); }catch(org.jdom.JDOMException ioe){ LOG.error("Error parsing to do item",ioe); } } public void processMessage(org.jdom.Element element) { org.jdom.Document doc = element.getDocument(); XMLOutputter outputter = new XMLOutputter(" ",true); id = getText(element.getChild(idTag)); dtstamp = getText(element.getChild(dtstampTag)); summary = getText(element.getChild(summaryTag)); comment = getText(element.getChild(commentTag)); due = getText(element.getChild(dueTag)); completed = getText(element.getChild(completedTag)); dtstart = getText(element.getChild(dtstartTag)); status = getText(element.getChild(statusTag)); category[0] = getText(element.getChild(categoriesTag)); groupID = getText(element.getChild(groupIDTag)); groupName = getText(element.getChild(groupNameTag)); groupDesc = getText(element.getChild(groupDescTag)); peerID = getText(element.getChild(peerIDTag)); peerName = getText(element.getChild(peerNameTag)); }// end of processMessage() public String toString(){ return summary+" "+status+" due:"+due+" TimeStamp:"+dtstamp; } protected String getText(org.jdom.Element element) { if (element == null){ return ""; }else{ return element.getText(); } } /** Getter for property dtstamp. * @return Value of property dtstamp. */ public String getDtstamp() { return dtstamp; } /** Setter for property dtstamp. * @param dtstamp New value of property dtstamp. */ public void setDtstamp(String dtstamp) { this.dtstamp = dtstamp; } /** Getter for property dtstart. * @return Value of property dtstart. */ public String getDtstart() { return dtstart; } /** Setter for property dtstart. * @param dtstart New value of property dtstart. */ public void setDtstart(String dtstart) { this.dtstart = dtstart; } /** Getter for property completed. * @return Value of property completed. */ public String getCompleted() { return completed; } /** Setter for property completed. * @param completed New value of property completed. */ public void setCompleted(String completed) { this.completed = completed; } /** Getter for property due. * @return Value of property due. */ public String getDue() { return due; } /** Setter for property due. * @param due New value of property due. */ public void setDue(String due) { this.due = due; } /** Getter for property status. * @return Value of property status. */ public String getStatus() { return status; } /** Setter for property status. * @param status New value of property status. */ public void setStatus(String status) { this.status = status; } /** Getter for property summary. * @return Value of property summary. */ public String getSummary() { return summary; } /** Setter for property summary. * @param summary New value of property summary. */ public void setSummary(String summary) { this.summary = summary; } /** Getter for property priority. * @return Value of property priority. */ public String getPriority() { return priority; } /** Setter for property priority. * @param priority New value of property priority. */ public void setPriority(String priority) { this.priority = priority; } /** Getter for property changed. * @return Value of property changed. */ public boolean isChanged() { return changed; } /** Setter for property changed. * @param changed New value of property changed. */ public void setChanged(boolean changed) { this.changed = changed; } /** Getter for property comment. * @return Value of property comment. */ public java.lang.String getComment() { return comment; } /** Setter for property comment. * @param comment New value of property comment. */ public void setComment(java.lang.String comment) { this.comment = comment; } /** Getter for property groupName. * @return Value of property groupName. */ public java.lang.String getGroupName() { return groupName; } /** Setter for property groupName. * @param groupName New value of property groupName. */ public void setGroupName(java.lang.String groupName) { this.groupName = groupName; } /** Getter for property groupID. * @return Value of property groupID. */ public java.lang.String getGroupID() { return groupID; } /** Setter for property groupID. * @param groupID New value of property groupID. */ public void setGroupID(String groupID) { this.groupID = groupID; } /** Getter for property groupDesc. * @return Value of property groupDesc. */ public java.lang.String getGroupDesc() { return groupDesc; } /** Setter for property groupDesc. * @param groupDesc New value of property groupDesc. */ public void setGroupDesc(java.lang.String groupDesc) { this.groupDesc = groupDesc; } /** Getter for property peerID. * @return Value of property peerID. */ public String getPeerID() { return peerID; } /** Setter for property peerID. * @param peerID New value of property peerID. */ public void setPeerID(String peerID) { this.peerID = peerID; } /** Getter for property peerName. * @return Value of property peerName. */ public String getPeerName() { return peerName; } /** Setter for property peerName. * @param peerName New value of property peerName. */ public void setPeerName(String peerName) { this.peerName = peerName; } /** Getter for property id. * @return Value of property id. */ public java.lang.String getID() { return id; } /** Setter for property id. * @param id New value of property id. */ public void setID(java.lang.String id) { this.id = id; } /* <!ELEMENT x-foo-cust-code (#PCDATA)><!ATTLIST x-foo-cust-code value NOTATION (X-NAME) #IMPLIED>]> <iCalendar><vcalendar method="PUBLISH" version="2.0" prodid="-//HandGen//NONSGML vGen v1.0//EN"><vtodo><uid>19981104T130000@cal1.host.com </uid><dtstamp>19981104T125957Z</dtstamp><dtstart>19981105T133000Z</dtstart><due>19981106T133000Z</due><summary>Draft a test plan</summary><x-foo-cust-code>1998-ABC Corp-1234</x-foo-cust-code><priority>1</priority></vtodo></vcalendar></iCalendar> */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -