package ua.kpi.ecampus.loader;
import android.content.AsyncTaskLoader;
import android.content.Context;
import ua.kpi.ecampus.api.response.BaseResponse;
import ua.kpi.ecampus.api.response.RequestResult;
import java.io.IOException;
/**
* Base loader manages request and response operations.
* <p>
* Created by Administrator on 09.02.2016.
*/
public abstract class BaseLoader extends AsyncTaskLoader<BaseResponse> {
public BaseLoader(Context context) {
super(context);
}
@Override
protected void onStartLoading() {
super.onStartLoading();
forceLoad();
}
@Override
public BaseResponse loadInBackground() {
try {
BaseResponse response = apiCall();
if (response.getRequestResult() == RequestResult.OK) {
response.save(getContext());
onSuccess();
} else {
onError();
}
return response;
} catch (IOException e) {
onError();
return new BaseResponse();
}
}
protected void onSuccess() {
}
protected void onError() {
}
protected abstract BaseResponse apiCall() throws IOException;
}