1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.bluetooth.pbapclient; 17 18 import com.android.vcard.VCardEntry; 19 20 import java.util.ArrayList; 21 import java.util.HashSet; 22 import java.util.List; 23 24 /** 25 * A simpler more public version of VCardEntry. 26 */ 27 public class PhonebookEntry { 28 public static class Name { 29 public String family; 30 public String given; 31 public String middle; 32 public String prefix; 33 public String suffix; 34 35 public Name() { } 36 37 @Override 38 public boolean equals(Object o) { 39 if (!(o instanceof Name)) { 40 return false; 41 } 42 43 Name n = ((Name) o); 44 return (family == n.family || family != null && family.equals(n.family)) && 45 (given == n.given || given != null && given.equals(n.given)) && 46 (middle == n.middle || middle != null && middle.equals(n.middle)) && 47 (prefix == n.prefix || prefix != null && prefix.equals(n.prefix)) && 48 (suffix == n.suffix || suffix != null && suffix.equals(n.suffix)); 49 } 50 51 @Override 52 public int hashCode() { 53 int result = 23 * (family == null ? 0 : family.hashCode()); 54 result = 23 * result + (given == null ? 0 : given.hashCode()); 55 result = 23 * result + (middle == null ? 0 : middle.hashCode()); 56 result = 23 * result + (prefix == null ? 0 : prefix.hashCode()); 57 result = 23 * result + (suffix == null ? 0 : suffix.hashCode()); 58 return result; 59 } 60 61 @Override 62 public String toString() { 63 StringBuilder sb = new StringBuilder(); 64 sb.append("Name: { family: "); 65 sb.append(family); 66 sb.append(" given: "); 67 sb.append(given); 68 sb.append(" middle: "); 69 sb.append(middle); 70 sb.append(" prefix: "); 71 sb.append(prefix); 72 sb.append(" suffix: "); 73 sb.append(suffix); 74 sb.append(" }"); 75 return sb.toString(); 76 } 77 } 78 79 public static class Phone { 80 public int type; 81 public String number; 82 83 @Override 84 public boolean equals(Object o) { 85 if (!(o instanceof Phone)) { 86 return false; 87 } 88 89 Phone p = (Phone) o; 90 return (number == p.number || number != null && number.equals(p.number)) 91 && type == p.type; 92 } 93 94 @Override 95 public int hashCode() { 96 return 23 * type + number.hashCode(); 97 } 98 99 @Override 100 public String toString() { 101 StringBuilder sb = new StringBuilder(); 102 sb.append(" Phone: { number: "); 103 sb.append(number); 104 sb.append(" type: " + type); 105 sb.append(" }"); 106 return sb.toString(); 107 } 108 } 109 110 @Override 111 public boolean equals(Object object) { 112 if (object instanceof PhonebookEntry) { 113 return equals((PhonebookEntry) object); 114 } 115 return false; 116 } 117 118 public PhonebookEntry() { 119 name = new Name(); 120 phones = new ArrayList<Phone>(); 121 } 122 123 public PhonebookEntry(VCardEntry v) { 124 name = new Name(); 125 phones = new ArrayList<Phone>(); 126 127 VCardEntry.NameData n = v.getNameData(); 128 name.family = n.getFamily(); 129 name.given = n.getGiven(); 130 name.middle = n.getMiddle(); 131 name.prefix = n.getPrefix(); 132 name.suffix = n.getSuffix(); 133 134 List<VCardEntry.PhoneData> vp = v.getPhoneList(); 135 if (vp == null || vp.isEmpty()) { 136 return; 137 } 138 139 for (VCardEntry.PhoneData p : vp) { 140 Phone phone = new Phone(); 141 phone.type = p.getType(); 142 phone.number = p.getNumber(); 143 phones.add(phone); 144 } 145 } 146 147 private boolean equals(PhonebookEntry p) { 148 return name.equals(p.name) && phones.equals(p.phones); 149 } 150 151 @Override 152 public int hashCode() { 153 return name.hashCode() + 23 * phones.hashCode(); 154 } 155 156 @Override 157 public String toString() { 158 StringBuilder sb = new StringBuilder(); 159 sb.append("PhonebookEntry { id: "); 160 sb.append(id); 161 sb.append(" "); 162 sb.append(name.toString()); 163 sb.append(phones.toString()); 164 sb.append(" }"); 165 return sb.toString(); 166 } 167 168 public Name name; 169 public List<Phone> phones; 170 public String id; 171 } 172