/** * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ * * Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). * * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software * Foundation; either version 3.0 of the License, or (at your option) any later * version. * * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. * */ package org.bigbluebutton.freeswitch.voice.freeswitch.response; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * * @author leif */ public class XMLResponseConferenceListParser extends DefaultHandler { private List<ConferenceMember> myConfrenceMembers; private String tempVal; private ConferenceMember tempMember; private ConferenceMemberFlags tempFlags; private String room; private boolean inFlags = false; public XMLResponseConferenceListParser() { myConfrenceMembers = new ArrayList<ConferenceMember>(); } public String getConferenceRoom() { return room; } public void printConferneceMemebers() { Iterator<ConferenceMember> it = myConfrenceMembers.iterator(); while(it.hasNext()) { } } public List<ConferenceMember> getConferenceList() { return myConfrenceMembers; } /* <?xml version="1.0"?> <conferences> <conference name="3001-192.168.1.10" member-count="1" rate="8000" running="true" answered="true" enforce_min="true" dynamic="true"> <members> <member> <id>6</id> <flags> <can_hear>true</can_hear> <can_speak>true</can_speak> <talking>false</talking> <has_video>false</has_video> <has_floor>true</has_floor> <is_moderator>false</is_moderator> <end_conference>false</end_conference> </flags> <uuid>3a16f061-0df6-45d5-b401-d8e977e08a5c</uuid> <caller_id_name>1001</caller_id_name> <caller_id_number>1001</caller_id_number> <join_time>65</join_time> <last_talking>4</last_talking> </member> </members> </conference> </conferences> */ //SAX Event Handlers @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { //reset inFlags = false; tempVal = ""; if(qName.equalsIgnoreCase("member")) { //create a new instance of ConferenceMember tempMember = new ConferenceMember(); } if(qName.equalsIgnoreCase("flags")) { //create a new instance of ConferenceMember tempFlags = new ConferenceMemberFlags(); inFlags = true; } if(qName.equalsIgnoreCase("conference")) { room = attributes.getValue("name"); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { tempVal = new String(ch,start,length); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if(qName.equalsIgnoreCase("member")) { //add it to the list myConfrenceMembers.add(tempMember); }else if(qName.equalsIgnoreCase("flags")) { tempMember.setFlags(tempFlags); inFlags = false; }else if(inFlags) { if (qName.equalsIgnoreCase("can_speak")) { tempFlags.setCanSpeak(tempVal); }else if (qName.equalsIgnoreCase("talking")) { tempFlags.setTalking(tempVal); } }else if (qName.equalsIgnoreCase("id")) { try { tempMember.setId(Integer.parseInt(tempVal)); } catch(NumberFormatException nfe) { } }else if (qName.equalsIgnoreCase("uuid")) { tempMember.setUUID(tempVal); }else if (qName.equalsIgnoreCase("caller_id_name")) { tempMember.setCallerIdName(tempVal); }else if (qName.equalsIgnoreCase("caller_id_number")) { tempMember.setCallerId(tempVal); }else if (qName.equalsIgnoreCase("join_time")) { try { tempMember.setJoinTime(Integer.parseInt(tempVal)); } catch(NumberFormatException nfe) { } }else if (qName.equalsIgnoreCase("last_talking")) { try { tempMember.setLastTalking(Integer.parseInt(tempVal)); } catch(NumberFormatException nfe) { } } } }