package model;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import protocol.Data.ChatData.ChatItem;
import protocol.Data.ChatData.ChatItem.ChatType;
import protocol.Data.ChatData.ChatItem.TargetType;
/**
* 聊天消息对象
*
* @author Feng
*
*/
@Entity
@Table(name = "chatting_message")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Chatting {
public static final String TABLE_NAME = "chatting_message";
// 消息id
private long id;
// 聊天类型 文字和图片
private ChatType chattingType;
// 是群聊?单聊?系统消息
private TargetType targetType;
// 群聊天对应的群Id
private int groupId;
// 时间
private long time;
private String senderUserId, receiverUserId, message;
public Chatting() {
}
public Chatting(String senderUserId, String receiverUserId, ChatType chattingType, String message, long time, int groupId,
TargetType targetType) {
setSenderUserId(senderUserId);
setReceiverUserId(receiverUserId);
setChattingType(chattingType);
setMessage(message);
setTime(time);
setGroupId(groupId);
setTargetType(targetType);
}
public Chatting(String senderUserId, String receiverUserId, ChatType chattingType, String message, long time,
TargetType targetType) {
setSenderUserId(senderUserId);
setReceiverUserId(receiverUserId);
setChattingType(chattingType);
setMessage(message);
setTargetType(targetType);
setTime(time);
}
@Id
@Column(name = "id", columnDefinition = "bigint COMMENT '聊天消息Id'")
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column(name = "chatting_type", columnDefinition = "int(8) COMMENT '聊天类型'")
public ChatType getChattingType() {
return chattingType;
}
public void setChattingType(ChatType chattingType) {
this.chattingType = chattingType;
}
@Column(name = "group_id", columnDefinition = "int(8) COMMENT '时间'")
public int getGroupId() {
return groupId;
}
public void setGroupId(int groupId) {
this.groupId = groupId;
}
@Column(name = "time", columnDefinition = "bigint(20) COMMENT '时间'")
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
@Column(name = "sender_user_id", columnDefinition = "char(20) COMMENT '发送者id'")
public String getSenderUserId() {
return senderUserId;
}
public void setSenderUserId(String senderUserId) {
this.senderUserId = senderUserId;
}
@Column(name = "receiver_user_id", columnDefinition = "char(20) COMMENT '接收者id'")
public String getReceiverUserId() {
return receiverUserId;
}
public void setReceiverUserId(String receiverUserId) {
this.receiverUserId = receiverUserId;
}
@Column(name = "message", columnDefinition = "char(100) COMMENT '消息'")
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
// public void createFromChatItem(ChatItem chatItem) {
// setSenderUserId(chatItem.getSendUserId());
// setReceiverUserId(chatItem.getReceiveUserId());
// }
public TargetType getTargetType() {
return targetType;
}
public void setTargetType(TargetType targetType) {
this.targetType = targetType;
}
public ChatItem.Builder createChatItem() {
return createChatItem(this);
}
public static ChatItem.Builder createChatItem(Chatting chatting) {
ChatItem.Builder chatItem = ChatItem.newBuilder();
chatItem.setTargetType(chatting.targetType);
chatItem.setSendUserId(chatting.getSenderUserId());
if (chatting.targetType == TargetType.INDIVIDUAL)
chatItem.setReceiveUserId(chatting.getReceiverUserId());
else
chatItem.setReceiveUserId(chatting.getGroupId() + "");
chatItem.setChatType(chatting.getChattingType());
chatItem.setChatBody(chatting.getMessage());
chatItem.setDate(new Date().getTime());
return chatItem;
}
public String toString() {
return this.getSenderUserId() + " " + this.getReceiverUserId() + " " + this.getChattingType() + " " + this.getMessage();
}
}