package com.jiuqi.njt.register; import java.util.List; import com.jiuqi.mobile.nigo.comeclose.bean.base.RoleCode; import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean; import com.jiuqi.mobile.nigo.comeclose.exception.LoginException; import com.jiuqi.mobile.nigo.comeclose.manager.base.IRegistManager; import com.jiuqi.mobile.nigo.comeclose.manager.base.IUserRolesManager; import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext; import com.jiuqi.njt.data.MyApp; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.RepairUtils; import com.jiuqi.njt.util.UIUtil; import android.app.Dialog; import android.content.Context; import android.os.AsyncTask; /** * 保存用户选择角色信息异步类 * * @author joe * */ public class SaveUserRolesTask extends AsyncTask<Void, Void, String> { private Context context; private List<RoleCode> roleCodeList; private String sessionId; private AllTaskInterface allTaskInterface; private boolean showDialog; private MyApp application; private Dialog pd; /** * * @param context * * @param roleCodeList * 需要保存的角色集合 * @param sessionId * 注册返回的SessionID * @param allTaskInterface * 返回数据接口 * @param showDialog * 是否显示提示框 */ public SaveUserRolesTask(Context context, List<RoleCode> roleCodeList,String sessionId, AllTaskInterface allTaskInterface,boolean showDialog) { super(); this.context = context; this.roleCodeList = roleCodeList; this.sessionId = sessionId; this.allTaskInterface = allTaskInterface; this.showDialog = showDialog; application = (MyApp) context.getApplicationContext(); } @Override protected void onPreExecute() { if(showDialog){ pd = RepairUtils.myShowDialog(context, 4); } super.onPreExecute(); } @Override protected String doInBackground(Void... params) { ClientContext context; String result = ""; try { context = application.getClientContext(); if (null == context) { context = ClientContext.getClientContext(Constants.SERVER_URL, Constants.ANONYMOUS, Constants.ANONYMOUS); application.setClientContext(context); } UserBean userBean = context.getUser(); IUserRolesManager manager = context.getManager(IUserRolesManager.class); String[] roles = new String[ roleCodeList.size()]; for (int i = 0; i < roleCodeList.size(); i++) { roles[i]= roleCodeList.get(i).getCode()+""; } result = manager.createUserRoles(roles, userBean, context.getSessionID()); ClientContext clientContext =ClientContext.getClientContext(Constants.SERVER_URL, context.getSessionID()); application.setClientContext(clientContext); IRegistManager registerManager = context.getManager(IRegistManager.class); result = registerManager.decideRegistAndLogin(userBean.getAccount(),context.getSessionID()); } catch (LoginException e) { e.printStackTrace(); result = e.getMessage(); result = "请稍后重试"; } catch (Exception e) { e.printStackTrace(); result = "请稍后重试"; } return result; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); RepairUtils.myRemoveDialog(pd); if ("请稍后重试".equals(result)) { UIUtil.showMsg(context, result); } allTaskInterface.taskFinishReturn(result); } }