package com.sunlightlabs.android.congress.notifications; import java.util.List; import android.content.Context; import android.content.Intent; import com.sunlightlabs.congress.models.Bill; import com.sunlightlabs.congress.models.Legislator; public abstract class Subscriber { public Context context; public Subscriber() {} // must return results in order of most recent first public abstract List<?> fetchUpdates(Subscription subscription); // must be prepared to receive an object of the same type that's in the List<?> returned by fetchUpdates public abstract String decodeId(Object result); // notification formatting methods public String notificationTicker(Subscription subscription) { return "Updates for " + notificationTitle(subscription); } public String notificationTitle(Subscription subscription) { return subscription.name; } public abstract String notificationMessage(Subscription subscription, int results); public abstract Intent notificationIntent(Subscription subscription); // for listing in the subscription manager public abstract String subscriptionName(Subscription subscription); // utility methods public static String notificationName(Bill bill) { if (bill.short_title != null && !(bill.short_title.equals(""))) return Bill.formatCode(bill.id) + " - " + bill.short_title; else return Bill.formatCode(bill.id); } public static String notificationName(Legislator legislator) { return legislator.titledName(); } }