package com.partynetwork.dataprovider;
import com.partynetwork.dataprovider.json.CommonRequest;
import com.partynetwork.dataprovider.json.JsonNetwork;
import com.partynetwork.dataprovider.json.JsonResponse;
import com.partynetwork.dataprovider.json.NetworkEntity;
import com.partynetwork.dataprovider.util.GPS;
import android.content.Context;
/**
*/
public class DataProvider {
/** 成功 */
public static final int SUCCESS = 1;
/** 失败 */
public static final int FAILED = 0;
/** 未知 */
public static final int UNREGIST = -1;
/**
* 异步处理监听的钩子接口
* */
public interface AysTrigger {
// 正在异步中
public void onAsying();
// 异步请求完了
public void onAsyed();
}
/**
* 数据提供模块对象
* */
private static DataProvider mDp;
// 钩子对象
private AysTrigger mTrigger;
/**
* 上下文对象
* */
private Context mContext;
/** json 数据回调接口 */
public interface IJsonResultListener {
/**
* 请求开始
*/
public void onNetworkRequest();
/**
* 请求成功
*
* @param response
* 成功的消息体
*/
public void onResultSuccess(NetworkEntity entity);
/**
* 请求失败
*
* @param resutlt
* 失败说明
*/
public void onResultFail(String result);
}
/** 构造函数 */
public void DataProviderContext(Context paramContext) {
this.mContext = paramContext;
}
/**
* 获取gps信息
*
* @param listener
*/
public void getLocation(GPS.OnGpsChangeListener listener) {
GPS gps = GPS.instance(listener);
gps.startGPS();
}
/**
* 获取数据提供对象
* **/
public static synchronized DataProvider getInstance() {
if (mDp == null) {
mDp = new DataProvider();
}
return mDp;
}
/**
* json解析
*
* @param CommonRequest
* 请求数据包(多态利用必要)
* @return int JsonResponse.RESULT_SUCCESS 异步回调等待必要
* @since 2011-04-20
* */
public int getJsonFromNetwork(CommonRequest paramRequest,
IJsonResultListener paramListener) {
if (null == paramRequest) {
return JsonResponse.RESULT_FAILED;
}
if (null != mTrigger) {
// 异步处理开始
// mTrigger.onAsying();
}
paramListener.onNetworkRequest();
JsonNetwork jnt = new JsonNetwork(mContext, paramListener);
jnt.setTrigger(mTrigger);
jnt.execute(paramRequest);
return JsonResponse.RESULT_SUCCESS;
}
/**
* 析构函数
*
* @attention 程序结束时调用
* @type 同期函数
* */
public void finish() {
if (null != mDp) {
mDp = null;
}
}
/**
* 注册钩子监听对象
* */
public void setTriggerListener(AysTrigger paramTrigger) {
this.mTrigger = paramTrigger;
}
}