package cn.newgxu.bbs.domain.diary; 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.OneToOne; 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 = "diary_books") public class DiaryBooks extends JPAEntity { /** * <code>serialVersionUID</code> */ private static final long serialVersionUID = 1L; @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private int id = -1; @OneToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY) @JoinColumn(name = "userId") private User user; @Column(name = "bookName") private String bookName; @Column(name = "description") private String description; @Column(name = "diary_num") private int diaryNum = 0; @Column(name = "hit_count") private int hitCount = 1; @Column(name = "diaryStyle") private int diaryStyle; @Column(name = "viewkey") private String viewKey; public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public int getDiaryNum() { return diaryNum; } public void setDiaryNum(int diaryNum) { this.diaryNum = diaryNum; } public int getDiaryStyle() { return diaryStyle; } public void setDiaryStyle(int diaryStyle) { this.diaryStyle = diaryStyle; } public int getHitCount() { return hitCount; } public void setHitCount(int hitCount) { this.hitCount = hitCount; } public int getId() { return id; } public void setId(int id) { this.id = id; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getViewKey() { return viewKey; } public void setViewKey(String viewKey) { this.viewKey = viewKey; } public static DiaryBooks get(int id) throws ObjectNotFoundException { return (DiaryBooks) getById(DiaryBooks.class, id); } public static DiaryBooks getByUserId(User user) throws ObjectNotFoundException { return (DiaryBooks) SQ("from DiaryBooks db where db.user.id = ?1 ", P( 1, user.getId())); } public static int getDiaryBookSize() { try { return ((Long) SQ("select count(*) from DiaryBooks db")).intValue(); } catch (ObjectNotFoundException e) { return 0; } } @SuppressWarnings("unchecked") public static List<DiaryBooks> getDiaryBooks(int type, Pagination p) { if (type == 1) { return (List<DiaryBooks>) Q( "from DiaryBooks db order by db.hitCount desc ", p) .getResultList(); } else if (type == 2) { return (List<DiaryBooks>) Q( "from DiaryBooks db order by db.id desc ", p) .getResultList(); } else { return (List<DiaryBooks>) Q( "from DiaryBooks db order by db.diaryNum desc ", p) .getResultList(); } } // -----------------------search public static int getDiaryBooksSizeByBookName(String bookName) { try { return ((Long) SQ("select count(*) from DiaryBooks d where d.bookName like '%" + bookName + "%'")).intValue(); } catch (ObjectNotFoundException e) { return 0; } } @SuppressWarnings("unchecked") public static List<DiaryBooks> getDiaryBooksByBookName(String bookName, Pagination p) { return (List<DiaryBooks>) Q( "from DiaryBooks d where d.bookName like '%" + bookName + "%' order by d.id desc", p).getResultList(); } public static int getDiaryBooksSizeByAuthor(String author) { try { return ((Long) SQ("select count(*) from DiaryBooks d where d.user.nick like '%" + author + "%'")).intValue(); } catch (ObjectNotFoundException e) { return 0; } } @SuppressWarnings("unchecked") public static List<DiaryBooks> getDiaryBooksByAuthor(String author, Pagination p) { return (List<DiaryBooks>) Q( "from DiaryBooks d where d.user.nick like '%" + author + "%' order by d.id desc", p).getResultList(); } // ------------------------------------------------ @SuppressWarnings("serial") @Override public String toString() { return "diaryBooks" + new LinkedHashMap<String, Object>() { { put("id", id); put("user", user); put("bookName", bookName); put("description", description); put("diaryNum", diaryNum); put("hitCount", hitCount); put("diaryStyle", diaryStyle); put("hitCount", hitCount); put("viewKey", viewKey); } }.toString(); } }