package com.arialyy.frame.module;
import android.content.Context;
import android.text.TextUtils;
import android.util.SparseIntArray;
import com.arialyy.frame.core.AbsActivity;
import com.arialyy.frame.module.inf.ModuleListener;
import com.arialyy.frame.util.ObjUtil;
import com.arialyy.frame.util.show.L;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* Created by AriaLyy on 2015/2/3.
* 抽象的module
*/
public class AbsModule {
public String TAG = "";
private Context mContext;
private ModuleListener mModuleListener;
private OnCallback mCallback;
public interface OnCallback {
public void onSuccess(int result, Object success);
public void onError(int result, Object error);
}
public AbsModule(Context context) {
mContext = context;
init();
}
/**
* 初始化一些东西
*/
private void init() {
String className = getClass().getName();
String arrays[] = className.split("\\.");
TAG = arrays[arrays.length - 1];
}
/**
* 设置Module监听
*
* @param moduleListener Module监听
*/
public void setModuleListener(ModuleListener moduleListener) {
if (moduleListener == null)
throw new NullPointerException("ModuleListener不能为空");
this.mModuleListener = moduleListener;
}
/**
* 成功的回调
*/
private void successCallback(int key, Object obj) {
if (mCallback == null) {
L.e(TAG, "OnCallback 为 null");
return;
}
mCallback.onSuccess(key, obj);
}
/**
* 失败的回调
*/
public void errorCallback(int key, Object obj) {
if (mCallback == null) {
L.e(TAG, "OnCallback 为 null");
return;
}
mCallback.onError(key, obj);
}
/**
* 获取Context
*
* @return Context
*/
public Context getContext() {
return mContext;
}
/**
* 设置Module回调
*
* @param callback Module 回调
*/
public void setCallback(OnCallback callback) {
mCallback = callback;
}
/**
* 统一的回调,如果已经设置了OnCallback,则使用OnCallback;
* 否则将使用dataCallback,{@link AbsActivity#dataCallback(int, Object)}
*
* @param result 返回码
* @param data 回调数据
*/
protected void callback(final int result, final Object data) {
if (mCallback != null) {
successCallback(result, data);
return;
}
mModuleListener.callback(result, data);
}
/**
* module回调
*
* @param method 回调的方法名
*/
@Deprecated
protected void callback(String method) {
mModuleListener.callback(method);
}
/**
* 带参数的module回调
*
* @param method 回调的方法名
* @param dataClassType 回调数据类型
* @param data 回调数据
*/
@Deprecated
protected void callback(String method, Class<?> dataClassType, Object data) {
mModuleListener.callback(method, dataClassType, data);
}
}