package cn.newgxu.bbs.domain;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
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 cn.newgxu.bbs.common.Pagination;
import cn.newgxu.bbs.domain.user.User;
import cn.newgxu.jpamodel.JPAEntity;
import cn.newgxu.jpamodel.ObjectNotFoundException;
/**
*
* @author 红叶狐
* @since 4.0.0
* @version $Revision 1.1$
*/
@Entity
@Table(name = "small_news")
public class SmallNews extends JPAEntity {
private static final long serialVersionUID = 9155200262255518973L;
@Id
@Column(name = "id")
// @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="id_seq")
// @SequenceGenerator(name="id_seq", sequenceName="seq_small_news")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id = -1;
@Column(name = "title", length = 30)
private String title;
@Column(name = "content", length = 500)
private String content;
// 由于是many2one,级联获取,用于解决首页有时出现获取不到用户nick的bug,@2012-05-22
@ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.EAGER)
@JoinColumn(name = "userid")
private User user;
@Column(name = "create_time")
private Date createTime;
private int hit;
private boolean invalid;
@ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY)
@JoinColumn(name = "forum_id")
private Forum forum;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Forum getForum() {
return forum;
}
public void setForum(Forum forum) {
this.forum = forum;
}
public int getHit() {
return hit;
}
public void setHit(int hit) {
this.hit = hit;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public boolean isInvalid() {
return invalid;
}
public void setInvalid(boolean invalid) {
this.invalid = invalid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void display() {
addhit(1);
}
// ------------------------------------------------
public static SmallNews get(int newsId) throws ObjectNotFoundException {
return (SmallNews) getById(SmallNews.class, newsId);
}
/* sql语句写错导致发不了小字报*/
@SuppressWarnings("unchecked")
public static SmallNews getSmallNewsListByUser(int userId) {
List<SmallNews> smalls = (List<SmallNews>) Q("from SmallNews s where user.id = ?1 and invalid = 0 order by createTime desc", P(1, userId)).getResultList();
// if(smalls!=null)
// return smalls.get(0);
for(SmallNews sm : smalls){
return sm;
}
return null;
}
@SuppressWarnings("unchecked")
public static List<SmallNews> getSmallNewsList(Forum forum, Pagination p) {
return (List<SmallNews>) Q(
"from SmallNews s where forum = ?1 and invalid = 0 order by id desc",
P(1, forum), p).getResultList();
}
@SuppressWarnings("unchecked")
public static List<SmallNews> getSmallNewsList(Pagination p) {
return (List<SmallNews>) Q(
"from SmallNews s where invalid = 0 order by id desc", p)
.getResultList();
}
public static int getSmallNewsSize(Forum forum) {
try {
return ((Long) SQ(
"select count(*) from SmallNews s where forum = ?1 and invalid = 0",
P(1, forum))).intValue();
} catch (ObjectNotFoundException e) {
return 0;
}
}
public static int getSmallNewsSize() {
try {
return ((Long) SQ("select count(*) from SmallNews s where invalid = 0"))
.intValue();
} catch (ObjectNotFoundException e) {
return 0;
}
}
/**
* 获取小字报,用于十周年主页的改版
* @since 2012-04-19
* @author ivy
* @param number 需要获取的数量
*/
@SuppressWarnings("unchecked")
public static List<SmallNews> getSmallNews(int number) {
return (List<SmallNews>) Q(
"from SmallNews where invalid = 0 order by createTime desc").setFirstResult(0).setMaxResults(number).getResultList();
}
public void addhit(int number) {
this.hit += number;
}
// ------------------------------------------------
@SuppressWarnings("serial")
@Override
public String toString() {
return "topic" + new LinkedHashMap<String, Object>() {
{
put("id", id);
put("title", title);
put("user", user);
put("content", content);
put("createTime", createTime);
put("hit", hit);
put("invalid", invalid);
put("forum", forum);
}
}.toString();
}
}