/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.bluetooth.pbapclient; import com.android.vcard.VCardEntry; import java.util.ArrayList; import java.util.List; import java.util.Objects; /** * A simpler more public version of VCardEntry. */ public class PhonebookEntry { public static class Name { public String family; public String given; public String middle; public String prefix; public String suffix; public Name() { } @Override public boolean equals(Object o) { if (!(o instanceof Name)) { return false; } Name n = ((Name) o); return (Objects.equals(family, n.family) || family != null && family.equals(n.family)) && (Objects.equals(given, n.given) || given != null && given.equals(n.given)) && (Objects.equals(middle, n.middle) || middle != null && middle.equals( n.middle)) && (Objects.equals(prefix, n.prefix) || prefix != null && prefix.equals(n.prefix)) && ( Objects.equals(suffix, n.suffix) || suffix != null && suffix.equals(n.suffix)); } @Override public int hashCode() { int result = 23 * (family == null ? 0 : family.hashCode()); result = 23 * result + (given == null ? 0 : given.hashCode()); result = 23 * result + (middle == null ? 0 : middle.hashCode()); result = 23 * result + (prefix == null ? 0 : prefix.hashCode()); result = 23 * result + (suffix == null ? 0 : suffix.hashCode()); return result; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Name: { family: "); sb.append(family); sb.append(" given: "); sb.append(given); sb.append(" middle: "); sb.append(middle); sb.append(" prefix: "); sb.append(prefix); sb.append(" suffix: "); sb.append(suffix); sb.append(" }"); return sb.toString(); } } public static class Phone { public int type; public String number; @Override public boolean equals(Object o) { if (!(o instanceof Phone)) { return false; } Phone p = (Phone) o; return (Objects.equals(number, p.number) || number != null && number.equals(p.number)) && type == p.type; } @Override public int hashCode() { return 23 * type + number.hashCode(); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(" Phone: { number: "); sb.append(number); sb.append(" type: " + type); sb.append(" }"); return sb.toString(); } } @Override public boolean equals(Object object) { if (object instanceof PhonebookEntry) { return equals((PhonebookEntry) object); } return false; } public PhonebookEntry() { name = new Name(); phones = new ArrayList(); } public PhonebookEntry(VCardEntry v) { name = new Name(); phones = new ArrayList(); VCardEntry.NameData n = v.getNameData(); name.family = n.getFamily(); name.given = n.getGiven(); name.middle = n.getMiddle(); name.prefix = n.getPrefix(); name.suffix = n.getSuffix(); List vp = v.getPhoneList(); if (vp == null || vp.isEmpty()) { return; } for (VCardEntry.PhoneData p : vp) { Phone phone = new Phone(); phone.type = p.getType(); phone.number = p.getNumber(); phones.add(phone); } } private boolean equals(PhonebookEntry p) { return name.equals(p.name) && phones.equals(p.phones); } @Override public int hashCode() { return name.hashCode() + 23 * phones.hashCode(); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("PhonebookEntry { id: "); sb.append(id); sb.append(" "); sb.append(name.toString()); sb.append(phones.toString()); sb.append(" }"); return sb.toString(); } public Name name; public List phones; public String id; }