package com.sunlightlabs.android.congress.tasks; import android.content.Context; import android.os.AsyncTask; import android.support.v4.app.Fragment; 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 LoadBillTask extends AsyncTask<String,Void,Bill> { private Context context; private Fragment fragment; private CongressException exception; private String billId; public LoadBillTask(Context context, String billId) { this.context = context; this.billId = billId; Utils.setupAPI(context); } public LoadBillTask(Fragment fragment, String billId) { this.fragment = fragment; this.billId = billId; Utils.setupAPI(fragment.getActivity()); } public void onScreenLoad(Context context) { this.context = context; } @Override public Bill doInBackground(String... sections) { try { return BillService.find(billId, sections); } catch (CongressException exception) { this.exception = exception; return null; } } @Override public void onPostExecute(Bill bill) { LoadsBill loader = (LoadsBill) (context != null ? context : fragment); if (exception != null && bill == null) loader.onLoadBill(exception); else loader.onLoadBill(bill); } public interface LoadsBill { public void onLoadBill(Bill bill); public void onLoadBill(CongressException exception); } }