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<Member> memberList;
|
|
private WFCMessage.GroupInfo groupInfo;
|
private List<WFCMessage.GroupMember> 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<WFCMessage.GroupMember>();
|
}
|
|
|
public GroupInfo createGroupInfo(String fromUser, WFCMessage.GroupInfo groupInfo, List<WFCMessage.GroupMember> 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<GroupMember> memberList = group.getMembersList();
|
loadGroupMembers(groupId, memberList, sender);
|
//
|
clearWFCMemberList();
|
}
|
|
public void loadMember(WFCMessage.AddGroupMemberRequest addGroupMemberRequest) {
|
List<GroupMember> 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<GroupMember> 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<WFCMessage.GroupMember> getWFCMemberList() {
|
if (wfcMemberList != null) {
|
return wfcMemberList;
|
}
|
|
List<Member> 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
|
|
}
|
|
}
|