package com.jiuqi.njt.service;
import java.util.List;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import com.jiuqi.lbsinterface.bean.UserPositionBean;
import com.jiuqi.lbsinterface.manager.IPositionManager;
import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext;
import com.jiuqi.mobile.nigo.comeclose.ws.client.LBSClientContext;
import com.jiuqi.njt.data.MyApp;
import com.jiuqi.njt.data.OptsharepreInterface;
import com.jiuqi.njt.register.city.DataUserPositionBean;
import com.jiuqi.njt.register.city.TaskReturnResult;
import com.jiuqi.njt.register.city.UplocationUtil;
import com.jiuqi.njt.register.city.UserPositionDBUtil;
import com.jiuqi.njt.util.Constants;
import com.jiuqi.njt.util.login.AutoLoginUtil;
/**
* 上报位置异步类
* @author joe
*
*/
public class Uptask extends AsyncTask<Void, Void, Void> {
private Context context;
private String TAG = this.getClass().getName();
private UserPositionBean positionbean;
private boolean needRepeat;
private TaskReturnResult taskReturnResult =new TaskReturnResult();
private MyApp application ;
private UserPositionDBUtil userPositionDBUtil;
private List<DataUserPositionBean> userPositionBeanList;
private boolean isRetransmission;
/**
* 上报位置异步类
* @param context
* @param positionbean
*/
public Uptask(Context context, UserPositionBean positionbean) {
super();
this.context = context;
this.positionbean = positionbean;
application = (MyApp) context.getApplicationContext();
userPositionDBUtil = new UserPositionDBUtil(context);
}
public Uptask(Context context,
boolean isRetransmission) {
super();
this.context = context;
this.isRetransmission = isRetransmission;
application = (MyApp) context.getApplicationContext();
userPositionDBUtil = new UserPositionDBUtil(context);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
if(isRetransmission){
userPositionBeanList = userPositionDBUtil.queryAllUserPosition();
}
}
@Override
protected Void doInBackground(Void... params) {
try {
LBSClientContext clientContext = application.getLbsClientContext();
if(clientContext==null){
clientContext = LBSClientContext.getClientContext(Constants.LBS_SERVER_URL);
application.setLbsClientContext(clientContext);
}
IPositionManager manager = clientContext.getManager(IPositionManager.class);
if(isRetransmission){
UserPositionBean[] userGPSs=new UserPositionBean[userPositionBeanList.size()];;
manager.add(userGPSs);
userPositionDBUtil.deleteUserPositionList(userPositionBeanList);
}else{
manager.add(positionbean);
}
taskReturnResult.setSuccess(true);
} catch (Exception e) {
e.printStackTrace();
if (null != e.getMessage()) {
taskReturnResult.setMessage(e.getMessage());
} else {
taskReturnResult.setMessage("服务端异常,请稍后重试");
}
// needRepeat = new AutoLoginUtil(context, e).getNewSession();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Log.e(TAG, taskReturnResult.getMessage());
// if(needRepeat){//如果重新获取Session后,需要重新执行一次异步类
// new Uptask(context,positionbean).execute();
// }else{
if(!isRetransmission&&!taskReturnResult.isSuccess()){//如果上报失败就把上报失败的数据保存到数据库中
DataUserPositionBean dataUserPositionBean = UplocationUtil.convertUserPositionBean(positionbean);
userPositionDBUtil.addUserPosition(dataUserPositionBean);
}
// }
}
}