summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2014-10-02 12:55:23 +0200
committerDanny Baumann <dannybaumann@web.de>2014-10-02 13:51:19 +0200
commite64d747e3ae87cc6ddf83b96882e7bcad6ebcd31 (patch)
tree89cf361a07a7156808d185dfc603e021e6f62b37
parent2491d19f178f2b78a00cce00bce5dc8ec0d60231 (diff)
downloadandroid_packages_apps_Dialer-e64d747e3ae87cc6ddf83b96882e7bcad6ebcd31.tar.gz
android_packages_apps_Dialer-e64d747e3ae87cc6ddf83b96882e7bcad6ebcd31.tar.bz2
android_packages_apps_Dialer-e64d747e3ae87cc6ddf83b96882e7bcad6ebcd31.zip
Code cleanup.
Avoid repetetive boilerplate code by using helper methods. Change-Id: Id3ce8d07d35d59c08cbc67fa35bbf6daa67c9608
-rw-r--r--src/com/android/dialer/lookup/ContactBuilder.java27
-rw-r--r--src/com/android/dialer/lookup/LookupUtils.java84
-rw-r--r--src/com/android/dialer/lookup/ReverseLookup.java10
-rw-r--r--src/com/android/dialer/lookup/ReverseLookupThread.java29
-rw-r--r--src/com/android/dialer/lookup/cyngn/CyngnChineseReverseLookup.java39
-rw-r--r--src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java108
-rw-r--r--src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchReverseLookup.java39
-rw-r--r--src/com/android/dialer/lookup/google/GoogleForwardLookup.java17
-rw-r--r--src/com/android/dialer/lookup/opencnam/OpenCnamReverseLookup.java60
-rw-r--r--src/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java34
-rw-r--r--src/com/android/dialer/lookup/paginebianche/PagineBiancheApi.java91
-rw-r--r--src/com/android/dialer/lookup/paginebianche/PagineBiancheReverseLookup.java35
-rw-r--r--src/com/android/dialer/lookup/whitepages/WhitePagesApi.java180
-rw-r--r--src/com/android/dialer/lookup/whitepages/WhitePagesPeopleLookup.java31
-rw-r--r--src/com/android/dialer/lookup/whitepages/WhitePagesReverseLookup.java43
-rw-r--r--src/com/android/dialer/lookup/yellowpages/YellowPagesApi.java197
-rw-r--r--src/com/android/dialer/lookup/yellowpages/YellowPagesReverseLookup.java39
-rw-r--r--src/com/android/dialer/lookup/zabasearch/ZabaSearchApi.java99
-rw-r--r--src/com/android/dialer/lookup/zabasearch/ZabaSearchReverseLookup.java42
19 files changed, 345 insertions, 859 deletions
diff --git a/src/com/android/dialer/lookup/ContactBuilder.java b/src/com/android/dialer/lookup/ContactBuilder.java
index b6c85a2d0..069045db2 100644
--- a/src/com/android/dialer/lookup/ContactBuilder.java
+++ b/src/com/android/dialer/lookup/ContactBuilder.java
@@ -259,6 +259,13 @@ public class ContactBuilder {
public String postCode;
public String country;
+ public static Address createFormattedHome(String address) {
+ Address a = new Address();
+ a.formattedAddress = address;
+ a.type = StructuredPostal.TYPE_HOME;
+ return a;
+ }
+
public JSONObject getJsonObject() throws JSONException {
JSONObject json = new JSONObject();
json.putOpt(StructuredPostal.FORMATTED_ADDRESS,
@@ -301,6 +308,12 @@ public class ContactBuilder {
public String phoneticMiddleName;
public String phoneticFamilyName;
+ public static Name createDisplayName(String displayName) {
+ Name name = new Name();
+ name.displayName = displayName;
+ return name;
+ }
+
public JSONObject getJsonObject() throws JSONException {
JSONObject json = new JSONObject();
json.putOpt(StructuredName.DISPLAY_NAME, displayName);
@@ -337,6 +350,13 @@ public class ContactBuilder {
public int type;
public String label;
+ public static PhoneNumber createMainNumber(String number) {
+ PhoneNumber n = new PhoneNumber();
+ n.number = number;
+ n.type = Phone.TYPE_MAIN;
+ return n;
+ }
+
public JSONObject getJsonObject() throws JSONException {
JSONObject json = new JSONObject();
json.put(Phone.NUMBER, number);
@@ -358,6 +378,13 @@ public class ContactBuilder {
public int type;
public String label;
+ public static WebsiteUrl createProfile(String url) {
+ WebsiteUrl u = new WebsiteUrl();
+ u.url = url;
+ u.type = Website.TYPE_PROFILE;
+ return u;
+ }
+
public JSONObject getJsonObject() throws JSONException {
JSONObject json = new JSONObject();
json.put(Website.URL, url);
diff --git a/src/com/android/dialer/lookup/LookupUtils.java b/src/com/android/dialer/lookup/LookupUtils.java
new file mode 100644
index 000000000..c0b84dc38
--- /dev/null
+++ b/src/com/android/dialer/lookup/LookupUtils.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod 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.dialer.lookup;
+
+import android.text.Html;
+
+import org.apache.http.Header;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class LookupUtils {
+ private static final String USER_AGENT =
+ "Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0";
+
+ public static String httpGet(HttpGet request) throws IOException {
+ HttpClient client = new DefaultHttpClient();
+
+ request.setHeader("User-Agent", USER_AGENT);
+
+ HttpResponse response = client.execute(request);
+ int status = response.getStatusLine().getStatusCode();
+
+ // Android's org.apache.http doesn't have the RedirectStrategy class
+ if (status == HttpStatus.SC_MOVED_PERMANENTLY
+ || status == HttpStatus.SC_MOVED_TEMPORARILY) {
+ Header[] headers = response.getHeaders("Location");
+
+ if (headers != null && headers.length != 0) {
+ HttpGet newGet = new HttpGet(headers[headers.length - 1].getValue());
+ for (Header header : request.getAllHeaders()) {
+ newGet.addHeader(header);
+ }
+ return httpGet(newGet);
+ } else {
+ throw new IOException("Empty redirection header");
+ }
+ }
+
+ if (status != HttpStatus.SC_OK) {
+ throw new IOException("HTTP failure (status " + status + ")");
+ }
+
+ return EntityUtils.toString(response.getEntity());
+ }
+
+ public static String firstRegexResult(String input, String regex, boolean dotall) {
+ if (input == null) {
+ return null;
+ }
+ Pattern pattern = Pattern.compile(regex, dotall ? Pattern.DOTALL : 0);
+ Matcher m = pattern.matcher(input);
+ return m.find() ? m.group(1).trim() : null;
+ }
+
+ public static String fromHtml(String input) {
+ if (input == null) {
+ return null;
+ }
+ return Html.fromHtml(input).toString().trim();
+ }
+}
+
diff --git a/src/com/android/dialer/lookup/ReverseLookup.java b/src/com/android/dialer/lookup/ReverseLookup.java
index e0fe1e98c..041b6ffba 100644
--- a/src/com/android/dialer/lookup/ReverseLookup.java
+++ b/src/com/android/dialer/lookup/ReverseLookup.java
@@ -29,7 +29,8 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.util.Log;
-import android.util.Pair;
+
+import java.io.IOException;
public abstract class ReverseLookup {
private static final String TAG = ReverseLookup.class.getSimpleName();
@@ -98,9 +99,8 @@ public abstract class ReverseLookup {
*
* @param context The application context
* @param uri The image URI
- * @param data Extra data (a authentication token, perhaps)
*/
- public Bitmap lookupImage(Context context, Uri uri, Object data) {
+ public Bitmap lookupImage(Context context, Uri uri) {
return null;
}
@@ -112,6 +112,6 @@ public abstract class ReverseLookup {
* @param formattedNumber The formatted phone number
* @return The phone number info object
*/
- public abstract Pair<ContactInfo, Object> lookupNumber(Context context,
- String normalizedNumber, String formattedNumber);
+ public abstract ContactInfo lookupNumber(Context context,
+ String normalizedNumber, String formattedNumber) throws IOException;
}
diff --git a/src/com/android/dialer/lookup/ReverseLookupThread.java b/src/com/android/dialer/lookup/ReverseLookupThread.java
index 95173764b..31c344265 100644
--- a/src/com/android/dialer/lookup/ReverseLookupThread.java
+++ b/src/com/android/dialer/lookup/ReverseLookupThread.java
@@ -27,8 +27,8 @@ import android.os.Looper;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
import android.util.Log;
-import android.util.Pair;
+import java.io.IOException;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
@@ -91,26 +91,23 @@ public class ReverseLookupThread extends Thread {
}
// Lookup contact if it's not cached
- Object data = null;
if (info == null) {
- Pair<ContactInfo, Object> results =
- ReverseLookup.getInstance(mContext).lookupNumber(
- mContext, mNormalizedNumber, mFormattedNumber);
+ try {
+ info = ReverseLookup.getInstance(mContext).lookupNumber(mContext,
+ mNormalizedNumber, mFormattedNumber);
+ } catch (IOException e) {
+ // ignored, we'll return below
+ }
- if (results == null) {
+ if (info == null) {
return;
}
- info = results.first;
- data = results.second;
-
// Put in cache only if the contact is valid
- if (info != null) {
- if (info.equals(ContactInfo.EMPTY)) {
- return;
- } else if (info.name != null) {
- LookupCache.cacheContact(mContext, info);
- }
+ if (info.equals(ContactInfo.EMPTY)) {
+ return;
+ } else if (info.name != null) {
+ LookupCache.cacheContact(mContext, info);
}
}
@@ -126,7 +123,7 @@ public class ReverseLookupThread extends Thread {
if (info.photoUri != null) {
if (!LookupCache.hasCachedImage(mContext, mNormalizedNumber)) {
Bitmap bmp = ReverseLookup.getInstance(mContext).lookupImage(
- mContext, info.photoUri, data);
+ mContext, info.photoUri);
if (bmp != null) {
LookupCache.cacheImage(mContext, mNormalizedNumber, bmp);
diff --git a/src/com/android/dialer/lookup/cyngn/CyngnChineseReverseLookup.java b/src/com/android/dialer/lookup/cyngn/CyngnChineseReverseLookup.java
index 4b4aa6d33..355208a18 100644
--- a/src/com/android/dialer/lookup/cyngn/CyngnChineseReverseLookup.java
+++ b/src/com/android/dialer/lookup/cyngn/CyngnChineseReverseLookup.java
@@ -22,7 +22,6 @@ import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.util.Log;
-import android.util.Pair;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.lookup.ContactBuilder;
import com.android.dialer.lookup.ReverseLookup;
@@ -36,6 +35,8 @@ public class CyngnChineseReverseLookup extends ReverseLookup {
private static final int COMMON_CHINESE_PHONE_NUMBER_AREANO_END = 5;
private static final boolean DEBUG = false;
+ private static final Uri PROVIDER_URI =
+ Uri.parse("content://com.cyngn.chineselocationlookup.provider");
public CyngnChineseReverseLookup(Context context) {
}
@@ -48,12 +49,9 @@ public class CyngnChineseReverseLookup extends ReverseLookup {
* @param formattedNumber The formatted phone number
* @return The phone number info object
*/
- public Pair<ContactInfo, Object> lookupNumber(Context context,
- String normalizedNumber, String formattedNumber) {
- String displayName;
-
- displayName = queryProvider(context, normalizedNumber);
-
+ public ContactInfo lookupNumber(Context context,
+ String normalizedNumber, String formattedNumber) {
+ String displayName = queryProvider(context, normalizedNumber);
if (displayName == null) {
return null;
}
@@ -66,19 +64,11 @@ public class CyngnChineseReverseLookup extends ReverseLookup {
ContactBuilder builder = new ContactBuilder(
ContactBuilder.REVERSE_LOOKUP,
normalizedNumber, formattedNumber);
-
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = displayName;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = number;
- pn.type = ContactsContract.CommonDataKinds.Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
-
+ builder.setName(ContactBuilder.Name.createDisplayName(displayName));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(number));
builder.setPhotoUri(ContactBuilder.PHOTO_URI_BUSINESS);
- return Pair.create(builder.build(), null);
+ return builder.build();
}
private String queryProvider(Context context, String normalizedNumber) {
@@ -91,20 +81,19 @@ public class CyngnChineseReverseLookup extends ReverseLookup {
COMMON_CHINESE_PHONE_NUMBER_AREANO_END);
ContentResolver resolver = context.getContentResolver();
- Cursor cursor = resolver.query(Uri.parse("content://com.cyngn.chineselocationlookup.provider"),
+ Cursor cursor = context.getContentResolver().query(PROVIDER_URI,
null, null, new String[] { areaPrefix }, null);
-
- String city = null;
+ if (cursor == null) {
+ return null;
+ }
try {
if (cursor.moveToFirst()) {
- city = cursor.getString(2);
+ return cursor.getString(2);
}
- } catch (NullPointerException e) {
- return null;
} finally {
cursor.close();
- return city;
}
+ return null;
}
}
diff --git a/src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java b/src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java
index 70c2962a7..2d9ed3e5f 100644
--- a/src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java
+++ b/src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java
@@ -18,21 +18,12 @@ package com.android.dialer.lookup.dastelefonbuch;
import android.content.Context;
import android.net.Uri;
-import android.text.Html;
-import com.android.dialer.lookup.LookupSettings;
+import com.android.dialer.lookup.LookupUtils;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.util.EntityUtils;
import java.io.IOException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
public class TelefonbuchApi {
private static final String TAG = TelefonbuchApi.class.getSimpleName();
@@ -41,8 +32,9 @@ public class TelefonbuchApi {
"http://www.dastelefonbuch.de/?s=a20000" +
"&cmd=search&sort_ok=0&sp=55&vert_ok=0&aktion=23";
- private static final String USER_AGENT =
- "Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0";
+ private static String NAME_REGEX ="<a id=\"name0.*?>\\s*\n?(.*?)\n?\\s*</a>";
+ private static String NUMBER_REGEX = "<span\\s+class=\"ico fon.*>.*<span>(.*?)</span><br/>";
+ private static String ADDRESS_REGEX = "<address.*?>\n?(.*?)</address>";
private TelefonbuchApi() {
}
@@ -53,28 +45,19 @@ public class TelefonbuchApi {
.buildUpon()
.appendQueryParameter("kw", number)
.build();
- String output = httpGet(uri.toString());
- if (output == null) {
- return null;
- }
-
// Cut out everything we're not interested in (scripts etc.) to
// speed up the subsequent matching.
- Pattern regex = Pattern.compile(": Treffer(.*)Ende Treffer", Pattern.DOTALL);
- Matcher matcher = regex.matcher(output);
- if (!matcher.find()) {
- return null;
- }
-
- output = matcher.group(1);
+ String output = LookupUtils.firstRegexResult(
+ LookupUtils.httpGet(new HttpGet(uri.toString())),
+ ": Treffer(.*)Ende Treffer", true);
- String name = parseName(output);
+ String name = parseValue(output, NAME_REGEX, true, false);
if (name == null) {
return null;
}
- String phoneNumber = parseNumber(output);
- String address = parseAddress(output);
+ String phoneNumber = parseValue(output, NUMBER_REGEX, false, true);
+ String address = parseValue(output, ADDRESS_REGEX, true, true);
ContactInfo info = new ContactInfo();
info.name = name;
@@ -85,72 +68,13 @@ public class TelefonbuchApi {
return info;
}
- private static String httpGet(String url) throws IOException {
- HttpClient client = new DefaultHttpClient();
- HttpGet get = new HttpGet(url);
-
- get.setHeader("User-Agent", USER_AGENT);
-
- HttpResponse response = client.execute(get);
- int status = response.getStatusLine().getStatusCode();
-
- // Android's org.apache.http doesn't have the RedirectStrategy class
- if (status == HttpStatus.SC_MOVED_PERMANENTLY
- || status == HttpStatus.SC_MOVED_TEMPORARILY) {
- Header[] headers = response.getHeaders("Location");
-
- if (headers != null && headers.length != 0) {
- String newUrl = headers[headers.length - 1].getValue();
- return httpGet(newUrl);
- } else {
- return null;
- }
- }
-
- if (status != HttpStatus.SC_OK) {
- return null;
- }
-
- return EntityUtils.toString(response.getEntity());
- }
-
- private static String parseName(String output) {
- Pattern regex = Pattern.compile("<a id=\"name0.*?>\\s*\n?(.*?)\n?\\s*</a>",
- Pattern.DOTALL);
- Matcher m = regex.matcher(output);
-
- if (m.find()) {
- return fromHtml(m.group(1));
- }
-
- return null;
- }
-
- private static String parseNumber(String output) {
- Pattern regex = Pattern.compile("<span\\s+class=\"ico fon.*>.*<span>(.*?)</span><br/>", 0);
- Matcher m = regex.matcher(output);
- if (m.find()) {
- return fromHtml(m.group(1).replaceAll("</?span.*?>", ""));
- }
-
- return null;
- }
-
- private static String parseAddress(String output) {
- Pattern regex = Pattern.compile("<address.*?>\n?(.*?)</address>", Pattern.DOTALL);
- Matcher m = regex.matcher(output);
- if (m.find()) {
- return fromHtml(m.group(1).replaceAll("</?span.*?>", ""));
- }
-
- return null;
- }
-
- private static String fromHtml(String input) {
- if (input == null) {
- return null;
+ private static String parseValue(String output, String regex,
+ boolean dotall, boolean removeSpans) {
+ String result = LookupUtils.firstRegexResult(output, regex, dotall);
+ if (result != null && removeSpans) {
+ result = result.replaceAll("</?span.*?>", "");
}
- return Html.fromHtml(input).toString().trim();
+ return LookupUtils.fromHtml(result);
}
public static class ContactInfo {
diff --git a/src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchReverseLookup.java b/src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchReverseLookup.java
index 18c24e163..a96a77260 100644
--- a/src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchReverseLookup.java
+++ b/src/com/android/dialer/lookup/dastelefonbuch/TelefonbuchReverseLookup.java
@@ -21,7 +21,6 @@ import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
-import android.util.Pair;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.lookup.ContactBuilder;
@@ -43,21 +42,14 @@ public class TelefonbuchReverseLookup extends ReverseLookup {
* @param formattedNumber The formatted phone number
* @return The phone number info object
*/
- public Pair<ContactInfo, Object> lookupNumber(Context context,
- String normalizedNumber, String formattedNumber) {
- TelefonbuchApi.ContactInfo info = null;
-
+ public ContactInfo lookupNumber(Context context,
+ String normalizedNumber, String formattedNumber) throws IOException {
if (normalizedNumber.startsWith("+") && !normalizedNumber.startsWith("+49")) {
// Das Telefonbuch only supports German numbers
return null;
}
- try {
- info = TelefonbuchApi.reverseLookup(context, normalizedNumber);
- } catch (IOException e) {
- return null;
- }
-
+ TelefonbuchApi.ContactInfo info = TelefonbuchApi.reverseLookup(context, normalizedNumber);
if (info == null) {
return null;
}
@@ -65,28 +57,13 @@ public class TelefonbuchReverseLookup extends ReverseLookup {
ContactBuilder builder = new ContactBuilder(
ContactBuilder.REVERSE_LOOKUP,
normalizedNumber, formattedNumber);
-
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = info.name;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = info.formattedNumber;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
-
+ builder.setName(ContactBuilder.Name.createDisplayName(info.name));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber));
+ builder.addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.website));
if (info.address != null) {
- ContactBuilder.Address a = new ContactBuilder.Address();
- a.formattedAddress = info.address;
- a.type = StructuredPostal.TYPE_HOME;
- builder.addAddress(a);
+ builder.addAddress(ContactBuilder.Address.createFormattedHome(info.address));
}
- ContactBuilder.WebsiteUrl w = new ContactBuilder.WebsiteUrl();
- w.url = info.website;
- w.type = Website.TYPE_PROFILE;
- builder.addWebsite(w);
-
- return Pair.create(builder.build(), null);
+ return builder.build();
}
}
diff --git a/src/com/android/dialer/lookup/google/GoogleForwardLookup.java b/src/com/android/dialer/lookup/google/GoogleForwardLookup.java
index 89214925a..215cbfd3b 100644
--- a/src/com/android/dialer/lookup/google/GoogleForwardLookup.java
+++ b/src/com/android/dialer/lookup/google/GoogleForwardLookup.java
@@ -179,15 +179,9 @@ public class GoogleForwardLookup extends ForwardLookup {
ContactBuilder builder = new ContactBuilder(
ContactBuilder.FORWARD_LOOKUP, null, phoneNumber);
-
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = displayName;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = phoneNumber;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
+ builder.setName(ContactBuilder.Name.createDisplayName(displayName));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(phoneNumber));
+ builder.addWebsite(ContactBuilder.WebsiteUrl.createProfile(profileUrl));
ContactBuilder.Address a = new ContactBuilder.Address();
a.formattedAddress = address;
@@ -195,11 +189,6 @@ public class GoogleForwardLookup extends ForwardLookup {
a.type = StructuredPostal.TYPE_WORK;
builder.addAddress(a);
- ContactBuilder.WebsiteUrl w = new ContactBuilder.WebsiteUrl();
- w.url = profileUrl;
- w.type = Website.TYPE_PROFILE;
- builder.addWebsite(w);
-
if (photoUri != null) {
builder.setPhotoUri(photoUri);
} else {
diff --git a/src/com/android/dialer/lookup/opencnam/OpenCnamReverseLookup.java b/src/com/android/dialer/lookup/opencnam/OpenCnamReverseLookup.java
index f7c907905..9dafab785 100644
--- a/src/com/android/dialer/lookup/opencnam/OpenCnamReverseLookup.java
+++ b/src/com/android/dialer/lookup/opencnam/OpenCnamReverseLookup.java
@@ -16,26 +16,19 @@
package com.android.dialer.lookup.opencnam;
-import com.android.dialer.calllog.ContactInfo;
-import com.android.dialer.lookup.ContactBuilder;
-import com.android.dialer.lookup.ReverseLookup;
-
import android.content.Context;
import android.net.Uri;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
-import android.util.Pair;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.lookup.ContactBuilder;
+import com.android.dialer.lookup.LookupUtils;
+import com.android.dialer.lookup.ReverseLookup;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class OpenCnamReverseLookup extends ReverseLookup {
@@ -62,20 +55,15 @@ public class OpenCnamReverseLookup extends ReverseLookup {
* @param formattedNumber The formatted phone number
* @return The phone number info object
*/
- public Pair<ContactInfo, Object> lookupNumber(Context context,
- String normalizedNumber, String formattedNumber) {
- String displayName;
-
+ public ContactInfo lookupNumber(Context context,
+ String normalizedNumber, String formattedNumber) throws IOException {
if (normalizedNumber.startsWith("+") &&!normalizedNumber.startsWith("+1")) {
// Any non-US number will return "We currently accept only US numbers"
return null;
}
- try {
- displayName = httpGetRequest(context, normalizedNumber);
- if (DEBUG) Log.d(TAG, "Reverse lookup returned name: " + displayName);
- } catch (IOException e) {
- return null;
- }
+
+ String displayName = httpGetRequest(context, normalizedNumber);
+ if (DEBUG) Log.d(TAG, "Reverse lookup returned name: " + displayName);
// Check displayName. The free tier of the service will return the
// following for some numbers:
@@ -91,19 +79,11 @@ public class OpenCnamReverseLookup extends ReverseLookup {
ContactBuilder builder = new ContactBuilder(
ContactBuilder.REVERSE_LOOKUP,
normalizedNumber, formattedNumber);
-
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = displayName;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = number;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
-
+ builder.setName(ContactBuilder.Name.createDisplayName(displayName));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(number));
builder.setPhotoUri(ContactBuilder.PHOTO_URI_BUSINESS);
- return Pair.create(builder.build(), null);
+ return builder.build();
}
private String httpGetRequest(Context context, String number) throws IOException {
@@ -124,20 +104,6 @@ public class OpenCnamReverseLookup extends ReverseLookup {
builder.appendQueryParameter(AUTH_TOKEN, authToken);
}
- String url = builder.build().toString();
-
- HttpClient client = new DefaultHttpClient();
- HttpGet request = new HttpGet(url);
-
- HttpResponse response = client.execute(request);
-
- if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
- throw new IOException();
- }
-
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- response.getEntity().writeTo(out);
-
- return new String(out.toByteArray());
+ return LookupUtils.httpGet(new HttpGet(builder.build().toString()));
}
}
diff --git a/src/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java b/src/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java
index 0f6d8dfcd..5bd5e723f 100644
--- a/src/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java
+++ b/src/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java
@@ -19,32 +19,31 @@
package com.android.dialer.lookup.openstreetmap;
-import com.android.dialer.calllog.ContactInfo;
-import com.android.dialer.lookup.ContactBuilder;
-import com.android.dialer.lookup.ForwardLookup;
-
import android.content.Context;
import android.location.Location;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.util.Log;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Locale;
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.lookup.ContactBuilder;
+import com.android.dialer.lookup.ForwardLookup;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Locale;
+
public class OpenStreetMapForwardLookup extends ForwardLookup {
private static final String TAG =
OpenStreetMapForwardLookup.class.getSimpleName();
@@ -149,14 +148,8 @@ public class OpenStreetMapForwardLookup extends ForwardLookup {
ContactBuilder builder = new ContactBuilder(
ContactBuilder.FORWARD_LOOKUP, null, phoneNumber);
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = displayName;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = phoneNumber;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
+ builder.setName(ContactBuilder.Name.createDisplayName(displayName));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(phoneNumber));
ContactBuilder.Address a = new ContactBuilder.Address();
a.formattedAddress = address;
@@ -192,11 +185,6 @@ public class OpenStreetMapForwardLookup extends ForwardLookup {
post.setEntity(new StringEntity(query));
- HttpResponse response = client.execute(post);
-
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- response.getEntity().writeTo(out);
-
- return new String(out.toByteArray());
+ return EntityUtils.toString(client.execute(post).getEntity());
}
}
diff --git a/src/com/android/dialer/lookup/paginebianche/PagineBiancheApi.java b/src/com/android/dialer/lookup/paginebianche/PagineBiancheApi.java
index 4bc93a2d8..cace3b56c 100644
--- a/src/com/android/dialer/lookup/paginebianche/PagineBiancheApi.java
+++ b/src/com/android/dialer/lookup/paginebianche/PagineBiancheApi.java
@@ -18,21 +18,12 @@ package com.android.dialer.lookup.paginebianche;
import android.content.Context;
import android.net.Uri;
-import android.text.Html;
-import com.android.dialer.lookup.LookupSettings;
+import com.android.dialer.lookup.LookupUtils;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.util.EntityUtils;
import java.io.IOException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
public class PagineBiancheApi {
private static final String TAG = PagineBiancheApi.class.getSimpleName();
@@ -40,6 +31,10 @@ public class PagineBiancheApi {
private static final String REVERSE_LOOKUP_URL =
"http://www.paginebianche.it/ricerca-da-numero?";
+ private static final String NAME_REGEX = "\\stitle=\"(.*?)\"";
+ private static final String NUMBER_REGEX = "class=\"tel\".*?class=\"value\">(.*?)<";
+ private static final String ADDRESS_REGEX = "class=\"street-address\">(.*?)</div>";
+
private PagineBiancheApi() {
}
@@ -50,27 +45,18 @@ public class PagineBiancheApi {
.appendQueryParameter("qs", number)
.build();
- String output = httpGet(uri.toString());
- if (output == null) {
- return null;
- }
-
// Cut out everything we're not interested in (scripts etc.) to
// speed up the subsequent matching.
- Pattern regex = Pattern.compile("class=\"org fn\"(.*?)class=\"link_social", Pattern.DOTALL);
- Matcher matcher = regex.matcher(output);
- if (!matcher.find()) {
- return null;
- }
-
- output = matcher.group(1);
+ String output = LookupUtils.firstRegexResult(
+ LookupUtils.httpGet(new HttpGet(uri.toString())),
+ "class=\"org fn\"(.*?)class=\"link_social", true);
- String name = parseName(output);
+ String name = LookupUtils.firstRegexResult(output, NAME_REGEX, false);
if (name == null) {
return null;
}
- String phoneNumber = parseNumber(output);
+ String phoneNumber = LookupUtils.firstRegexResult(output, NUMBER_REGEX, false);
String address = parseAddress(output);
ContactInfo info = new ContactInfo();
@@ -82,62 +68,9 @@ public class PagineBiancheApi {
return info;
}
- private static String httpGet(String url) throws IOException {
- HttpClient client = new DefaultHttpClient();
- HttpGet get = new HttpGet(url);
-
- HttpResponse response = client.execute(get);
- int status = response.getStatusLine().getStatusCode();
-
- // Android's org.apache.http doesn't have the RedirectStrategy class
- if (status == HttpStatus.SC_MOVED_PERMANENTLY
- || status == HttpStatus.SC_MOVED_TEMPORARILY) {
- Header[] headers = response.getHeaders("Location");
-
- if (headers != null && headers.length != 0) {
- String newUrl = headers[headers.length - 1].getValue();
- return httpGet(newUrl);
- } else {
- return null;
- }
- }
-
- if (status != HttpStatus.SC_OK) {
- return null;
- }
-
- return EntityUtils.toString(response.getEntity());
- }
-
- private static String parseName(String output) {
- Pattern regex = Pattern.compile("\\stitle=\"(.*?)\"");
- Matcher m = regex.matcher(output);
-
- if (m.find()) {
- return m.group(1);
- }
-
- return null;
- }
-
- private static String parseNumber(String output) {
- Pattern regex = Pattern.compile("class=\"tel\".*?class=\"value\">(.*?)<");
- Matcher m = regex.matcher(output);
- if (m.find()) {
- return m.group(1);
- }
-
- return null;
- }
-
private static String parseAddress(String output) {
- Pattern regex = Pattern.compile("class=\"street-address\">(.*?)</div>");
- Matcher m = regex.matcher(output);
- if (m.find()) {
- return m.group(1).replaceAll("</?span.*?>", "");
- }
-
- return null;
+ String address = LookupUtils.firstRegexResult(output, ADDRESS_REGEX, false);
+ return address != null ? address.replaceAll("</?span.*?>", "") : null;
}
public static class ContactInfo {
diff --git a/src/com/android/dialer/lookup/paginebianche/PagineBiancheReverseLookup.java b/src/com/android/dialer/lookup/paginebianche/PagineBiancheReverseLookup.java
index aa8191a3a..212663828 100644
--- a/src/com/android/dialer/lookup/paginebianche/PagineBiancheReverseLookup.java
+++ b/src/com/android/dialer/lookup/paginebianche/PagineBiancheReverseLookup.java
@@ -21,7 +21,6 @@ import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
-import android.util.Pair;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.lookup.ContactBuilder;
@@ -43,21 +42,15 @@ public class PagineBiancheReverseLookup extends ReverseLookup {
* @param formattedNumber The formatted phone number
* @return The phone number info object
*/
- public Pair<ContactInfo, Object> lookupNumber(Context context,
- String normalizedNumber, String formattedNumber) {
- PagineBiancheApi.ContactInfo info = null;
-
+ public ContactInfo lookupNumber(Context context,
+ String normalizedNumber, String formattedNumber) throws IOException {
if (normalizedNumber.startsWith("+") && !normalizedNumber.startsWith("+39")) {
// PagineBianche only supports Italian numbers
return null;
}
- try {
- info = PagineBiancheApi.reverseLookup(context, normalizedNumber.replace("+39",""));
- } catch (IOException e) {
- return null;
- }
-
+ PagineBiancheApi.ContactInfo info =
+ PagineBiancheApi.reverseLookup(context, normalizedNumber.replace("+39",""));
if (info == null) {
return null;
}
@@ -66,24 +59,12 @@ public class PagineBiancheReverseLookup extends ReverseLookup {
ContactBuilder.REVERSE_LOOKUP,
normalizedNumber, formattedNumber);
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = info.name;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = info.formattedNumber;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
-
+ builder.setName(ContactBuilder.Name.createDisplayName(info.name));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber));
if (info.address != null) {
- ContactBuilder.Address a = new ContactBuilder.Address();
- a.formattedAddress = info.address;
- a.type = StructuredPostal.TYPE_HOME;
- builder.addAddress(a);
+ builder.addAddress(ContactBuilder.Address.createFormattedHome(info.address));
}
- // No website information because PagineBianche does not provide any
-
- return Pair.create(builder.build(), null);
+ return builder.build();
}
}
diff --git a/src/com/android/dialer/lookup/whitepages/WhitePagesApi.java b/src/com/android/dialer/lookup/whitepages/WhitePagesApi.java
index 6497ac3be..5b266bf9c 100644
--- a/src/com/android/dialer/lookup/whitepages/WhitePagesApi.java
+++ b/src/com/android/dialer/lookup/whitepages/WhitePagesApi.java
@@ -16,26 +16,21 @@
package com.android.dialer.lookup.whitepages;
+import android.content.Context;
+import android.net.Uri;
+import android.text.TextUtils;
+import android.util.Log;
+
import com.android.dialer.lookup.LookupSettings;
+import com.android.dialer.lookup.LookupUtils;
+
+import org.apache.http.client.methods.HttpGet;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
-
-import android.content.Context;
-import android.net.Uri;
-import android.text.Html;
-import android.util.Log;
-
public class WhitePagesApi {
private static final String TAG = WhitePagesApi.class.getSimpleName();
@@ -97,7 +92,7 @@ public class WhitePagesApi {
continue;
}
- String name = unHtml(extractXmlRegex(section,
+ String name = LookupUtils.fromHtml(extractXmlRegex(section,
"<span[^>]+?itemprop=\"name\">", "span"));
if (name == null) {
@@ -105,11 +100,11 @@ public class WhitePagesApi {
}
// Address
- String addrCountry = unHtml(extractXmlRegex(section,
+ String addrCountry = LookupUtils.fromHtml(extractXmlRegex(section,
"<span[^>]+?itemprop=\"addressCountry\">", "span"));
- String addrState = unHtml(extractXmlRegex(section,
+ String addrState = LookupUtils.fromHtml(extractXmlRegex(section,
"<span[^>]+?itemprop=\"addressRegion\">", "span"));
- String addrCity = unHtml(extractXmlRegex(section,
+ String addrCity = LookupUtils.fromHtml(extractXmlRegex(section,
"<span[^>]+?itemprop=\"addressLocality\">", "span"));
StringBuilder sb = new StringBuilder();
@@ -145,13 +140,12 @@ public class WhitePagesApi {
}
String profile = httpGet(website);
- String phoneNumber = unHtml(extractXmlRegex(profile,
+ String phoneNumber = LookupUtils.fromHtml(extractXmlRegex(profile,
"<li[^>]+?class=\"no-overflow tel\">", "li"));
String address = parseAddressUnitedStates(profile);
if (phoneNumber == null) {
- Log.e(TAG,
- "Phone number is null. Either cookie is bad or regex is broken");
+ Log.e(TAG, "Phone number is null. Either cookie is bad or regex is broken");
continue;
}
@@ -209,14 +203,6 @@ public class WhitePagesApi {
return str.substring(realBegin, realEnd);
}
- private static String unHtml(String html) {
- if (html == null) {
- return null;
- }
-
- return Html.fromHtml(html).toString().trim();
- }
-
public static ContactInfo reverseLookup(Context context, String number)
throws IOException {
String provider = LookupSettings.getReverseLookupProvider(context);
@@ -257,36 +243,13 @@ public class WhitePagesApi {
}
private static String httpGet(String url) throws IOException {
- HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
- get.setHeader("User-Agent", USER_AGENT);
-
if (mCookie != null) {
get.setHeader("Cookie", COOKIE + "=" + mCookie);
}
- HttpResponse response = client.execute(get);
- int status = response.getStatusLine().getStatusCode();
-
- // Android's org.apache.http doesn't have the RedirectStrategy class
- if (status == HttpStatus.SC_MOVED_PERMANENTLY
- || status == HttpStatus.SC_MOVED_TEMPORARILY) {
- Header[] headers = response.getHeaders("Location");
-
- if (headers != null && headers.length != 0) {
- String newUrl = headers[headers.length - 1].getValue();
- return httpGet(newUrl);
- } else {
- return null;
- }
- }
-
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- response.getEntity().writeTo(out);
-
- String output = new String(out.toByteArray());
-
+ String output = LookupUtils.httpGet(get);
// If we can find a new cookie, use it
Pattern p = Pattern.compile(COOKIE_REGEX, Pattern.DOTALL);
Matcher m = p.matcher(output);
@@ -309,28 +272,13 @@ public class WhitePagesApi {
}
private static String parseNameUnitedStates(String output) {
- Matcher m;
-
- Pattern regexName = Pattern
- .compile("<h2.*?>Send (.*?)&#39;s details to phone</h2>",
- Pattern.DOTALL);
- String name = null;
-
- m = regexName.matcher(output);
- if (m.find()) {
- name = m.group(1).trim();
- }
+ String name = LookupUtils.firstRegexResult(output,
+ "<h2.*?>Send (.*?)&#39;s details to phone</h2>", true);
// Use summary if name doesn't exist
if (name == null) {
- Pattern regexSummary = Pattern.compile(
- "<span\\s*class=\"subtitle.*?>\\s*\n?(.*?)\n?\\s*</span>",
- Pattern.DOTALL);
-
- m = regexSummary.matcher(output);
- if (m.find()) {
- name = m.group(1).trim();
- }
+ name = LookupUtils.firstRegexResult(output,
+ "<span\\s*class=\"subtitle.*?>\\s*\n?(.*?)\n?\\s*</span>", true);
}
if (name != null) {
@@ -341,80 +289,36 @@ public class WhitePagesApi {
}
private static String parseNameCanada(String output) {
- Matcher m;
-
- Pattern regexName = Pattern.compile(
- "(<li\\s+class=\"listing_info\">.*?</li>)", Pattern.DOTALL);
- String name = null;
-
- m = regexName.matcher(output);
- if (m.find()) {
- name = m.group(1).trim();
- }
-
- if (name != null) {
- name = Html.fromHtml(name).toString().trim();
- }
-
- return name;
+ String name = LookupUtils.firstRegexResult(output,
+ "(<li\\s+class=\"listing_info\">.*?</li>)", true);
+ return LookupUtils.fromHtml(name);
}
private static String parseNumberUnitedStates(String output) {
- Matcher m;
-
- Pattern regexPhoneNumber = Pattern.compile(
- "Full Number:</span>([0-9\\-\\+\\(\\)]+)</li>", Pattern.DOTALL);
- String phoneNumber = null;
-
- m = regexPhoneNumber.matcher(output);
- if (m.find()) {
- phoneNumber = m.group(1).trim();
- }
-
- return phoneNumber;
+ return LookupUtils.firstRegexResult(output,
+ "Full Number:</span>([0-9\\-\\+\\(\\)]+)</li>", true);
}
private static String parseAddressUnitedStates(String output) {
- Matcher m;
-
String regexBase = "<span\\s+class=\"%s[^\"]+\"\\s*>([^<]*)</span>";
- Pattern regexAddressPrimary = Pattern.compile(
- String.format(regexBase, "address-primary"), Pattern.DOTALL);
- Pattern regexAddressSecondary = Pattern.compile(
- String.format(regexBase, "address-secondary"), Pattern.DOTALL);
- Pattern regexAddressLocation = Pattern.compile(
- String.format(regexBase, "address-location"), Pattern.DOTALL);
-
- String addressPrimary = null;
- String addressSecondary = null;
- String addressLocation = null;
-
- m = regexAddressPrimary.matcher(output);
- if (m.find()) {
- addressPrimary = m.group(1).trim();
- }
-
- m = regexAddressSecondary.matcher(output);
- if (m.find()) {
- addressSecondary = m.group(1).trim();
- }
-
- m = regexAddressLocation.matcher(output);
- if (m.find()) {
- addressLocation = m.group(1).trim();
- }
+ String addressPrimary = LookupUtils.firstRegexResult(output,
+ String.format(regexBase, "address-primary"), true);
+ String addressSecondary = LookupUtils.firstRegexResult(output,
+ String.format(regexBase, "address-secondary"), true);
+ String addressLocation = LookupUtils.firstRegexResult(output,
+ String.format(regexBase, "address-location"), true);
StringBuilder sb = new StringBuilder();
- if (addressPrimary != null && addressPrimary.length() != 0) {
+ if (!TextUtils.isEmpty(addressPrimary)) {
sb.append(addressPrimary);
}
- if (addressSecondary != null && addressSecondary.length() != 0) {
+ if (!TextUtils.isEmpty(addressSecondary)) {
sb.append(", ");
sb.append(addressSecondary);
}
- if (addressLocation != null && addressLocation.length() != 0) {
+ if (!TextUtils.isEmpty(addressLocation)) {
sb.append(", ");
sb.append(addressLocation);
}
@@ -428,22 +332,12 @@ public class WhitePagesApi {
}
private static String parseAddressCanada(String output) {
- Matcher m;
-
- Pattern regexAddress = Pattern
- .compile(
- "<ol class=\"result people_result\">.*?(<li\\s+class=\"col_location\">.*?</li>).*?</ol>",
- Pattern.DOTALL);
- String address = null;
-
- m = regexAddress.matcher(output);
- if (m.find()) {
- address = m.group(1).trim();
- }
+ String address = LookupUtils.firstRegexResult(output,
+ "<ol class=\"result people_result\">.*?(<li\\s+class=\"col_location\">.*?</li>)" +
+ ".*?</ol>", true);
if (address != null) {
- address = Html.fromHtml(address).toString().replace("\n", ", ")
- .trim();
+ address = LookupUtils.fromHtml(address).replace("\n", ", ");
}
return address;
diff --git a/src/com/android/dialer/lookup/whitepages/WhitePagesPeopleLookup.java b/src/com/android/dialer/lookup/whitepages/WhitePagesPeopleLookup.java
index 5de1bec82..b237327b4 100644
--- a/src/com/android/dialer/lookup/whitepages/WhitePagesPeopleLookup.java
+++ b/src/com/android/dialer/lookup/whitepages/WhitePagesPeopleLookup.java
@@ -51,20 +51,16 @@ public class WhitePagesPeopleLookup extends PeopleLookup {
return null;
}
- ArrayList<ContactInfo> details = new ArrayList<ContactInfo>();
-
- for (WhitePagesApi.ContactInfo info : infos) {
+ ContactInfo[] details = new ContactInfo[infos.length];
+ for (int i = 0; i < infos.length; i++) {
+ WhitePagesApi.ContactInfo info = infos[i];
ContactBuilder builder = new ContactBuilder(
ContactBuilder.PEOPLE_LOOKUP, null, info.formattedNumber);
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = info.name;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = info.formattedNumber;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
+ builder.setName(ContactBuilder.Name.createDisplayName(info.name));
+ builder.addPhoneNumber(
+ ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber));
+ builder.addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.website));
if (info.address != null || info.city != null) {
ContactBuilder.Address a = new ContactBuilder.Address();
@@ -74,18 +70,9 @@ public class WhitePagesPeopleLookup extends PeopleLookup {
builder.addAddress(a);
}
- ContactBuilder.WebsiteUrl w = new ContactBuilder.WebsiteUrl();
- w.url = info.website;
- w.type = Website.TYPE_PROFILE;
- builder.addWebsite(w);
-
- details.add(builder.build());
+ details[i] = builder.build();
}
- if (details.size() > 0) {
- return details.toArray(new ContactInfo[details.size()]);
- } else {
- return null;
- }
+ return details;
}
}
diff --git a/src/com/android/dialer/lookup/whitepages/WhitePagesReverseLookup.java b/src/com/android/dialer/lookup/whitepages/WhitePagesReverseLookup.java
index 470758b9d..375c63f35 100644
--- a/src/com/android/dialer/lookup/whitepages/WhitePagesReverseLookup.java
+++ b/src/com/android/dialer/lookup/whitepages/WhitePagesReverseLookup.java
@@ -21,12 +21,6 @@ import com.android.dialer.lookup.ContactBuilder;
import com.android.dialer.lookup.ReverseLookup;
import android.content.Context;
-import android.net.Uri;
-import android.util.Pair;
-
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.CommonDataKinds.Website;
import java.io.IOException;
@@ -45,16 +39,9 @@ public class WhitePagesReverseLookup extends ReverseLookup {
* @param formattedNumber The formatted phone number
* @return The phone number info object
*/
- public Pair<ContactInfo, Object> lookupNumber(Context context,
- String normalizedNumber, String formattedNumber) {
- WhitePagesApi.ContactInfo info = null;
-
- try {
- info = WhitePagesApi.reverseLookup(context, normalizedNumber);
- } catch (IOException e) {
- return null;
- }
-
+ public ContactInfo lookupNumber(Context context,
+ String normalizedNumber, String formattedNumber) throws IOException {
+ WhitePagesApi.ContactInfo info = WhitePagesApi.reverseLookup(context, normalizedNumber);
if (info == null || info.name == null) {
return null;
}
@@ -63,27 +50,13 @@ public class WhitePagesReverseLookup extends ReverseLookup {
ContactBuilder.REVERSE_LOOKUP,
normalizedNumber, formattedNumber);
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = info.name;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = info.formattedNumber;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
-
+ builder.setName(ContactBuilder.Name.createDisplayName(info.name));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber));
+ builder.addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.website));
if (info.address != null) {
- ContactBuilder.Address a = new ContactBuilder.Address();
- a.formattedAddress = info.address;
- a.type = StructuredPostal.TYPE_HOME;
- builder.addAddress(a);
+ builder.addAddress(ContactBuilder.Address.createFormattedHome(info.address));
}
- ContactBuilder.WebsiteUrl w = new ContactBuilder.WebsiteUrl();
- w.url = info.website;
- w.type = Website.TYPE_PROFILE;
- builder.addWebsite(w);
-
- return Pair.create(builder.build(), null);
+ return builder.build();
}
}
diff --git a/src/com/android/dialer/lookup/yellowpages/YellowPagesApi.java b/src/com/android/dialer/lookup/yellowpages/YellowPagesApi.java
index 75078b92f..b52a67b1f 100644
--- a/src/com/android/dialer/lookup/yellowpages/YellowPagesApi.java
+++ b/src/com/android/dialer/lookup/yellowpages/YellowPagesApi.java
@@ -16,25 +16,18 @@
package com.android.dialer.lookup.yellowpages;
+import android.content.Context;
+import android.text.TextUtils;
+
import com.android.dialer.lookup.LookupSettings;
+import com.android.dialer.lookup.LookupUtils;
-import android.content.Context;
-import android.text.Html;
+import org.apache.http.client.methods.HttpGet;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
-
public class YellowPagesApi {
private static final String TAG = YellowPagesApi.class.getSimpleName();
@@ -61,81 +54,33 @@ public class YellowPagesApi {
}
private void fetchPage() throws IOException {
- mOutput = httpGet(mLookupUrl + mNumber);
- }
-
- private String httpGet(String url) throws IOException {
- HttpClient client = new DefaultHttpClient();
- HttpGet get = new HttpGet(url);
-
- HttpResponse response = client.execute(get);
- int status = response.getStatusLine().getStatusCode();
-
- // Android's org.apache.http doesn't have the RedirectStrategy class
- if (status == HttpStatus.SC_MOVED_PERMANENTLY
- || status == HttpStatus.SC_MOVED_TEMPORARILY) {
- Header[] headers = response.getHeaders("Location");
-
- if (headers != null && headers.length != 0) {
- String newUrl = headers[headers.length - 1].getValue();
- return httpGet(newUrl);
- } else {
- return null;
- }
- }
-
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- response.getEntity().writeTo(out);
-
- return new String(out.toByteArray());
+ mOutput = LookupUtils.httpGet(new HttpGet(mLookupUrl + mNumber));
}
private String getPhotoUrl(String website) throws IOException {
- String output = httpGet(website);
-
- Matcher m;
-
- Pattern regexGallery = Pattern.compile(
- "href=\"([^\"]+gallery\\?lid=[^\"]+)\"", Pattern.DOTALL);
-
- String galleryUrl = null;
-
- m = regexGallery.matcher(output);
- if (m.find()) {
- galleryUrl = "http://www.yellowpages.com" + m.group(1).trim();
- }
-
- if (galleryUrl == null) {
+ String output = LookupUtils.httpGet(new HttpGet(website));
+ String galleryRef = LookupUtils.firstRegexResult(output,
+ "href=\"([^\"]+gallery\\?lid=[^\"]+)\"", true);
+ if (galleryRef == null) {
return null;
}
// Get first image
+ HttpGet get = new HttpGet("http://www.yellowpages.com" + galleryRef);
+ output = LookupUtils.httpGet(get);
- output = httpGet(galleryUrl);
-
- Pattern regexPhoto = Pattern.compile(
- "\"type\":\"image\",\"src\":\"([^\"]+)\"", Pattern.DOTALL);
-
- String photoUrl = null;
-
- m = regexPhoto.matcher(output);
- if (m.find()) {
- photoUrl = m.group(1).trim();
- }
-
- return photoUrl;
+ return LookupUtils.firstRegexResult(output,
+ "\"type\":\"image\",\"src\":\"([^\"]+)\"", true);
}
private String[] parseNameWebsiteUnitedStates() {
- Matcher m;
-
Pattern regexNameAndWebsite = Pattern.compile(
"<a href=\"([^>]+?)\"[^>]+?class=\"url[^>]+?>([^<]+)</a>",
Pattern.DOTALL);
String name = null;
String website = null;
- m = regexNameAndWebsite.matcher(mOutput);
+ Matcher m = regexNameAndWebsite.matcher(mOutput);
if (m.find()) {
website = m.group(1).trim();
name = m.group(2).trim();
@@ -145,8 +90,6 @@ public class YellowPagesApi {
}
private String[] parseNameWebsiteCanada() {
- Matcher m;
-
Pattern regexNameAndWebsite = Pattern.compile(
"class=\"ypgListingTitleLink utagLink\".*?href=\"(.*?)\">"
+ "(<span\\s+class=\"listingTitle\">.*?</span>)",
@@ -154,14 +97,10 @@ public class YellowPagesApi {
String name = null;
String website = null;
- m = regexNameAndWebsite.matcher(mOutput);
+ Matcher m = regexNameAndWebsite.matcher(mOutput);
if (m.find()) {
website = m.group(1).trim();
- name = m.group(2).trim();
- }
-
- if (name != null) {
- name = Html.fromHtml(name).toString().trim();
+ name = LookupUtils.fromHtml(m.group(2).trim());
}
if (website != null) {
@@ -172,90 +111,43 @@ public class YellowPagesApi {
}
private String parseNumberUnitedStates() {
- Matcher m;
-
- Pattern regexPhoneNumber = Pattern.compile(
- "business-phone.*?>\n*([^\n<]+)\n*<", Pattern.DOTALL);
- String phoneNumber = null;
-
- m = regexPhoneNumber.matcher(mOutput);
- if (m.find()) {
- phoneNumber = m.group(1).trim();
- }
-
- return phoneNumber;
+ return LookupUtils.firstRegexResult(mOutput,
+ "business-phone.*?>\n*([^\n<]+)\n*<", true);
}
private String parseNumberCanada() {
- Matcher m;
-
- Pattern regexPhoneNumber = Pattern.compile(
- "<div\\s+class=\"phoneNumber\">(.*?)</div>", Pattern.DOTALL);
- String phoneNumber = null;
-
- m = regexPhoneNumber.matcher(mOutput);
- if (m.find()) {
- phoneNumber = m.group(1).trim();
- }
-
- return phoneNumber;
+ return LookupUtils.firstRegexResult(mOutput,
+ "<div\\s+class=\"phoneNumber\">(.*?)</div>", true);
}
private String parseAddressUnitedStates() {
- Matcher m;
-
- Pattern regexAddressStreet = Pattern.compile(
- "street-address.*?>\n*([^\n<]+)\n*<", Pattern.DOTALL);
- Pattern regexAddressCity = Pattern.compile(
- "locality.*?>\n*([^\n<]+)\n*<", Pattern.DOTALL);
- Pattern regexAddressState = Pattern.compile(
- "region.*?>\n*([^\n<]+)\n*<", Pattern.DOTALL);
- Pattern regexAddressZip = Pattern.compile(
- "postal-code.*?>\n*([^\n<]+)\n*<", Pattern.DOTALL);
-
- String addressStreet = null;
- String addressCity = null;
- String addressState = null;
- String addressZip = null;
-
- m = regexAddressStreet.matcher(mOutput);
- if (m.find()) {
- addressStreet = m.group(1).trim();
- if (addressStreet.endsWith(",")) {
- addressStreet = addressStreet.substring(0,
- addressStreet.length() - 1);
- }
+ String addressStreet = LookupUtils.firstRegexResult(mOutput,
+ "street-address.*?>\n*([^\n<]+)\n*<", true);
+ if (addressStreet != null && addressStreet.endsWith(",")) {
+ addressStreet = addressStreet.substring(0, addressStreet.length() - 1);
}
- m = regexAddressCity.matcher(mOutput);
- if (m.find()) {
- addressCity = m.group(1).trim();
- }
-
- m = regexAddressState.matcher(mOutput);
- if (m.find()) {
- addressState = m.group(1).trim();
- }
-
- m = regexAddressZip.matcher(mOutput);
- if (m.find()) {
- addressZip = m.group(1).trim();
- }
+ String addressCity = LookupUtils.firstRegexResult(mOutput,
+ "locality.*?>\n*([^\n<]+)\n*<", true);
+ String addressState = LookupUtils.firstRegexResult(mOutput,
+ "region.*?>\n*([^\n<]+)\n*<", true);
+ String addressZip = LookupUtils.firstRegexResult(mOutput,
+ "postal-code.*?>\n*([^\n<]+)\n*<", true);
StringBuilder sb = new StringBuilder();
- if (addressStreet != null && addressStreet.length() != 0) {
+ if (!TextUtils.isEmpty(addressStreet)) {
sb.append(addressStreet);
}
- if (addressCity != null && addressCity.length() != 0) {
+ if (!TextUtils.isEmpty(addressCity)) {
sb.append(", ");
sb.append(addressCity);
}
- if (addressState != null && addressState.length() != 0) {
+ if (!TextUtils.isEmpty(addressState)) {
sb.append(", ");
sb.append(addressState);
}
- if (addressZip != null && addressZip.length() != 0) {
+ if (!TextUtils.isEmpty(addressZip)) {
sb.append(", ");
sb.append(addressZip);
}
@@ -269,22 +161,9 @@ public class YellowPagesApi {
}
private String parseAddressCanada() {
- Matcher m;
-
- Pattern regexAddress = Pattern.compile(
- "<div\\s+class=\"address\">(.*?)</div>", Pattern.DOTALL);
- String address = null;
-
- m = regexAddress.matcher(mOutput);
- if (m.find()) {
- address = m.group(1).trim();
- }
-
- if (address != null) {
- address = Html.fromHtml(address).toString().trim();
- }
-
- return address;
+ String address = LookupUtils.firstRegexResult(mOutput,
+ "<div\\s+class=\"address\">(.*?)</div>", true);
+ return LookupUtils.fromHtml(address);
}
private void buildContactInfo() throws IOException {
diff --git a/src/com/android/dialer/lookup/yellowpages/YellowPagesReverseLookup.java b/src/com/android/dialer/lookup/yellowpages/YellowPagesReverseLookup.java
index 6e7b44df9..eaaee5779 100644
--- a/src/com/android/dialer/lookup/yellowpages/YellowPagesReverseLookup.java
+++ b/src/com/android/dialer/lookup/yellowpages/YellowPagesReverseLookup.java
@@ -25,12 +25,8 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
-import android.util.Log;
-import android.util.Pair;
-
-import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.util.Log;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
@@ -54,9 +50,8 @@ public class YellowPagesReverseLookup extends ReverseLookup {
*
* @param context The application context
* @param uri The image URI
- * @param data Extra data (a authentication token, perhaps)
*/
- public Bitmap lookupImage(Context context, Uri uri, Object data) {
+ public Bitmap lookupImage(Context context, Uri uri) {
if (uri == null) {
throw new NullPointerException("URI is null");
}
@@ -107,16 +102,10 @@ public class YellowPagesReverseLookup extends ReverseLookup {
* @param formattedNumber The formatted phone number
* @return The phone number info object
*/
- public Pair<ContactInfo, Object> lookupNumber(Context context,
- String normalizedNumber, String formattedNumber) {
+ public ContactInfo lookupNumber(Context context,
+ String normalizedNumber, String formattedNumber) throws IOException {
YellowPagesApi ypa = new YellowPagesApi(context, normalizedNumber);
- YellowPagesApi.ContactInfo info = null;
-
- try {
- info = ypa.getContactInfo();
- } catch (IOException e) {
- return null;
- }
+ YellowPagesApi.ContactInfo info = ypa.getContactInfo();
if (info.name == null) {
return null;
@@ -126,14 +115,9 @@ public class YellowPagesReverseLookup extends ReverseLookup {
ContactBuilder.REVERSE_LOOKUP,
normalizedNumber, formattedNumber);
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = info.name;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = info.formattedNumber;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
+ builder.setName(ContactBuilder.Name.createDisplayName(info.name));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber));
+ builder.addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.website));
if (info.address != null) {
ContactBuilder.Address a = new ContactBuilder.Address();
@@ -142,17 +126,12 @@ public class YellowPagesReverseLookup extends ReverseLookup {
builder.addAddress(a);
}
- ContactBuilder.WebsiteUrl w = new ContactBuilder.WebsiteUrl();
- w.url = info.website;
- w.type = Website.TYPE_PROFILE;
- builder.addWebsite(w);
-
if (info.photoUrl != null) {
builder.setPhotoUri(info.photoUrl);
} else {
builder.setPhotoUri(ContactBuilder.PHOTO_URI_BUSINESS);
}
- return Pair.create(builder.build(), null);
+ return builder.build();
}
}
diff --git a/src/com/android/dialer/lookup/zabasearch/ZabaSearchApi.java b/src/com/android/dialer/lookup/zabasearch/ZabaSearchApi.java
index 76fc414f5..2e8b65abd 100644
--- a/src/com/android/dialer/lookup/zabasearch/ZabaSearchApi.java
+++ b/src/com/android/dialer/lookup/zabasearch/ZabaSearchApi.java
@@ -16,15 +16,13 @@
package com.android.dialer.lookup.zabasearch;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import android.text.TextUtils;
+
+import com.android.dialer.lookup.LookupUtils;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
+
+import java.io.IOException;
public class ZabaSearchApi {
private static final String TAG = ZabaSearchApi.class.getSimpleName();
@@ -40,93 +38,40 @@ public class ZabaSearchApi {
}
private void fetchPage() throws IOException {
- mOutput = httpGet(LOOKUP_URL + mNumber);
- }
-
- private String httpGet(String url) throws IOException {
- HttpClient client = new DefaultHttpClient();
- HttpGet get = new HttpGet(url);
-
- HttpResponse response = client.execute(get);
-
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- response.getEntity().writeTo(out);
-
- return new String(out.toByteArray());
+ mOutput = LookupUtils.httpGet(new HttpGet(LOOKUP_URL + mNumber));
}
private void buildContactInfo() {
- Matcher m;
-
// Name
- Pattern regexName = Pattern.compile(
- "itemprop=\"?name\"?>([^<]+)<", Pattern.DOTALL);
- String name = null;
-
- m = regexName.matcher(mOutput);
- if (m.find()) {
- name = m.group(1).trim();
- }
-
+ String name = LookupUtils.firstRegexResult(mOutput,
+ "itemprop=\"?name\"?>([^<]+)<", true);
// Formatted phone number
- Pattern regexPhoneNumber = Pattern.compile(
- "itemprop=\"?telephone\"?>([^<]+)<", Pattern.DOTALL);
- String phoneNumber = null;
-
- m = regexPhoneNumber.matcher(mOutput);
- if (m.find()) {
- phoneNumber = m.group(1).trim();
- }
-
+ String phoneNumber = LookupUtils.firstRegexResult(mOutput,
+ "itemprop=\"?telephone\"?>([^<]+)<", true);
// Address
- Pattern regexStreet = Pattern.compile(
- "itemprop=\"?streetAddress\"?>([^<]+?)(&nbsp;)*<", Pattern.DOTALL);
- Pattern regexCity = Pattern.compile(
- "itemprop=\"?addressLocality\"?>([^<]+)<", Pattern.DOTALL);
- Pattern regexState = Pattern.compile(
- "itemprop=\"?addressRegion\"?>([^<]+)<", Pattern.DOTALL);
- Pattern regexZip = Pattern.compile(
- "itemprop=\"?postalCode\"?>([^<]+)<", Pattern.DOTALL);
-
- String addressStreet = null;
- String addressCity = null;
- String addressState = null;
- String addressZip = null;
-
- m = regexStreet.matcher(mOutput);
- if (m.find()) {
- addressStreet = m.group(1).trim();
- }
-
- m = regexCity.matcher(mOutput);
- if (m.find()) {
- addressCity = m.group(1).trim();
- }
-
- m = regexState.matcher(mOutput);
- if (m.find()) {
- addressState = m.group(1).trim();
- }
-
- m = regexZip.matcher(mOutput);
- if (m.find()) {
- addressZip = m.group(1).trim();
- }
+ String addressStreet = LookupUtils.firstRegexResult(mOutput,
+ "itemprop=\"?streetAddress\"?>([^<]+?)(&nbsp;)*<", true);
+ String addressCity = LookupUtils.firstRegexResult(mOutput,
+ "itemprop=\"?addressLocality\"?>([^<]+)<", true);
+ String addressState = LookupUtils.firstRegexResult(mOutput,
+ "itemprop=\"?addressRegion\"?>([^<]+)<", true);
+ String addressZip = LookupUtils.firstRegexResult(mOutput,
+ "itemprop=\"?postalCode\"?>([^<]+)<", true);
StringBuilder sb = new StringBuilder();
- if (addressStreet != null && addressStreet.length() != 0) {
+ if (!TextUtils.isEmpty(addressStreet)) {
sb.append(addressStreet);
}
- if (addressCity != null && addressCity.length() != 0) {
+ if (!TextUtils.isEmpty(addressCity)) {
sb.append(", ");
sb.append(addressCity);
}
- if (addressState != null && addressState.length() != 0) {
+ if (!TextUtils.isEmpty(addressState)) {
sb.append(", ");
sb.append(addressState);
}
- if (addressZip != null && addressZip.length() != 0) {
+ if (!TextUtils.isEmpty(addressZip)) {
sb.append(", ");
sb.append(addressZip);
}
diff --git a/src/com/android/dialer/lookup/zabasearch/ZabaSearchReverseLookup.java b/src/com/android/dialer/lookup/zabasearch/ZabaSearchReverseLookup.java
index e0395214a..afe9961ac 100644
--- a/src/com/android/dialer/lookup/zabasearch/ZabaSearchReverseLookup.java
+++ b/src/com/android/dialer/lookup/zabasearch/ZabaSearchReverseLookup.java
@@ -21,11 +21,6 @@ import com.android.dialer.lookup.ContactBuilder;
import com.android.dialer.lookup.ReverseLookup;
import android.content.Context;
-import android.util.Pair;
-
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
-import android.provider.ContactsContract.CommonDataKinds.Website;
import java.io.IOException;
@@ -44,17 +39,10 @@ public class ZabaSearchReverseLookup extends ReverseLookup {
* @param formattedNumber The formatted phone number
* @return The phone number info object
*/
- public Pair<ContactInfo, Object> lookupNumber(Context context,
- String normalizedNumber, String formattedNumber) {
+ public ContactInfo lookupNumber(Context context,
+ String normalizedNumber, String formattedNumber) throws IOException {
ZabaSearchApi zsa = new ZabaSearchApi(normalizedNumber);
- ZabaSearchApi.ContactInfo info = null;
-
- try {
- info = zsa.getContactInfo();
- } catch (IOException e) {
- return null;
- }
-
+ ZabaSearchApi.ContactInfo info = zsa.getContactInfo();
if (info.name == null) {
return null;
}
@@ -63,27 +51,13 @@ public class ZabaSearchReverseLookup extends ReverseLookup {
ContactBuilder.REVERSE_LOOKUP,
normalizedNumber, formattedNumber);
- ContactBuilder.Name n = new ContactBuilder.Name();
- n.displayName = info.name;
- builder.setName(n);
-
- ContactBuilder.PhoneNumber pn = new ContactBuilder.PhoneNumber();
- pn.number = info.formattedNumber;
- pn.type = Phone.TYPE_MAIN;
- builder.addPhoneNumber(pn);
-
+ builder.setName(ContactBuilder.Name.createDisplayName(info.name));
+ builder.addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber));
+ builder.addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.website));
if (info.address != null) {
- ContactBuilder.Address a = new ContactBuilder.Address();
- a.formattedAddress = info.address;
- a.type = StructuredPostal.TYPE_HOME;
- builder.addAddress(a);
+ builder.addAddress(ContactBuilder.Address.createFormattedHome(info.address));
}
- ContactBuilder.WebsiteUrl w = new ContactBuilder.WebsiteUrl();
- w.url = info.website;
- w.type = Website.TYPE_PROFILE;
- builder.addWebsite(w);
-
- return Pair.create(builder.build(), null);
+ return builder.build();
}
}