KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jivesoftware > smackx > provider > MUCUserProvider


1 /**
2  * $RCSfile$
3  * $Revision: 2407 $
4  * $Date: 2004-11-02 20:37:00 -0300 (Tue, 02 Nov 2004) $
5  *
6  * Copyright 2003-2004 Jive Software.
7  *
8  * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */

20
21 package org.jivesoftware.smackx.provider;
22
23 import org.jivesoftware.smack.packet.*;
24 import org.jivesoftware.smack.provider.*;
25 import org.jivesoftware.smackx.packet.*;
26 import org.xmlpull.v1.XmlPullParser;
27
28 /**
29  * The MUCUserProvider parses packets with extended presence information about
30  * roles and affiliations.
31  *
32  * @author Gaston Dombiak
33  */

34 public class MUCUserProvider implements PacketExtensionProvider {
35
36     /**
37      * Creates a new MUCUserProvider.
38      * ProviderManager requires that every PacketExtensionProvider has a public, no-argument
39      * constructor
40      */

41     public MUCUserProvider() {
42     }
43
44     /**
45      * Parses a MUCUser packet (extension sub-packet).
46      *
47      * @param parser the XML parser, positioned at the starting element of the extension.
48      * @return a PacketExtension.
49      * @throws Exception if a parsing error occurs.
50      */

51     public PacketExtension parseExtension(XmlPullParser parser) throws Exception JavaDoc {
52         MUCUser mucUser = new MUCUser();
53         boolean done = false;
54         while (!done) {
55             int eventType = parser.next();
56             if (eventType == XmlPullParser.START_TAG) {
57                 if (parser.getName().equals("invite")) {
58                     mucUser.setInvite(parseInvite(parser));
59                 }
60                 if (parser.getName().equals("item")) {
61                     mucUser.setItem(parseItem(parser));
62                 }
63                 if (parser.getName().equals("password")) {
64                     mucUser.setPassword(parser.nextText());
65                 }
66                 if (parser.getName().equals("status")) {
67                     mucUser.setStatus(new MUCUser.Status(parser.getAttributeValue("", "code")));
68                 }
69                 if (parser.getName().equals("decline")) {
70                     mucUser.setDecline(parseDecline(parser));
71                 }
72                 if (parser.getName().equals("destroy")) {
73                     mucUser.setDestroy(parseDestroy(parser));
74                 }
75             }
76             else if (eventType == XmlPullParser.END_TAG) {
77                 if (parser.getName().equals("x")) {
78                     done = true;
79                 }
80             }
81         }
82
83         return mucUser;
84     }
85
86     private MUCUser.Item parseItem(XmlPullParser parser) throws Exception JavaDoc {
87         boolean done = false;
88         MUCUser.Item item =
89             new MUCUser.Item(
90                 parser.getAttributeValue("", "affiliation"),
91                 parser.getAttributeValue("", "role"));
92         item.setNick(parser.getAttributeValue("", "nick"));
93         item.setJid(parser.getAttributeValue("", "jid"));
94         while (!done) {
95             int eventType = parser.next();
96             if (eventType == XmlPullParser.START_TAG) {
97                 if (parser.getName().equals("actor")) {
98                     item.setActor(parser.getAttributeValue("", "jid"));
99                 }
100                 if (parser.getName().equals("reason")) {
101                     item.setReason(parser.nextText());
102                 }
103             }
104             else if (eventType == XmlPullParser.END_TAG) {
105                 if (parser.getName().equals("item")) {
106                     done = true;
107                 }
108             }
109         }
110         return item;
111     }
112
113     private MUCUser.Invite parseInvite(XmlPullParser parser) throws Exception JavaDoc {
114         boolean done = false;
115         MUCUser.Invite invite = new MUCUser.Invite();
116         invite.setFrom(parser.getAttributeValue("", "from"));
117         invite.setTo(parser.getAttributeValue("", "to"));
118         while (!done) {
119             int eventType = parser.next();
120             if (eventType == XmlPullParser.START_TAG) {
121                 if (parser.getName().equals("reason")) {
122                     invite.setReason(parser.nextText());
123                 }
124             }
125             else if (eventType == XmlPullParser.END_TAG) {
126                 if (parser.getName().equals("invite")) {
127                     done = true;
128                 }
129             }
130         }
131         return invite;
132     }
133
134     private MUCUser.Decline parseDecline(XmlPullParser parser) throws Exception JavaDoc {
135         boolean done = false;
136         MUCUser.Decline decline = new MUCUser.Decline();
137         decline.setFrom(parser.getAttributeValue("", "from"));
138         decline.setTo(parser.getAttributeValue("", "to"));
139         while (!done) {
140             int eventType = parser.next();
141             if (eventType == XmlPullParser.START_TAG) {
142                 if (parser.getName().equals("reason")) {
143                     decline.setReason(parser.nextText());
144                 }
145             }
146             else if (eventType == XmlPullParser.END_TAG) {
147                 if (parser.getName().equals("decline")) {
148                     done = true;
149                 }
150             }
151         }
152         return decline;
153     }
154
155     private MUCUser.Destroy parseDestroy(XmlPullParser parser) throws Exception JavaDoc {
156         boolean done = false;
157         MUCUser.Destroy destroy = new MUCUser.Destroy();
158         destroy.setJid(parser.getAttributeValue("", "jid"));
159         while (!done) {
160             int eventType = parser.next();
161             if (eventType == XmlPullParser.START_TAG) {
162                 if (parser.getName().equals("reason")) {
163                     destroy.setReason(parser.nextText());
164                 }
165             }
166             else if (eventType == XmlPullParser.END_TAG) {
167                 if (parser.getName().equals("destroy")) {
168                     done = true;
169                 }
170             }
171         }
172         return destroy;
173     }
174 }
175
Popular Tags