package com.sunlightlabs.android.congress.tasks;
import android.os.AsyncTask;
import android.util.Log;
import com.sunlightlabs.android.congress.utils.Utils;
import com.sunlightlabs.congress.models.CongressException;
import com.sunlightlabs.congress.models.District;
import com.sunlightlabs.congress.models.Legislator;
import com.sunlightlabs.congress.services.DistrictService;
public class LoadDistrictTask extends AsyncTask<Legislator, Void, District> {
private LoadsDistrict fragment;
private CongressException exception;
public LoadDistrictTask(LoadsDistrict fragment) {
this.fragment = fragment;
// doesn't need to setup a Sunlight API key
}
@Override
protected District doInBackground(Legislator... params) {
Legislator legislator = params[0];
try {
District district = DistrictService.find(legislator);
if (district == null)
this.exception = new CongressException("Can't load district.");
return district;
} catch (CongressException exception) {
Log.w(Utils.TAG, "Could not load the district for legislator " + legislator.bioguide_id);
this.exception = exception;
return null;
}
}
@Override
protected void onPostExecute(District district) {
if (district == null) // guaranteed to be an exception stored
fragment.onLoadDistrict(this.exception);
else
fragment.onLoadDistrict(district);
}
public interface LoadsDistrict {
void onLoadDistrict(District district);
void onLoadDistrict(CongressException exception);
}
}