1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $RCSfile$ 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision$ 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date$ 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2005 Jive Software. 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License. 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License. 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.packet; 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.packet.IQ; 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.provider.IQProvider; 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.xmlpull.v1.XmlPullParser; 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.ArrayList; 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Iterator; 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.List; 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * IQ packet used for discovering the user's shared groups and for getting the answer back 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * from the server.<p> 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Important note: This functionality is not part of the XMPP spec and it will only work 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * with Wildfire. 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Gaston Dombiak 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class SharedGroupsInfo extends IQ { 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen private List<String> groups = new ArrayList<String>(); 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns a collection with the shared group names returned from the server. 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return collection with the shared group names returned from the server. 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public List<String> getGroups() { 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return groups; 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getChildElementXML() { 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<sharedgroup xmlns=\"http://www.jivesoftware.org/protocol/sharedgroup\">"); 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen for (Iterator<String> it=groups.iterator(); it.hasNext();) { 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<group>").append(it.next()).append("</group>"); 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</sharedgroup>"); 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Internal Search service Provider. 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public static class Provider implements IQProvider { 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Provider Constructor. 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Provider() { 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(); 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public IQ parseIQ(XmlPullParser parser) throws Exception { 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen SharedGroupsInfo groupsInfo = new SharedGroupsInfo(); 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen boolean done = false; 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen while (!done) { 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen int eventType = parser.next(); 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (eventType == XmlPullParser.START_TAG && parser.getName().equals("group")) { 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen groupsInfo.getGroups().add(parser.nextText()); 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen else if (eventType == XmlPullParser.END_TAG) { 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (parser.getName().equals("sharedgroup")) { 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen done = true; 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return groupsInfo; 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 93