package com.sunlightlabs.android.congress.tasks;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v4.app.Fragment;
import android.util.Log;
import com.sunlightlabs.android.congress.utils.FragmentUtils;
import com.sunlightlabs.android.congress.utils.Utils;
import com.sunlightlabs.congress.models.CongressException;
import com.sunlightlabs.congress.models.Legislator;
import com.sunlightlabs.congress.services.LegislatorService;
public class LoadLegislatorTask extends AsyncTask<String, Void, Legislator> {
private Context context;
private Fragment fragment;
private CongressException exception;
public LoadLegislatorTask(Context context) {
this.context = context;
Utils.setupAPI(context);
}
public void onScreenLoad(Context context) {
this.context = context;
}
public LoadLegislatorTask(Fragment fragment) {
this.fragment = fragment;
FragmentUtils.setupAPI(fragment);
}
@Override
protected Legislator doInBackground(String... params) {
try {
Legislator legislator = LegislatorService.find(params[0]);
if (legislator == null)
this.exception = new CongressException("Can't load legislator with this ID from Sunlight.");
return legislator;
} catch (CongressException exception) {
Log.w(Utils.TAG, "Could not load the legislator with id " + params[0] + " from Sunlight");
this.exception = exception;
return null;
}
}
@Override
protected void onPostExecute(Legislator legislator) {
LoadsLegislator loader = (LoadsLegislator) (context != null ? context : fragment);
if (legislator == null) // guaranteed to be an exception stored
loader.onLoadLegislator(this.exception);
else
loader.onLoadLegislator(legislator);
}
public interface LoadsLegislator {
void onLoadLegislator(Legislator legislator);
void onLoadLegislator(CongressException exception);
}
}