/** * Copyright 2009 Joe LaPenna */ package com.joelapenna.foursquared.util; import com.joelapenna.foursquare.types.Checkin; import com.joelapenna.foursquare.types.User; import com.joelapenna.foursquare.types.Venue; import android.text.TextUtils; import android.text.format.DateUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * @author Joe LaPenna (joe@joelapenna.com) * @author Mark Wyszomierski (markww@gmail.com) * -Added date formats for today/yesterday/older contexts. */ public class StringFormatters { public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat( "EEE, dd MMM yy HH:mm:ss Z"); /** Should look like "9:09 AM". */ public static final SimpleDateFormat DATE_FORMAT_TODAY = new SimpleDateFormat( "h:mm a"); /** Should look like "Sun 1:56 PM". */ public static final SimpleDateFormat DATE_FORMAT_YESTERDAY = new SimpleDateFormat( "E h:mm a"); /** Should look like "Sat Mar 20". */ public static final SimpleDateFormat DATE_FORMAT_OLDER = new SimpleDateFormat( "E MMM d"); public static String getVenueLocationCrossStreetOrCity(Venue venue) { if (!TextUtils.isEmpty(venue.getCrossstreet())) { return "(" + venue.getCrossstreet() + ")"; } else if (!TextUtils.isEmpty(venue.getCity()) && !TextUtils.isEmpty(venue.getState()) && !TextUtils.isEmpty(venue.getZip())) { return venue.getCity() + ", " + venue.getState() + " " + venue.getZip(); } else { return null; } } public static String getCheckinMessageLine1(Checkin checkin, boolean displayAtVenue) { if (checkin.getDisplay() != null) { return checkin.getDisplay(); } else { StringBuilder sb = new StringBuilder(); sb.append(getUserAbbreviatedName(checkin.getUser())); if (checkin.getVenue() != null && displayAtVenue) { sb.append(" @ " + checkin.getVenue().getName()); } return sb.toString(); } } public static String getCheckinMessageLine2(Checkin checkin) { if (TextUtils.isEmpty(checkin.getShout()) == false) { return checkin.getShout(); } else { // No shout, show address instead. if (checkin.getVenue() != null && checkin.getVenue().getAddress() != null) { String address = checkin.getVenue().getAddress(); if (checkin.getVenue().getCrossstreet() != null && checkin.getVenue().getCrossstreet().length() > 0) { address += " (" + checkin.getVenue().getCrossstreet() + ")"; } return address; } else { return ""; } } } public static String getCheckinMessageLine3(Checkin checkin) { if (!TextUtils.isEmpty(checkin.getCreated())) { try { return getTodayTimeString(checkin.getCreated()); } catch (Exception ex) { return checkin.getCreated(); } } else { return ""; } } public static String getUserFullName(User user) { StringBuffer sb = new StringBuffer(); sb.append(user.getFirstname()); String lastName = user.getLastname(); if (lastName != null && lastName.length() > 0) { sb.append(" "); sb.append(lastName); } return sb.toString(); } public static String getUserAbbreviatedName(User user) { StringBuffer sb = new StringBuffer(); sb.append(user.getFirstname()); String lastName = user.getLastname(); if (lastName != null && lastName.length() > 0) { sb.append(" "); sb.append(lastName.substring(0, 1) + "."); } return sb.toString(); } public static CharSequence getRelativeTimeSpanString(String created) { try { return DateUtils.getRelativeTimeSpanString(DATE_FORMAT.parse(created).getTime(), new Date().getTime(), DateUtils.MINUTE_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE); } catch (ParseException e) { return created; } } /** * Returns a format that will look like: "9:09 AM". */ public static String getTodayTimeString(String created) { try { return DATE_FORMAT_TODAY.format(DATE_FORMAT.parse(created)); } catch (ParseException e) { return created; } } /** * Returns a format that will look like: "Sun 1:56 PM". */ public static String getYesterdayTimeString(String created) { try { return DATE_FORMAT_YESTERDAY.format(DATE_FORMAT.parse(created)); } catch (ParseException e) { return created; } } /** * Returns a format that will look like: "Sat Mar 20". */ public static String getOlderTimeString(String created) { try { return DATE_FORMAT_OLDER.format(DATE_FORMAT.parse(created)); } catch (ParseException e) { return created; } } }