package com.hx.hxchat.holder.protocol; import java.util.ArrayList; import java.util.List; import android.os.AsyncTask; import com.easemob.chat.EMGroup; import com.easemob.chat.EMGroupManager; import com.easemob.exceptions.EaseMobException; import com.hx.hxchat.activity.GroupsActivity; import com.hx.hxchat.db.GroupsDao; import com.hx.hxchat.domain.GroupInfo; import com.hx.hxchat.domain.User; import com.hx.hxchat.utils.UserUtils; import com.mgw.member.manager.BaseApplication; import com.mgw.member.manager.ThreadManager; import com.mgw.member.uitls.LogUtils; import com.mgw.member.uitls.StringUtils; import com.mgw.member.uitls.UIUtils; /** * 数据加载器 * (只负责数据加载,逻辑和视图无关) * @author Administrator * */ public class GroupsListProtocol extends BaseProtocol<List<GroupInfo>> { private String mPackageName = ""; public void setPackageName(String packageName) { mPackageName = packageName; } @Override protected String getKey() { return "detail"; } @Override protected String getParames() { if (StringUtils.isEmpty(mPackageName)) { return super.getParames(); } else { return "&packageName=" + mPackageName; } } @Override protected List<GroupInfo> parseFromJson(String json) { // TODO Auto-generated method stub return null; } @Override public List<GroupInfo> load(int index) { List<EMGroup> grouplist = EMGroupManager.getInstance().getAllGroups(); final List<GroupInfo> GroupInfos = new ArrayList<GroupInfo>(); GroupInfos.clear(); GroupInfos.add(new GroupInfo("new")); for (EMGroup dd : grouplist) { GroupInfo groupInfo = new GroupInfo(dd.getGroupId()); groupInfo.setAffiliationsCount(dd.getAffiliationsCount()); groupInfo.setDescription(dd.getDescription()); groupInfo.setEid(dd.getEid()); // groupInfo.setEmGroup(dd.get)); groupInfo.setGroupId(dd.getGroupId()); groupInfo.setGroupName(dd.getGroupName()); groupInfo.setIsPublic(dd.isPublic()); groupInfo.setLastModifiedTime(dd.getLastModifiedTime()); groupInfo.setMaxUsers(dd.getMaxUsers()); groupInfo.setMembers(dd.getMembers()); groupInfo.setMsgBlocked(dd.getMsgBlocked()); groupInfo.setNick(dd.getNick()); groupInfo.setOwner(dd.getOwner()); groupInfo.setPublic(dd.isPublic()); groupInfo.setUsername(dd.getUsername()); String gropsIcon = BaseApplication.getApplication().GetGroupsDao().getGropsIcon(groupInfo.getGroupId()); groupInfo.setGroupIcon(gropsIcon == null ? null : gropsIcon); GroupInfos.add(groupInfo); } Runnable runnable = new Runnable() { @Override public void run() { // TODO Auto-generated method stub for (GroupInfo dd : GroupInfos) { LogUtils.i(GroupsActivity.TAG, "GroupInfo members="+dd.getMembers().toString()+",GroupInfoname="+dd.getGroupName()+",GroupInfoicon="+dd.getGroupIcon()); if (dd.getGroupIcon() == null&&!dd.getGroupId().equals("new")) { EMGroup groupFromServer; try { groupFromServer = EMGroupManager.getInstance().getGroupFromServer(dd.getGroupId()); EMGroupManager.getInstance().createOrUpdateLocalGroup(groupFromServer); } catch (EaseMobException e) { e.printStackTrace(); } UserUtils.setGroupICon(dd); } } // notice refresh } }; ThreadManager.getLongPool().execute(runnable); return GroupInfos; } }