* @author dswitkin@google.com (Daniel Switkin)
*/
public final class AddressBookResultHandler extends ResultHandler {
- private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
+
+ private static final DateFormat[] DATE_FORMATS = {
+ new SimpleDateFormat("yyyyMMdd"),
+ new SimpleDateFormat("yyyyMMdd'T'HHmmss"),
+ new SimpleDateFormat("yyyy-MM-dd"),
+ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"),
+ };
private final boolean[] fields;
private int buttonCount;
@Override
public void handleButtonPress(int index) {
AddressBookParsedResult addressResult = (AddressBookParsedResult) getResult();
+ String[] addresses = addressResult.getAddresses();
+ String address1 = addresses == null || addresses.length < 1 ? null : addresses[0];
int action = mapIndexToAction(index);
switch (action) {
case 0:
addContact(addressResult.getNames(), addressResult.getPhoneNumbers(),
addressResult.getEmails(), addressResult.getNote(),
- addressResult.getAddress(), addressResult.getOrg(),
+ address1, addressResult.getOrg(),
addressResult.getTitle());
break;
case 1:
String[] names = addressResult.getNames();
String title = names != null ? names[0] : null;
- searchMap(addressResult.getAddress(), title);
+ searchMap(address1, title);
break;
case 2:
dialPhone(addressResult.getPhoneNumbers()[0]);
}
}
+ private static Date parseDate(String s) {
+ for (DateFormat currentFomat : DATE_FORMATS) {
+ synchronized (currentFomat) {
+ currentFomat.setLenient(false);
+ Date result = currentFomat.parse(s, new ParsePosition(0));
+ if (result != null) {
+ return result;
+ }
+ }
+ }
+ return null;
+ }
+
// Overriden so we can hyphenate phone numbers, format birthdays, and bold the name.
@Override
public CharSequence getDisplayContents() {
ParsedResult.maybeAppend(result.getTitle(), contents);
ParsedResult.maybeAppend(result.getOrg(), contents);
- ParsedResult.maybeAppend(result.getAddress(), contents);
+ ParsedResult.maybeAppend(result.getAddresses(), contents);
String[] numbers = result.getPhoneNumbers();
if (numbers != null) {
for (String number : numbers) {
String birthday = result.getBirthday();
if (birthday != null && birthday.length() > 0) {
- Date date;
- synchronized (DATE_FORMAT) {
- date = DATE_FORMAT.parse(birthday, new ParsePosition(0));
+ Date date = parseDate(birthday);
+ if (date != null) {
+ ParsedResult.maybeAppend(DateFormat.getDateInstance().format(date.getTime()), contents);
}
- ParsedResult.maybeAppend(DateFormat.getDateInstance().format(date.getTime()), contents);
}
ParsedResult.maybeAppend(result.getNote(), contents);