1192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta/* 2192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * Copyright (C) 2014 The Android Open Source Project 3192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * 4192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 5192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * you may not use this file except in compliance with the License. 6192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * You may obtain a copy of the License at 7192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * 8192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * http://www.apache.org/licenses/LICENSE-2.0 9192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * 10192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * Unless required by applicable law or agreed to in writing, software 11192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * distributed under the License is distributed on an "AS IS" BASIS, 12192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * See the License for the specific language governing permissions and 14192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * limitations under the License. 15192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta */ 16192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 17192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptapackage android.bluetooth.client.map; 18192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 19192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport android.util.Log; 20192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 21192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport org.xmlpull.v1.XmlPullParser; 22192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport org.xmlpull.v1.XmlPullParserException; 23192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport org.xmlpull.v1.XmlPullParserFactory; 24192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 25192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.io.IOException; 26192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.io.InputStream; 27192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.util.ArrayList; 28192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.util.HashMap; 29192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 30192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaclass BluetoothMapMessagesListing { 31192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 32192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta private static final String TAG = "BluetoothMapMessagesListing"; 33192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 34192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta private final ArrayList<BluetoothMapMessage> mMessages; 35192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 36192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public BluetoothMapMessagesListing(InputStream in) { 37192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mMessages = new ArrayList<BluetoothMapMessage>(); 38192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 39192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta parse(in); 40192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 41192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 42192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public void parse(InputStream in) { 43192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 44192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta try { 45192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta XmlPullParser xpp = XmlPullParserFactory.newInstance().newPullParser(); 46192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta xpp.setInput(in, "utf-8"); 47192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 48192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta int event = xpp.getEventType(); 49192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta while (event != XmlPullParser.END_DOCUMENT) { 50192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta switch (event) { 51192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta case XmlPullParser.START_TAG: 52192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta if (xpp.getName().equals("msg")) { 53192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 54192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta HashMap<String, String> attrs = new HashMap<String, String>(); 55192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 56192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta for (int i = 0; i < xpp.getAttributeCount(); i++) { 57192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta attrs.put(xpp.getAttributeName(i), xpp.getAttributeValue(i)); 58192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 59192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 60192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta try { 61192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta BluetoothMapMessage msg = new BluetoothMapMessage(attrs); 62192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mMessages.add(msg); 63192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } catch (IllegalArgumentException e) { 64192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta /* TODO: provide something more useful here */ 65192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta Log.w(TAG, "Invalid <msg/>"); 66192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 67192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 68192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta break; 69192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 70192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 71192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta event = xpp.next(); 72192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 73192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 74192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } catch (XmlPullParserException e) { 75192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta Log.e(TAG, "XML parser error when parsing XML", e); 76192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } catch (IOException e) { 77192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta Log.e(TAG, "I/O error when parsing XML", e); 78192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 79192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 80192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 81192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public ArrayList<BluetoothMapMessage> getList() { 82192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta return mMessages; 83192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 84192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta} 85