package com.circlegate.liban.task; import com.circlegate.liban.base.CommonClasses.IGlobalContext; import com.circlegate.liban.task.TaskCommon.TaskCache; import com.circlegate.liban.task.TaskErrors.ITaskError; import android.os.Bundle; public class TaskInterfaces { public interface ITaskContext extends IGlobalContext { ITaskExecutor getTaskExecutor(); TaskCache getTaskCache(); String getCurrentLangAbbrev(); String getCurrentCountryAbbrev(); } public interface ITaskParam { static String DEFAULT_SERIAL_EXECUTION_KEY = ""; // static int TASK_CLASS_ID_CPP = 1; // static int TASK_CLASS_ID_WS_GOOGLE = 2; // static int TASK_CLASS_ID_WS_CIRCLEGATE = 3; // static int TASK_CLASS_ID_WS_CIRCLEGATE_DWN = 4; // static int TASK_CLASS_ID_GOOGLE_BILLING = 5; // static int TASK_CLASS_ID_CD_IPWS = 6; // static int TASK_CLASS_ID_CD_CMN = 7; String getSerialExecutionKey(ITaskContext context); boolean isExecutionInParallelForbidden(ITaskContext context); ITaskResult createResult(ITaskContext context, ITask task); ITaskResult createErrorResult(ITaskContext context, ITask task, ITaskError error); } public interface ITaskResult { ITaskParam getParam(); boolean isValidResult(); boolean isCacheableResult(); boolean canUseCachedResultNow(); ITaskError getError(); } public interface ITaskResultListener { void onTaskCompleted(String id, ITaskResult result, Bundle bundle); } public interface ITaskProgressListener { static int MAX_PROGRESS = 10000; static int INDETERMINATE_PROGRESS = -2; /** * @param progress - default -1, jinak hodnoty 0 - MAX_PROGRESS */ void onTaskProgress(String id, ITaskParam param, Bundle bundle, int progress, String progressState); } public interface ITask { public static String PROCESS_BUNDLE_FILE_SIZE = "PROCESS_BUNDLE_FILE_SIZE"; // Pouzito pri stahovani... String getId(); ITaskParam getParam(); Bundle getBundle(); Object putProcessObj(String key, Object obj); // vraci pripadne puvodni hodnotu <T> T getProcessObj(String key); boolean isCanceled(); int getSkipCount(); int getProgress(); String getProgressState(); ITaskResultListener getListener(); boolean canCacheReferenceToParamResult(); // povolit jenom v pripade, kdy nemuze dochazek k memory leakum! (reference na aktivity/fragmenty) void onTaskProgress(int progress, String progressState); } public interface ITaskExecutor { void executeTask(String id, ITaskParam param, Bundle bundle, boolean canCacheReferenceToParamResult, ITaskResultListener listener, ITaskProgressListener optProgressListener); boolean containsTask(String id, ITaskResultListener listener); boolean containsAnyTaskByResultHandler(ITaskResultListener listener); ITask getTask(String id, ITaskResultListener listener); boolean cancelTask(String id, ITaskResultListener listener); void cancelTasksByResultHandler(ITaskResultListener listener); boolean addSkipCount(String id, ITaskResultListener listener, int skipCount); } }