package cn.newgxu.bbs.domain; import java.util.Date; 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 hjc * @since 4.0.0 * @version $Revision 1.1$ */ @Entity @Table(name = "managelog") public class ManageLog extends JPAEntity { private static final long serialVersionUID = 1L; @Id @Column(name = "logid") @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY) @JoinColumn(name = "userid") private User user; @Column(name = "typeid") private int typeid; @Column(name = "dt") private Date dt; @ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY) @JoinColumn(name = "topicid") private Topic topic; @ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY) @JoinColumn(name = "replyid") private Reply reply; @ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY) @JoinColumn(name = "forumid") private Forum forum; 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 int getTypeid() { return typeid; } public void setTypeid(int typeid) { this.typeid = typeid; } public Date getDt() { return dt; } public void setDt(Date dt) { this.dt = dt; } public Topic getTopic() { return topic; } public void setTopic(Topic topic) { this.topic = topic; } public Reply getReply() { return reply; } public void setReply(Reply reply) { this.reply = reply; } public Forum getForum() { return forum; } public void setForum(Forum forum) { this.forum = forum; } @SuppressWarnings("unchecked") public static List<ManageLog> getLogs(Pagination p) { p.setRecordSize(ManageLog.getNumberOfLogs()); return (List<ManageLog>) Q("from ManageLog m order by dt desc", p).getResultList(); } private static int getNumberOfLogs() { try { return ((Long) SQ("select count(*) from ManageLog m")).intValue(); } catch (ObjectNotFoundException e) { return 0; } } @SuppressWarnings("unchecked") public static List<ManageLog> getLogsByID(Pagination p, String id) { int num = 0; try { num = Integer.valueOf(id); } catch (Exception e) { e.printStackTrace(); return null; } p.setRecordSize(ManageLog.getNumberOfLogsByID(id)); return (List<ManageLog>) Q( "from ManageLog m where m.user.id=?1 or m.topic.topicUser.id=?1 or m.reply.postUser.id=?1 order by dt desc", P(1, num)).getResultList(); } private static int getNumberOfLogsByID(String id) { try { int num = Integer.getInteger(id); return ((Long) SQ( "select count(*) from ManageLog m where m.user.id=?1 or m.topic.topicUser.id=?1 or m.reply.postUser.id=?1", P(1, num))).intValue(); } catch (Exception e) { return 0; } } @SuppressWarnings("unchecked") public static List<ManageLog> getLogsByForum(Pagination p, String name) { p.setRecordSize(ManageLog.getNumberOfLogsByForum(name)); return (List<ManageLog>) Q("from ManageLog m where m.forum.name like'%"+name+"%' order by dt desc",p).getResultList(); } @SuppressWarnings("unchecked") public static List<ManageLog> getLogsByUsername(Pagination p, String name) { p.setRecordSize(ManageLog.getNumberOfLogsByUsername(name)); return (List<ManageLog>) Q("from ManageLog m where m.user.username like'%"+name+"%' order by dt desc",p).getResultList(); } @SuppressWarnings("unchecked") public static List<ManageLog> getLogsByStudentid(Pagination p, String name) { p.setRecordSize(ManageLog.getNumberOfLogsByStudentid(name)); return (List<ManageLog>) Q("from ManageLog m where m.user.studentid like'%"+name+"%'").getResultList(); } private static int getNumberOfLogsByStudentid(String name) { try { return ((Long) SQ( "select count(*) from ManageLog m where m.user.studentid like'%"+name+"%'")).intValue(); } catch (ObjectNotFoundException e) { return 0; } } private static int getNumberOfLogsByUsername(String name) { try { return ((Long) SQ( "select count(*) from ManageLog m where m.user.username like'%"+name+"%'")).intValue(); } catch (ObjectNotFoundException e) { return 0; } } private static int getNumberOfLogsByForum(String name) { try { return ((Long) SQ( "select count(*) from ManageLog m where m.forum.name like'%"+name+"%'")).intValue(); } catch (ObjectNotFoundException e) { return 0; } } public static int getLogNumberOfUser(User user) { try { return ((Long) SQ( "select count(*) from ManageLog m where m.user.id=?1", P(1, user.getId()))).intValue(); } catch (Exception e) { return 0; } } }