Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/jabber/jabberbeans/Presence.java


1   package org.jabber.jabberbeans;
2   
3   import org.jabber.jabberbeans.Extension.*;
4   
5   import java.lang.String;
6   import java.lang.InstantiationException;
7   import java.util.Vector;
8   import java.util.Enumeration;
9   
10  /**
11   * This class is an abstraction of presence packets - both incoming and 
12   * outgoing.
13   *
14   * Incoming presence packets are notifications on a resource - they are
15   * sent by the remote client's server when that client has a status change.
16   *
17   * Outgoing presence packets are of two types. You send out your presence by
18   * sending a packet to the server with your new status. The second type is a
19   * subscribe request, where you request a remote user add you to their
20   * presence notifications.
21   */
22  class Presence 
23      extends ContentPacket
24  {
25      //address we received from
26      private String status;
27      private int priority;
28      private String stateShow;
29      private Vector extensions=new Vector();
30  
31      public Presence (PresenceBuilder builder)
32    throws InstantiationException
33      {
34    super((PacketBuilder)builder);
35    /* TODO: detect invalid type*/
36    EPresenceType presenceType=new EPresenceType(type);
37    if (presenceType.getType()==EPresenceType.INVALID_TYPE)
38        throw new InstantiationException
39      ("Invalid or unrecognized type attribute on presence " +
40       "information.");
41           status=builder.getStatus();
42    priority=builder.getPriority();
43    if (priority<0)
44        throw new InstantiationException
45      ("Invalid (negative) priority on presence information");
46    stateShow=builder.getStateShow();
47    Enumeration e=builder.enumerateExtensions();
48    while (e.hasMoreElements())
49    {
50        Object element=e.nextElement();
51        if (!(element instanceof PresenceExtension))
52      throw new InstantiationException
53          ("Non-Presence Extension \"" +
54           element.getClass().getName() +
55           "\" passed through PresenceBuilder.");
56        extensions.addElement(element);
57    }
58      }
59      
60      public String getStatus()
61      {
62    return status;
63      }
64      public int getPriority()
65      {
66    return priority;
67      }
68      public String getStateShow()
69      {
70    return stateShow;
71      }
72      public Enumeration enumerateExtensions()
73      {
74    return extensions.elements();
75      }
76  
77      public String toString()
78      {
79    StringBuffer sb=new StringBuffer();
80    sb.append("<presence");
81    if (getToAddress()!=null)
82        sb.append(" to=\""   + getToAddress().toString()   + "\"");
83    if (getFromAddress()!=null)
84        sb.append(" from=\"" + getFromAddress().toString() + "\"");
85    String s;
86    if (!(s=getType().toString()).equals("unavailabe"))
87        sb.append(" type=\"" + s                        + "\"");
88    sb.append(">");
89  
90    if (!((getStatus()==null)||(getStatus().equals(""))))
91        sb.append("<status>" + 
92            getStatus() + 
93            "</status>");
94    if (getPriority()!=0)
95        sb.append("<priority>" + 
96            new Integer(getPriority()).toString() + 
97            "</priority>");
98    if (!((getStateShow()==null)||(getStateShow().equals(""))))
99        sb.append("<show>" +
100           getStateShow() +
101           "</show>");
102   Enumeration e=enumerateExtensions();
103   while (e.hasMoreElements())
104       sb.append(((Extension)e.nextElement()).toString());
105   sb.append("</presence>");
106   return new String(sb);
107     }
108 }