newContents.append("N:").append(names[0]).append(';');
newDisplayContents.append(names[0]);
}
- String address = contact.getAddress();
- if (address != null && address.length() > 0) {
- newContents.append("ADR:").append(address).append(';');
- newDisplayContents.append('\n').append(address);
+ String[] addresses = contact.getAddresses();
+ if (addresses != null) {
+ for (int x = 0; x < addresses.length; x++) {
+ if (addresses[x] != null && addresses[x].length() > 0) {
+ newContents.append("ADR:").append(addresses[x]).append(';');
+ newDisplayContents.append('\n').append(addresses[x]);
+ }
+ }
}
String[] phoneNumbers = contact.getPhoneNumbers();
if (phoneNumbers != null) {
public AddressBookResultHandler(Activity activity, ParsedResult result) {
super(activity, result);
AddressBookParsedResult addressResult = (AddressBookParsedResult) result;
- String address = addressResult.getAddress();
- boolean hasAddress = address != null && address.length() > 0;
+ String[] addresses = addressResult.getAddresses();
+ boolean hasAddress = addresses != null && addresses.length > 0 && addresses[0].length() > 0;
String[] phoneNumbers = addressResult.getPhoneNumbers();
boolean hasPhoneNumber = phoneNumbers != null && phoneNumbers.length > 0;
String[] emails = addressResult.getEmails();
String[] emails = matchMultipleValuePrefix("MAIL", 3, rawText, true);
String note = matchSinglePrefixedField("MEMORY:", rawText, '\r', false);
String address = matchSinglePrefixedField("ADD:", rawText, '\r', true);
+ String[] addresses = address == null ? null : new String[] {address};
return new AddressBookParsedResult(maybeWrap(name), pronunciation, phoneNumbers, emails, note,
- address, null, null, null, null);
+ addresses, null, null, null, null);
}
private static String[] matchMultipleValuePrefix(String prefix, int max, String rawText,
String[] phoneNumbers = matchDoCoMoPrefixedField("TEL:", rawText, true);
String[] emails = matchDoCoMoPrefixedField("EMAIL:", rawText, true);
String note = matchSingleDoCoMoPrefixedField("NOTE:", rawText, false);
- String address = matchSingleDoCoMoPrefixedField("ADR:", rawText, true);
+ String[] addresses = matchDoCoMoPrefixedField("ADR:", rawText, true);
String birthday = matchSingleDoCoMoPrefixedField("BDAY:", rawText, true);
if (birthday != null && !isStringOfDigits(birthday, 8)) {
// No reason to throw out the whole card because the birthday is formatted wrong.
phoneNumbers,
emails,
note,
- address,
+ addresses,
org,
birthday,
null,
private final String[] phoneNumbers;
private final String[] emails;
private final String note;
- private final String address;
+ private final String[] addresses;
private final String org;
private final String birthday;
private final String title;
String[] phoneNumbers,
String[] emails,
String note,
- String address,
+ String[] addresses,
String org,
String birthday,
String title,
this.phoneNumbers = phoneNumbers;
this.emails = emails;
this.note = note;
- this.address = address;
+ this.addresses = addresses;
this.org = org;
this.birthday = birthday;
this.title = title;
return note;
}
+ public String[] getAddresses() {
+ return addresses;
+ }
+
public String getAddress() {
- return address;
+ if (addresses == null || addresses.length == 0) {
+ return null;
+ }
+ StringBuffer result = new StringBuffer();
+ for (int i = 0; i < addresses.length; i++) {
+ if (result.length() > 0) {
+ result.append(' ');
+ }
+ result.append(addresses[i]);
+ }
+ return result.toString();
}
public String getTitle() {
maybeAppend(pronunciation, result);
maybeAppend(title, result);
maybeAppend(org, result);
- maybeAppend(address, result);
+ maybeAppend(addresses, result);
maybeAppend(phoneNumbers, result);
maybeAppend(emails, result);
maybeAppend(url, result);
String fullName = buildName(firstName, lastName);
String title = matchSingleDoCoMoPrefixedField("T:", rawText, true);
String org = matchSingleDoCoMoPrefixedField("C:", rawText, true);
- String address = matchSingleDoCoMoPrefixedField("A:", rawText, true);
+ String[] addresses = matchDoCoMoPrefixedField("A:", rawText, true);
String phoneNumber1 = matchSingleDoCoMoPrefixedField("B:", rawText, true);
String phoneNumber2 = matchSingleDoCoMoPrefixedField("M:", rawText, true);
String phoneNumber3 = matchSingleDoCoMoPrefixedField("F:", rawText, true);
buildPhoneNumbers(phoneNumber1, phoneNumber2, phoneNumber3),
maybeWrap(email),
null,
- address,
+ addresses,
org,
null,
title,
String[] phoneNumbers = matchVCardPrefixedField("TEL", rawText, true);
String[] emails = matchVCardPrefixedField("EMAIL", rawText, true);
String note = matchSingleVCardPrefixedField("NOTE", rawText, false);
- String address = matchSingleVCardPrefixedField("ADR", rawText, true);
- address = formatAddress(address);
+ String[] addresses = matchVCardPrefixedField("ADR", rawText, true);
+ if (addresses != null) {
+ for (int i = 0; i < addresses.length; i++) {
+ addresses[i] = formatAddress(addresses[i]);
+ }
+ }
String org = matchSingleVCardPrefixedField("ORG", rawText, true);
String birthday = matchSingleVCardPrefixedField("BDAY", rawText, true);
if (!isLikeVCardDate(birthday)) {
}
String title = matchSingleVCardPrefixedField("TITLE", rawText, true);
String url = matchSingleVCardPrefixedField("URL", rawText, true);
- return new AddressBookParsedResult(names, null, phoneNumbers, emails, note, address, org,
+ return new AddressBookParsedResult(names, null, phoneNumbers, emails, note, addresses, org,
birthday, title, url);
}
public void testVCard() {
doTest("BEGIN:VCARD\r\nADR;HOME:123 Main St\r\nVERSION:2.1\r\nN:Owen;Sean\r\nEND:VCARD",
- null, new String[] {"Sean Owen"}, null, "123 Main St", null, null, null, null, null, null);
+ null, new String[] {"Sean Owen"}, null, new String[] {"123 Main St"}, null, null, null, null, null, null);
}
public void testBizcard() {
doTest("BIZCARD:N:Sean;X:Owen;C:Google;A:123 Main St;M:+12125551212;E:srowen@example.org;",
- null, new String[] {"Sean Owen"}, null, "123 Main St", new String[] {"srowen@example.org"},
+ null, new String[] {"Sean Owen"}, null, new String[] {"123 Main St"}, new String[] {"srowen@example.org"},
new String[] {"+12125551212"}, "Google", null, null, null);
}
+ public void testSeveralAddresses() {
+ doTest("MECARD:N:Foo Bar;ORG:Company;TEL:5555555555;EMAIL:foo.bar@xyz.com;ADR:City, 10001;" +
+ "ADR:City, 10001;NOTE:This is the memo.;;",
+ null, new String[] {"Foo Bar"}, null, new String[] {"City, 10001", "City, 10001"},
+ new String[] {"foo.bar@xyz.com"},
+ new String[] {"5555555555" }, "Company", null, null, "This is the memo.");
+ }
+
private static void doTest(String contents,
String title,
String[] names,
String pronunciation,
- String address,
+ String[] addresses,
String[] emails,
String[] phoneNumbers,
String org,
assertEquals(title, addressResult.getTitle());
assertTrue(Arrays.equals(names, addressResult.getNames()));
assertEquals(pronunciation, addressResult.getPronunciation());
- assertEquals(address, addressResult.getAddress());
+ assertTrue(Arrays.equals(addresses, addressResult.getAddresses()));
assertTrue(Arrays.equals(emails, addressResult.getEmails()));
assertTrue(Arrays.equals(phoneNumbers, addressResult.getPhoneNumbers()));
assertEquals(org, addressResult.getOrg());