package com.kth.baasio.callback;
import com.kth.baasio.entity.push.BaasioDevice;
import com.kth.baasio.exception.BaasioException;
import org.springframework.web.client.HttpClientErrorException;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Looper;
public abstract class BaasioDeviceAsyncTask extends AsyncTask<Void, Void, BaasioDevice> {
BaasioDeviceCallback mCallback;
private Handler mHandler = new Handler(Looper.getMainLooper());
public BaasioDeviceAsyncTask(BaasioDeviceCallback callback) {
this.mCallback = callback;
}
private void onException(final BaasioException e) {
mHandler.post(new Runnable() {
@Override
public void run() {
if (mCallback != null) {
mCallback.onException(e);
}
}
});
}
@Override
protected BaasioDevice doInBackground(Void... v) {
try {
return doTask();
} catch (HttpClientErrorException e) {
onException(new BaasioException(e.getStatusCode(), e.getResponseBodyAsString()));
} catch (BaasioException e) {
onException(e);
} catch (Exception e) {
onException(new BaasioException(e));
}
return null;
}
public abstract BaasioDevice doTask() throws BaasioException;
@Override
protected void onPostExecute(BaasioDevice response) {
if (mCallback != null && response != null) {
mCallback.onResponse(response);
}
}
}