001/**
002 *
003 * Copyright 2003-2007 Jive Software.
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package org.jivesoftware.smackx.workgroup.packet;
019
020import org.jivesoftware.smack.packet.IQ;
021import org.jivesoftware.smack.provider.IQProvider;
022import org.jivesoftware.smack.util.PacketParserUtils;
023import org.xmlpull.v1.XmlPullParser;
024
025/**
026 * IQ packet for retrieving the transcript search form, submiting the completed search form
027 * or retrieving the answer of a transcript search.
028 *
029 * @author Gaston Dombiak
030 */
031public class TranscriptSearch extends IQ {
032
033    /**
034    * Element name of the packet extension.
035    */
036   public static final String ELEMENT_NAME = "transcript-search";
037
038   /**
039    * Namespace of the packet extension.
040    */
041   public static final String NAMESPACE = "http://jivesoftware.com/protocol/workgroup";
042
043    public String getChildElementXML() {
044        StringBuilder buf = new StringBuilder();
045
046        buf.append("<").append(ELEMENT_NAME).append(" xmlns=\"").append(NAMESPACE).append("\">");
047        // Add packet extensions, if any are defined.
048        buf.append(getExtensionsXML());
049        buf.append("</").append(ELEMENT_NAME).append("> ");
050
051        return buf.toString();
052    }
053
054    /**
055     * An IQProvider for TranscriptSearch packets.
056     *
057     * @author Gaston Dombiak
058     */
059    public static class Provider implements IQProvider {
060
061        public Provider() {
062            super();
063        }
064
065        public IQ parseIQ(XmlPullParser parser) throws Exception {
066            TranscriptSearch answer = new TranscriptSearch();
067
068            boolean done = false;
069            while (!done) {
070                int eventType = parser.next();
071                if (eventType == XmlPullParser.START_TAG) {
072                    // Parse the packet extension
073                    answer.addExtension(PacketParserUtils.parsePacketExtension(parser.getName(), parser.getNamespace(), parser));
074                }
075                else if (eventType == XmlPullParser.END_TAG) {
076                    if (parser.getName().equals(ELEMENT_NAME)) {
077                        done = true;
078                    }
079                }
080            }
081
082            return answer;
083        }
084    }
085}