package chat.module.entity; import java.util.ArrayList; import java.util.List; import chat.user.User; import cn.wildfirechat.proto.WFCMessage; import cn.wildfirechat.proto.WFCMessage.GroupInfo; import cn.wildfirechat.proto.WFCMessage.GroupMember; import cn.wildfirechat.proto.WFCMessage.MessageContent; import frame.object.data.Entity; public class Group extends MessageContainer { private String id; private String typecode; private String name; private String statuscode; private String portrait; private String ownerid; private long timestamp; private List memberList; private WFCMessage.GroupInfo groupInfo; private List wfcMemberList; public Group() { super(); } public Group(String id, String ownerId, String typeCode) { super(null, null); this.id = id; this.ownerid = ownerId; this.timestamp = System.currentTimeMillis(); this.statuscode = "Open"; this.typecode = typeCode; this.wfcMemberList = new ArrayList(); } public GroupInfo createGroupInfo(String fromUser, WFCMessage.GroupInfo groupInfo, List memberList) { // TODO Auto-generated method stub long dt = System.currentTimeMillis(); groupInfo = groupInfo.toBuilder() .setTargetId(id) .setName(groupInfo.getName()) .setPortrait(groupInfo.getPortrait()) .setType(groupInfo.getType()) .setExtra(groupInfo.getExtra()) .setUpdateDt(dt) .setMemberUpdateDt(dt) .setMemberCount(memberList.size()) .setOwner(fromUser) .build(); return groupInfo; } public Group(String name, User sender) { super(name, sender); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTypecode() { return typecode; } public void setTypecode(String typecode) { this.typecode = typecode; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStatuscode() { return statuscode; } public void setStatuscode(String statuscode) { this.statuscode = statuscode; } public String getPortrait() { return portrait; } public void setPortrait(String portrait) { this.portrait = portrait; } public String getOwnerid() { return ownerid; } public void setOwnerid(String ownerid) { this.ownerid = ownerid; } public long getTimestamp() { return timestamp; } public void setTimestamp(long timestamp) { this.timestamp = timestamp; } public void load(String groupId, WFCMessage.Group group, User sender) { //1. load group info WFCMessage.GroupInfo groupInfo = group.getGroupInfo(); loadGroupInfo(groupId, groupInfo); //2. load members List memberList = group.getMembersList(); loadGroupMembers(groupId, memberList, sender); // clearWFCMemberList(); } public void loadMember(WFCMessage.AddGroupMemberRequest addGroupMemberRequest) { List memberList = addGroupMemberRequest.getAddedMemberList(); loadGroupMembers(addGroupMemberRequest.getGroupId(), memberList, null); clearWFCMemberList(); } public void load(Entity entity) { id = entity.getString("id"); typecode = entity.getString("typecode"); name = entity.getString("name"); statuscode = entity.getString("statuscode"); portrait = entity.getString("portrait"); ownerid = entity.getString("ownerid"); timestamp = Long.parseLong(entity.getString("timestamp")); } public void pushTo(Entity entity) throws Exception { entity.set("id", id); entity.set("typecode", typecode);//空 entity.set("name", name); entity.set("statuscode", statuscode); entity.set("portrait", portrait); entity.set("ownerid", ownerid); entity.set("timestamp", timestamp); } public WFCMessage.GroupInfo toWFCMessage() { if (groupInfo != null) { return groupInfo; } WFCMessage.GroupInfo.Builder builder = WFCMessage.GroupInfo.newBuilder(); builder.setTargetId(id); builder.setName(name); builder.setPortrait(portrait); builder.setOwner(ownerid); builder.setType(0); groupInfo = builder.build(); return groupInfo; } private void loadGroupInfo(String groupId, GroupInfo groupInfo) { id = groupId; name = groupInfo.getName(); portrait = groupInfo.getPortrait(); //ownerId = groupInfo.getOwner(); //type = groupInfo.getType(); //count = getMemberCount(); } private void loadGroupMembers(String groupId, List memberList, User sender) { for (WFCMessage.GroupMember groupMember: memberList) { Member member = new Member(groupId, typecode); member.load(groupMember); //将群组创建者的roletype设置为2 if (sender != null) { if (groupMember.getMemberId().equals(sender.getId())) { member.setRolecode(2); } } addOneMember(member); } } public List getWFCMemberList() { if (wfcMemberList != null) { return wfcMemberList; } List memberList = getMemberList(); for (Member member: memberList) { WFCMessage.GroupMember groupMember = member.toWFCMember(); wfcMemberList.add(groupMember); } return wfcMemberList; } private void clearWFCMemberList() { if (wfcMemberList == null) { return; } wfcMemberList.clear(); } public void quit() { // TODO Auto-generated method stub } }