⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 replyaction.java

📁 tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛
💻 JAVA
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! */package biz.tbuy.bbs;import biz.tbuy.bbs.bean.BaseBean;import biz.tbuy.common.logs.Elog;import biz.tbuy.common.pool.ProxyConn;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b> * <a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b> * <a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> */public class ReplyAction extends BaseBean{    public ReplyAction() {    }    /**     * 添加回复信息     * @param reply      * @return true 如果添加成功,否则返回false;     */    public static boolean addReply(ReplyModel reply) {        return addReplyWithKey(reply) != -1 ? true : false;    }        /**     * 添加回复信息     * @param reply      * @return key 如果回复成功则返回该reply的id,即r_num,否则返回-1;     */    public static int addReplyWithKey(ReplyModel reply) {        int key = -1;        String sql = "insert into reply (r_content, r_ip, r_byTopic, " +                "r_byUser, r_beUpload, r_date) " +                "values (?, ?, ?, ?, ?, now())";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ps.setString(1, reply.getContent());            ps.setString(2, reply.getIp());            ps.setInt(3, reply.getByTopic());            ps.setString(4, reply.getByUser());            ps.setBoolean(5, reply.getBeUpload());            if (ps.executeUpdate() > 0) {                ResultSet rs = ps.getGeneratedKeys();                if (rs.next()) {                    key = rs.getInt(1);                }            }        } catch (SQLException sqle) {            Elog.log("ReplyAction:addReplyWithKey:" + sqle.getMessage());        } finally {            myConn.close();        }        return key;    }        /**     * 通过主题的ID获取该主题的最后回复信息     * @param topicId 主题的id     * @return reply 相关主题的最后回复信息     */    public static ReplyModel getLastReplyByTopicId(int topicId) {        ReplyModel reply = null;        String sql = "select * from reply " +                "where r_byTopic=? " +                "and r_beRevoke!=1 " +                "order by r_num desc limit 0, 1 ";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ps.setInt(1, topicId);            ResultSet rs = ps.executeQuery();            List<ReplyModel> list = getReplies(rs);            if (!list.isEmpty()) {                reply = list.get(0);            }        } catch (SQLException sqle) {            Elog.log("ReplyAction.getLastReplyByTopicId()/" + sqle.getMessage());        } finally {            myConn.close();        }        return reply;    }        /**     * 获取BBS的所有回复信息总量,该方法不会获取已经回收的回复信息     * @return total     */    public static int getTotalReplies() {        int total = 0;        String sql = "select * from reply where r_beRevoke!=1 ";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ResultSet rs = ps.executeQuery();            rs.last();            total = rs.getRow();        } catch (SQLException sqle) {            Elog.log("ReplyAction:getTotalReplies:" + sqle.getMessage());        } finally {            myConn.close();        }        return total;    }        /**     * 获取特定日期的回复信息发表数量,该方法不会计算已经被回收的信息     * @param date     * @return total     */    public static int getTotalRepliesByDate(Date date) {        int total = 0;        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        String dateStr = sdf.format(date);        String sql = "select * from reply where " +                "r_beRevoke!=1 and r_date like '" + dateStr + "%' ";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ResultSet rs = ps.executeQuery();            rs.last();            total = rs.getRow();        } catch (SQLException sqle) {            Elog.log("ReplyAction:getTotalRepliesByDate:" + sqle.getMessage());        } finally {            myConn.close();        }        return total;    }        /**     * 通过讨论区forum获取其总回复的文章数     * @param  forum     * @return total     * @see #getTotalRepliesByForumId(int)     */    public static int getTotalRepliesByForum(ForumModel forum) {        return getTotalRepliesByForumId(forum.getNum());    }        /**     * 通过讨论区forum的id获取其总回复的文章数     * @param forumId 讨论区的ID     * @return total 总回复文章数     */    public static int getTotalRepliesByForumId(int forumId) {        int total = 0;        String sql = "select * from reply, topic " +                "where t_byForum=? " +                "and r_byTopic=t_num " +                "and r_beRevoke!=1 ";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ps.setInt(1, forumId);            ResultSet rs = ps.executeQuery();            rs.last();            total = rs.getRow();        } catch (SQLException sqle) {            Elog.log("ReplyAction.getTotalReplysByForumId()/" + sqle.getMessage());        } finally {            myConn.close();        }        return total;    }        /**     * 通过reply的id获取reply信息     * @param replyId 回复信��的id     * @return reply 获取成功,否则返回null;     */    public static ReplyModel getReplyById(int replyId) {        ReplyModel reply = null;        String sql = "select * from reply " +                "where r_num=? " +                "and r_beRevoke!=1 ";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ps.setInt(1, replyId);            ResultSet rs = ps.executeQuery();            List<ReplyModel> list = new ArrayList<ReplyModel>(1);            list = getReplies(rs);            if (!list.isEmpty()) {                reply = list.get(0);            }        } catch (SQLException sqle) {            Elog.log("ReplyAction.getReplyById()/" + sqle.getMessage());        } finally {            myConn.close();        }        return reply;    }        /**     * 通过ReplyModel完整更新回复信息的内容     * @param reply 需要更新的reply     * @return true 如果更新成功,否则返回false;     */    public static boolean updateReply(ReplyModel reply) {        boolean isOk = false;        String sql = "update reply set " +                "r_content=?, " +                "r_date=?, " +                "r_ip=?, " +                "r_byTopic=?, " +                "r_byUser=?, " +                "r_beRevoke=?, " +                "r_beUpload=?, " +                "r_editByUser=?, " +                 "r_editByDate=now() " +                 "where r_num=?";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ps.setString(1, reply.getContent());            ps.setTimestamp(2, reply.getDate());            ps.setString(3, reply.getIp());            ps.setInt(4, reply.getByTopic());            ps.setString(5, reply.getByUser());            ps.setBoolean(6, reply.getBeRevoke());            ps.setBoolean(7, reply.getBeUpload());            ps.setString(8, reply.getEditByUser());            ps.setInt(9, reply.getNum());            isOk = ps.executeUpdate() > 0;        } catch (SQLException sqle) {            Elog.log("ReplyAction.updateReply()/" + sqle.getMessage());        } finally {            myConn.close();        }        return isOk;    }        /**************************************************************************     * 关于被删除及被回收的回复贴子,该方法获取已被回收的贴子的总数量     * @return total     **************************************************************************/    public static int getTotalRevokeReplies() {        int total = 0;        String sql = "select * from reply where r_beRevoke=1";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ResultSet rs = ps.executeQuery();            rs.last();            total = rs.getRow();        } catch (SQLException sqle) {            Elog.log("Exception:ReplyAction:getTotalRevokeReplies:" +                     sqle.getMessage());        } finally {            myConn.close();        }        return total;    }        /**     * 彻底删除所有已经被回收的回复信息     * @return true 如果正常删除,否则false     */     public static boolean clearRevokeReplies() {        boolean isOk = true;        String sql = "delete from reply where r_beRevoke=1";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ps.executeUpdate();        } catch (SQLException sqle) {            isOk = false;            Elog.log("Exception:ReplyAction:clearRevokeReplies:" + sqle.getMessage());        } finally {            myConn.close();        }        return isOk;    }        /**     * 通过reply的id回收该reply,并不彻底删除该reply     * @param replyId 需要被回收的reply的id     * @return true 如果回收成功,否则返回false;     */    public static boolean revoke(int replyId) {        boolean isOk = false;        String sql = "update reply set r_beRevoke=1 where r_num=?";        ProxyConn myConn = getConn();        try {            PreparedStatement ps = myConn.prepareStatement(sql);            ps.setInt(1, replyId);            isOk = ps.executeUpdate() > 0;        } catch (SQLException sqle) {            Elog.log("ReplyAction.revoke()/" + sqle.getMessage());        } finally {            myConn.close();        }        return isOk;    }        /**     * getReplies by ResultSet     * 注意:修改该方法时可能需要同时修改:     *     CommonAction.getRepliesOfObject(ResultSet rs)     * @param rs     * @return ReplyModels     */    private static List<ReplyModel> getReplies(ResultSet rs) {        List<ReplyModel> list = new ArrayList<ReplyModel>();        try {            while (rs.next()) {                                    list.add(getReplyByRS(rs));            }        } catch (SQLException sqle) {            Elog.log("ReplyAction.getReplies()/" + sqle.getMessage());        }        return list;    }        /**     * 通过该ResultSet的当前行获取相应的数据,并转为单个ReplyModel返回     * 这里是真正从ResultSet中获取数据的地方,所有的ReplyModel都应该从     * 这里获得数据     * @param rs      * @return reply     */     public static ReplyModel getReplyByRS(ResultSet rs) {        ReplyModel reply = new ReplyModel();        try {            reply.setNum(rs.getInt("r_num"));            reply.setContent(rs.getString("r_content"));            reply.setDate(rs.getTimestamp("r_date"));            reply.setIp(rs.getString("r_ip"));            reply.setByTopic(rs.getInt("r_byTopic"));            reply.setByUser(rs.getString("r_byUser"));            reply.setBeRevoke(rs.getBoolean("r_beRevoke"));            reply.setBeUpload(rs.getBoolean("r_beUpload"));            reply.setEditByUser(rs.getString("r_editByUser"));            reply.setEditByDate(rs.getTimestamp("r_editByDate"));        } catch (SQLException sqle) {            Elog.log("ReplyAction:getReplyByRS():" + sqle.getMessage());        }        return reply;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -