package com.hx.hxchat.holder.protocol; import java.util.ArrayList; import java.util.List; import com.easemob.chat.EMGroup; import com.easemob.chat.EMGroupInfo; import com.easemob.chat.EMGroupManager; import com.easemob.exceptions.EaseMobException; import com.hx.hxchat.activity.GroupsActivity; import com.hx.hxchat.activity.PublicGroupsActivity; import com.hx.hxchat.domain.GroupInfo; 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; /** * 数据加载器 (只负责数据加载,逻辑和视图无关) * * @author Administrator * */ public class PublicGroupsListProtocol 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 = new ArrayList<EMGroup>(); grouplist.clear(); try { // 从服务器获取所用公开的群聊 final List<EMGroupInfo> publicgroupsList = EMGroupManager.getInstance().getAllPublicGroupsFromServer(); for (EMGroupInfo dd : publicgroupsList) { LogUtils.i(PublicGroupsActivity.TAG, "groupsList:id" + dd.getGroupId()); EMGroup groupFromServer; groupFromServer = EMGroupManager.getInstance().getGroupFromServer(dd.getGroupId()); grouplist.add(groupFromServer); } } catch (EaseMobException e) { e.printStackTrace(); LogUtils.e(PublicGroupsActivity.TAG, e); return null; } final List<GroupInfo> GroupInfos = new ArrayList<GroupInfo>(); GroupInfos.clear(); assignObject(grouplist, GroupInfos); 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()); UserUtils.CommonSetGroupIcon(dd, groupFromServer); } catch (EaseMobException e) { e.printStackTrace(); } UserUtils.setGroupICon(dd); } } // notice refresh } }; ThreadManager.getLongPool().execute(runnable); return GroupInfos; } private void assignObject(List<EMGroup> grouplist, List<GroupInfo> groupInfos) { for (EMGroup dd : grouplist) { GroupInfo groupInfo = new GroupInfo(dd.getGroupId()); groupInfo.setAffiliationsCount(dd.getAffiliationsCount()); groupInfo.setDescription(dd.getDescription()); groupInfo.setEid(dd.getEid()); 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); } } }