Home | History | Annotate | Download | only in settings
      1 /**
      2  * $Revision$
      3  * $Date$
      4  *
      5  * Copyright 2003-2007 Jive Software.
      6  *
      7  * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
      8  * you may not use this file except in compliance with the License.
      9  * You may obtain a copy of the License at
     10  *
     11  *     http://www.apache.org/licenses/LICENSE-2.0
     12  *
     13  * Unless required by applicable law or agreed to in writing, software
     14  * distributed under the License is distributed on an "AS IS" BASIS,
     15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16  * See the License for the specific language governing permissions and
     17  * limitations under the License.
     18  */
     19 
     20 package org.jivesoftware.smackx.workgroup.settings;
     21 
     22 import org.jivesoftware.smack.packet.IQ;
     23 import org.jivesoftware.smack.provider.IQProvider;
     24 import org.jivesoftware.smack.util.StringUtils;
     25 import org.xmlpull.v1.XmlPullParser;
     26 
     27 public class SoundSettings extends IQ {
     28     private String outgoingSound;
     29     private String incomingSound;
     30 
     31 
     32     public void setOutgoingSound(String outgoingSound) {
     33         this.outgoingSound = outgoingSound;
     34     }
     35 
     36     public void setIncomingSound(String incomingSound) {
     37         this.incomingSound = incomingSound;
     38     }
     39 
     40     public byte[] getIncomingSoundBytes() {
     41         return StringUtils.decodeBase64(incomingSound);
     42     }
     43 
     44     public byte[] getOutgoingSoundBytes() {
     45         return StringUtils.decodeBase64(outgoingSound);
     46     }
     47 
     48 
     49     /**
     50      * Element name of the packet extension.
     51      */
     52     public static final String ELEMENT_NAME = "sound-settings";
     53 
     54     /**
     55      * Namespace of the packet extension.
     56      */
     57     public static final String NAMESPACE = "http://jivesoftware.com/protocol/workgroup";
     58 
     59     public String getChildElementXML() {
     60         StringBuilder buf = new StringBuilder();
     61 
     62         buf.append("<").append(ELEMENT_NAME).append(" xmlns=");
     63         buf.append('"');
     64         buf.append(NAMESPACE);
     65         buf.append('"');
     66         buf.append("></").append(ELEMENT_NAME).append("> ");
     67         return buf.toString();
     68     }
     69 
     70 
     71     /**
     72      * Packet extension provider for SoundSetting Packets.
     73      */
     74     public static class InternalProvider implements IQProvider {
     75 
     76         public IQ parseIQ(XmlPullParser parser) throws Exception {
     77             if (parser.getEventType() != XmlPullParser.START_TAG) {
     78                 throw new IllegalStateException("Parser not in proper position, or bad XML.");
     79             }
     80 
     81             SoundSettings soundSettings = new SoundSettings();
     82 
     83             boolean done = false;
     84 
     85 
     86             while (!done) {
     87                 int eventType = parser.next();
     88                 if ((eventType == XmlPullParser.START_TAG) && ("outgoingSound".equals(parser.getName()))) {
     89                     soundSettings.setOutgoingSound(parser.nextText());
     90                 }
     91                 else if ((eventType == XmlPullParser.START_TAG) && ("incomingSound".equals(parser.getName()))) {
     92                     soundSettings.setIncomingSound(parser.nextText());
     93                 }
     94                 else if (eventType == XmlPullParser.END_TAG && "sound-settings".equals(parser.getName())) {
     95                     done = true;
     96                 }
     97             }
     98 
     99             return soundSettings;
    100         }
    101     }
    102 }
    103 
    104