package com.khmelenko.lab.varis.task; import com.khmelenko.lab.varis.network.retrofit.github.GitHubRestClient; import com.khmelenko.lab.varis.network.retrofit.raw.RawClient; import com.khmelenko.lab.varis.network.retrofit.travis.TravisRestClient; import de.greenrobot.event.EventBus; /** * Defines an interface for Task * * @author Dmytro Khmelenko */ public abstract class Task<T> { private TaskHelper mTaskHelper; /** * Starts executing task * * @return Execution result */ public abstract T execute() throws TaskException; /** * Will be called in case of task success * * @param result Task result */ public abstract void onSuccess(T result); /** * Will be called in case of task error * * @param error Task error */ public abstract void onFail(TaskError error); /** * Sets task helper * * @param helper Task helper */ public void setHelper(TaskHelper helper) { mTaskHelper = helper; } /** * Gets rest client instance * * @return REST client */ protected TravisRestClient travisClient() { return mTaskHelper.getTravisRestClient(); } /** * Gets rest client instance * * @return REST client */ protected GitHubRestClient gitHubClient() { return mTaskHelper.getGitHubRestClient(); } /** * Gets rest client instance * * @return REST client */ protected RawClient rawClient() { return mTaskHelper.getRawClient(); } /** * Gets event bus instance * * @return Event bus */ protected EventBus eventBus() { return mTaskHelper.getEventBus(); } }