package com.sunlightlabs.android.congress.notifications.subscribers; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Intent; import android.util.Log; import com.sunlightlabs.android.congress.fragments.BillListFragment; import com.sunlightlabs.android.congress.notifications.Subscriber; import com.sunlightlabs.android.congress.notifications.Subscription; import com.sunlightlabs.android.congress.utils.Utils; import com.sunlightlabs.congress.models.Bill; import com.sunlightlabs.congress.models.CongressException; import com.sunlightlabs.congress.services.BillService; public class BillsSearchSubscriber extends Subscriber { @Override public String decodeId(Object result) { return ((Bill) result).id; } @Override public List<?> fetchUpdates(Subscription subscription) { Utils.setupAPI(context); String query = subscription.data; try { Map<String,String> params = new HashMap<String,String>(); params.put("order", "introduced_on"); return BillService.search(query, params, 1, BillListFragment.PER_PAGE); } catch (CongressException e) { Log.w(Utils.TAG, "Could not fetch the latest bill search results for " + subscription, e); return null; } } @Override public String notificationMessage(Subscription subscription, int results) { if (results == BillListFragment.PER_PAGE) return results + " or more new bills for search \"" + subscription.data + "\"."; else if (results > 1) return results + " new bills for search \"" + subscription.data + "\"."; else return results + " new bill for search \"" + subscription.data + "\"."; } @Override public Intent notificationIntent(Subscription subscription) { return new Intent().setClassName("com.sunlightlabs.android.congress", "com.sunlightlabs.android.congress.BillSearch") .putExtra("query", subscription.data) .putExtra("tab", "bills_recent"); } @Override public String subscriptionName(Subscription subscription) { return "Bills matching \"" + subscription.data + "\""; } }