package com.wyp.materialqqlite.qqclient.task;
import java.util.ArrayList;
import org.apache.http.client.HttpClient;
import com.wyp.materialqqlite.qqclient.protocol.QQProtocol;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.GetQQNumResult;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.QQCallBackMsg;
public class QQNumTask extends HttpTask {
public static final int OP_TYPE_BUDDY = 0; // 获取好友号码
public static final int OP_TYPE_GROUP = 1; // 获取群号码
public static final int OP_TYPE_SESS = 2; // 获取群成员号码
private ArrayList<QQNum_Param> m_arrParam;
class QQNum_Param {
int nType; // 操作类型
int nGroupCode; // 群代码
int nQQUin; // 好友Uin或者群成员Uin
};
public QQNumTask(String strTaskName, HttpClient httpClient) {
super(strTaskName, httpClient);
// TODO Auto-generated constructor stub
m_arrParam = new ArrayList<QQNum_Param>();
}
public boolean getBuddyNum(int nQQUin) {
QQNum_Param param = new QQNum_Param();
param.nType = OP_TYPE_BUDDY;
param.nGroupCode = 0;
param.nQQUin = nQQUin;
m_arrParam.add(param);
return true;
}
public boolean getGroupNum(int nGroupCode) {
QQNum_Param param = new QQNum_Param();
param.nType = OP_TYPE_GROUP;
param.nGroupCode = nGroupCode;
param.nQQUin = 0;
m_arrParam.add(param);
return true;
}
public boolean getGMemberNum(int nGroupCode, int nQQUin) {
QQNum_Param param = new QQNum_Param();
param.nType = OP_TYPE_SESS;
param.nGroupCode = nGroupCode;
param.nQQUin = nQQUin;
m_arrParam.add(param);
return true;
}
public boolean addParam(int nType, int nGroupCode, int nQQUin) {
QQNum_Param param = new QQNum_Param();
param.nType = nType;
param.nGroupCode = nGroupCode;
param.nQQUin = nQQUin;
m_arrParam.add(param);
return true;
}
public void delAllItems() {
m_arrParam.clear();
}
@Override
public void doTask() {
if (null == m_httpClient || null == m_QQUser) {
delAllItems();
return;
}
try {
for (int i = 0; i < m_arrParam.size(); i++) {
QQNum_Param param = m_arrParam.get(i);
GetQQNumResult result = new GetQQNumResult();
if (OP_TYPE_BUDDY == param.nType) { // 获取好友号码
boolean bRet = QQProtocol.getQQNum(m_httpClient,
true, param.nQQUin, m_QQUser.m_LoginResult2.m_strVfWebQq, result);
if (m_bCancel) {
delAllItems();
return;
}
if (!bRet || result.m_nRetCode != 0)
result = null;
sendMessage(QQCallBackMsg.UPDATE_BUDDY_NUMBER, 0, 0, result);
}
else if (OP_TYPE_SESS == param.nType) { // 获取群成员号码
boolean bRet = QQProtocol.getQQNum(m_httpClient, true, param.nQQUin,
m_QQUser.m_LoginResult2.m_strVfWebQq, result);
if (m_bCancel) {
delAllItems();
return;
}
if (!bRet || result.m_nRetCode != 0)
result = null;
sendMessage(QQCallBackMsg.UPDATE_GMEMBER_NUMBER, param.nGroupCode, 0, result);
}
else if (OP_TYPE_GROUP == param.nType) { // 获取群号码
boolean bRet = QQProtocol.getQQNum(m_httpClient, false, param.nGroupCode,
m_QQUser.m_LoginResult2.m_strVfWebQq, result);
if (m_bCancel) {
delAllItems();
return;
}
if (!bRet || result.m_nRetCode != 0)
result = null;
sendMessage(QQCallBackMsg.UPDATE_GROUP_NUMBER, param.nGroupCode, 0, result);
}
}
delAllItems();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}