package cn.newgxu.bbs.domain;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import cn.newgxu.bbs.common.Pagination;
import cn.newgxu.bbs.domain.user.User;
import cn.newgxu.jpamodel.JPAEntity;
/**
*
* @author polly
* @since 4.0.0
* @version $Revision 1.1$
*/
@Entity
@Table(name = "short_message")
public class ShortMessage extends JPAEntity {
private static final long serialVersionUID = -7064156094652847410L;
@Id
@Column(name = "id")
// @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="id_seq")
// @SequenceGenerator(name="id_seq", sequenceName="seq_short_message")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id = -1;
private User receiver;
private int senderId;
private int face;
private boolean readed;
private String title;
private String content;
private Date postTime;
private boolean friendQuery;
private boolean saved;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getFace() {
return face;
}
public void setFace(int face) {
this.face = face;
}
public boolean isFriendQuery() {
return friendQuery;
}
public void setFriendQuery(boolean friendQuery) {
this.friendQuery = friendQuery;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getPostTime() {
return postTime;
}
public void setPostTime(Date postTime) {
this.postTime = postTime;
}
public boolean isReaded() {
return readed;
}
public void setReaded(boolean readed) {
this.readed = readed;
}
public User getReceiver() {
return receiver;
}
public void setReceiver(User receiver) {
this.receiver = receiver;
}
public boolean isSaved() {
return saved;
}
public void setSaved(boolean saved) {
this.saved = saved;
}
public int getSenderId() {
return senderId;
}
public void setSenderId(int senderId) {
this.senderId = senderId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
// ------------------------------------------------
public void setSender(User sender) {
this.senderId = sender.getId();
}
public User getSender() {
if (this.senderId == 0) {
return new User();
}
return User.getCertainExist(this.senderId);
}
private void saveMessage(String title, String content, int face,
User receiver, User sender, boolean friendQuery) {
ShortMessage msg = new ShortMessage();
msg.setReceiver(receiver);
msg.setSenderId(sender == null ? 0 : sender.getId());
msg.setFace(face);
msg.setReaded(false);
msg.setTitle(title);
msg.setContent(content);
msg.setPostTime(new Date());
msg.setFriendQuery(friendQuery);
msg.setSaved(false);
msg.save();
}
public void sendMessage(String title, String content, int face,
List<User> receivers, User sender, boolean friendQuery) {
for (User receiver : receivers) {
saveMessage(title, content, face, receiver, sender, friendQuery);
}
}
public void sendSystemMessage(String title, String content, int face,
List<User> receivers, boolean friendQuery) {
for (User receiver : receivers) {
saveMessage(title, content, face, receiver, null, friendQuery);
}
}
public void sendMessage(String title, String content, int face,
User receiver, User sender, boolean friendQuery) {
saveMessage(title, content, face, receiver, sender, friendQuery);
}
public void sendSystemMessage(String title, String content, int face,
User receiver, boolean friendQuery) {
saveMessage(title, content, face, receiver, null, friendQuery);
}
@SuppressWarnings("unchecked")
public List<ShortMessage> getReceivedMessages(User receiver, Pagination p) {
return (List<ShortMessage>) Q(
"from ShortMessage msg where msg.receiver = ?1 order by msg,readed desc, msg.postTime desc",
P(1, receiver), p).getResultList();
}
@SuppressWarnings("unchecked")
public List<ShortMessage> getSendedMessages(User sender, Pagination p) {
return (List<ShortMessage>) Q(
"from ShortMessage msg where msg.sender = ?1 order by msg.postTime desc",
P(1, receiver), p).getResultList();
}
// ------------------------------------------------
@SuppressWarnings("serial")
@Override
public String toString() {
return "shortMessage" + new LinkedHashMap<String, Object>() {
{
put("id", id);
put("receiver", receiver);
put("senderId", senderId);
put("face", face);
put("readed", readed);
put("title", title);
put("content", content);
put("postTime", postTime);
put("friendQuery", friendQuery);
put("saved", saved);
}
}.toString();
}
}