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.pbap; 18192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 19192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport com.android.vcard.VCardEntry; 20192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport com.android.vcard.VCardEntry.EmailData; 21192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport com.android.vcard.VCardEntry.NameData; 22192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport com.android.vcard.VCardEntry.PhoneData; 23192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 24192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport org.json.JSONArray; 25192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport org.json.JSONException; 26192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport org.json.JSONObject; 27192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 28192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.util.List; 29192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 30192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta/** 31192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * Entry representation of folder listing 32192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta */ 33192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptapublic class BluetoothPbapCard { 34192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 35192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public final String handle; 36192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 37192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public final String N; 38192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public final String lastName; 39192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public final String firstName; 40192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public final String middleName; 41192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public final String prefix; 42192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public final String suffix; 43192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 44192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public BluetoothPbapCard(String handle, String name) { 45192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta this.handle = handle; 46192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 47192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta N = name; 48192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 49192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta /* 50192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * format is as for vCard N field, so we have up to 5 tokens: LastName; 51192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * FirstName; MiddleName; Prefix; Suffix 52192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta */ 53192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta String[] parsedName = name.split(";", 5); 54192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 55192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta lastName = parsedName.length < 1 ? null : parsedName[0]; 56192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta firstName = parsedName.length < 2 ? null : parsedName[1]; 57192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta middleName = parsedName.length < 3 ? null : parsedName[2]; 58192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta prefix = parsedName.length < 4 ? null : parsedName[3]; 59192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta suffix = parsedName.length < 5 ? null : parsedName[4]; 60192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 61192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 62192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta @Override 63192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public String toString() { 64192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta JSONObject json = new JSONObject(); 65192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 66192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta try { 67192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("handle", handle); 68192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("N", N); 69192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("lastName", lastName); 70192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("firstName", firstName); 71192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("middleName", middleName); 72192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("prefix", prefix); 73192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("suffix", suffix); 74192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } catch (JSONException e) { 75192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta // do nothing 76192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 77192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 78192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta return json.toString(); 79192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 80192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 81192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta static public String jsonifyVcardEntry(VCardEntry vcard) { 82192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta JSONObject json = new JSONObject(); 83192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 84192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta try { 85192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta NameData name = vcard.getNameData(); 86192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("formatted", name.getFormatted()); 87192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("family", name.getFamily()); 88192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("given", name.getGiven()); 89192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("middle", name.getMiddle()); 90192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("prefix", name.getPrefix()); 91192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("suffix", name.getSuffix()); 92192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } catch (JSONException e) { 93192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta // do nothing 94192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 95192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 96192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta try { 97192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta JSONArray jsonPhones = new JSONArray(); 98192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 99192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta List<PhoneData> phones = vcard.getPhoneList(); 100192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 101192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta if (phones != null) { 102192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta for (PhoneData phone : phones) { 103192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta JSONObject jsonPhone = new JSONObject(); 104192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonPhone.put("type", phone.getType()); 105192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonPhone.put("number", phone.getNumber()); 106192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonPhone.put("label", phone.getLabel()); 107192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonPhone.put("is_primary", phone.isPrimary()); 108192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 109192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonPhones.put(jsonPhone); 110192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 111192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 112192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("phones", jsonPhones); 113192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 114192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } catch (JSONException e) { 115192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta // do nothing 116192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 117192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 118192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta try { 119192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta JSONArray jsonEmails = new JSONArray(); 120192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 121192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta List<EmailData> emails = vcard.getEmailList(); 122192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 123192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta if (emails != null) { 124192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta for (EmailData email : emails) { 125192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta JSONObject jsonEmail = new JSONObject(); 126192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonEmail.put("type", email.getType()); 127192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonEmail.put("address", email.getAddress()); 128192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonEmail.put("label", email.getLabel()); 129192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonEmail.put("is_primary", email.isPrimary()); 130192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 131192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta jsonEmails.put(jsonEmail); 132192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 133192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 134192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta json.put("emails", jsonEmails); 135192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 136192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } catch (JSONException e) { 137192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta // do nothing 138192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 139192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 140192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta return json.toString(); 141192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 142192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta} 143