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

📄 dbreplyfactory.java

📁 基于struct结构的jsp
💻 JAVA
字号:
package com.ntsky.bbs.service.db;

import java.util.*;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.PreparedStatement;
import org.apache.log4j.Logger ;

import com.ntsky.util.Timer;
import com.ntsky.util.TimerExpress;
import com.ntsky.util.MD5;
import com.ntsky.util.CodeFilter;
import com.ntsky.bbs.service.ReplyFactory;
import com.ntsky.datasource.DBConnectionManager;
import com.ntsky.bbs.service.Reply;
import com.ntsky.bbs.service.db.DBReply;
import com.ntsky.bbs.service.TopicUtil;
import com.ntsky.bbs.service.Topic;
import com.ntsky.bbs.service.UserFactory;
import com.ntsky.bbs.service.BoardFactory;

/**
 * <p>Title: Ntsky OpenSource BBS</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 天网文化发展有限公司</p>
 * @author 姚君林
 * @version 1.0
 */

public class DBReplyFactory extends ReplyFactory{

    private final static Logger logger = Logger.getLogger(DBReplyFactory.class);
    private static final String INS_REPLY = "INSERT INTO t_reply(repTopicId,repUsrName,repContent,repTime,repIp) VALUES(?,?,?,?,?);";
    private static final String UP_REPLY_INFO = "UPDATE t_topic SET topicReNum=topicReNum+1,topicReUser=?,topicReTime=? WHERE topicId=?;";
    private static final String SEL_REPLY_INFO = "SELECT * FROM t_reply WHERE repTopicId=?;";
    private static final String DEL_TOPIC_REPLY = "DELETE FROM t_reply WHERE repTopicId=?;";
    private static final String SEL_REPLY_SIN = "SELECT * FROM t_reply WHERE repId=?;";
    private static final String UP_REPLY = "UPDATE t_reply SET repContent=? WHERE repId=?;";
    private static final String DEL_REPLY = "DELETE FROM t_reply WHERE repId=?;";

    /**
     * 删除回复信息
     * @param repId int
     */
    public void delReply(int repId){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        try {
            Reply reply = listReplySin(repId);

            //更新用户体力值
            Topic topic = TopicUtil.listTopic((reply.getRepTopicId()));
            UserFactory.getInstance().upUserWealthDre(topic.getTopicAuthor());

            pstm = conn.prepareStatement(DEL_REPLY);
            pstm.setInt(1, repId);
            pstm.executeUpdate();

            //刷新前台数组
            TopicUtil.reset();
        }
        catch (Exception ex) {
            logger.error("删除单条回复信息失败 : " + ex.getMessage());
        }
        finally {
            try {
                pstm.close();
            }
            catch (Exception ex) {
                logger.error("关闭 pstm 失败 error : " + ex.getMessage());
            }
            try {
                conn.close();
            }
            catch (Exception ex) {
                logger.error("关闭数据库连接失败 error : " + ex.getMessage());
            }
        }
    }

    /**
     * 删除主题对应的回复
     * @param topicId int
     */
    public void delTopicReply(int topicId){
        Connection conn = DBConnectionManager.getInstance().getConnection(
            );
        PreparedStatement pstm = null;
        try {
            pstm = conn.prepareStatement(DEL_TOPIC_REPLY);
            pstm.setInt(1, topicId);
            pstm.executeUpdate();
        }
        catch (Exception ex) {
            logger.error("删除回复信息失败 : " + ex.getMessage());
        }
        finally {
            try {
                pstm.close();
            }
            catch (Exception ex) {
                logger.error("关闭 pstm 失败 error : " + ex.getMessage());
            }
            try {
                conn.close();
            }
            catch (Exception ex) {
                logger.error("关闭数据库连接失败 error : " + ex.getMessage());
            }
        }
    }

    /**
     * 添加回复信息
     */
    public void insReply(Reply reply){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        Timer timer = new TimerExpress("yyyy-MM-dd HH:mm:ss");
        try {
            pstm = conn.prepareStatement(INS_REPLY);
            int repTopicId = reply.getRepTopicId();
            pstm.setInt(1,repTopicId);
            String usrName = reply.getRepUsrName();
            logger.info("usrName = " + usrName +"PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP");
            pstm.setString(2,reply.getRepUsrName());
            pstm.setString(3,CodeFilter.htmlEncode(reply.getRepContent()));
            pstm.setString(4,timer.getNowDate());
            pstm.setString(5,reply.getRepIp());
            pstm.executeUpdate();
            pstm.close();
            /**
             * 更新主题表的信息
             */
            pstm = conn.prepareStatement(UP_REPLY_INFO);
            pstm.setString(1,reply.getRepUsrName());
            pstm.setString(2,timer.getNowDate());
            pstm.setInt(3,reply.getRepTopicId());
            pstm.executeUpdate();

            //更新内存表中的回复总数
            Topic topic = TopicUtil.listTopic((reply.getRepTopicId()));
            BoardFactory.getInstance().incrementRepNum(topic.getTopicBoaId());
            // 更新用户表的信息(用户回复的信息总数)
            UserFactory.getInstance().upRepUserInfo(usrName);
        }
        catch (Exception ex) {
            logger.error("添加回复出错 : " + ex.getMessage());
        }
        finally {
            try {
                pstm.close();
            }
            catch (Exception ex) {
                logger.error("关闭 pstm 失败 error : " + ex.getMessage());
            }
            try {
                conn.close();
            }
            catch (Exception ex) {
                logger.error("关闭数据库连接失败 error : " + ex.getMessage());
            }
        }
    }

    /**
     * 更新回复信息
     * @param reply Reply
     */
    public void upReply(Reply reply){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        Timer timer = new TimerExpress("yyyy-MM-dd HH:mm:ss");
        try {
            String repContent = reply.getRepContent();
            repContent = repContent + "\n此回复信息于[ "+timer.getNowDate()+" ]被修改过";
            pstm = conn.prepareStatement(UP_REPLY);
            pstm.setString(1,CodeFilter.htmlEncode(repContent));
            pstm.setInt(2,reply.getRepId());
            pstm.executeUpdate();
        }
        catch (Exception ex) {
            logger.info("更新回复信息失败 : " + ex.getMessage());
        }
        finally {
            try {
                pstm.close();
            }
            catch (Exception ex) {
                logger.error("关闭 pstm 失败 error : " + ex.getMessage());
            }
            try {
                conn.close();
            }
            catch (Exception ex) {
                logger.error("关闭数据库连接失败 error : " + ex.getMessage());
            }
        }
    }


    /**
     * 回复主题的数据
     */
    public Iterator listReply(int topicId){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List list = new ArrayList();
        try {
            pstm = conn.prepareStatement(SEL_REPLY_INFO);
            pstm.setInt(1,topicId);
            rs = pstm.executeQuery();
            while(rs.next()){
                Reply reply = new DBReply();
                reply.setRepId(rs.getInt("repId"));
                reply.setRepTopicId(rs.getInt("repTopicId"));
                reply.setRepUsrName(rs.getString("repUsrName"));
                reply.setRepContent(rs.getString("repContent"));
                reply.setRepTime(rs.getString("repTime"));
                reply.setRepIp(rs.getString("repIp"));
                list.add(reply);
                logger.info("成功获得该主题的回复信息");
            }
        }
        catch (Exception ex) {
            logger.info("列出该主题的回复数据失败 : " + ex.getMessage());
        }
        finally {
            try {
                rs.close();
            }
            catch(Exception ex){
                 logger.error("关闭 rs 失败 error : " + ex.getMessage());
            }
            try {
                pstm.close();
            }
            catch (Exception ex) {
                logger.error("关闭 pstm 失败 error : " + ex.getMessage());
            }
            try {
                conn.close();
            }
            catch (Exception ex) {
                logger.error("关闭数据库连接失败 error : " + ex.getMessage());
            }
        }
        return list.iterator();
    }

    /**
     * 回复信息
     * @param repId int
     * @return Reply
     */
    public Reply listReplySin(int repId){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        ResultSet rs = null;
        Reply reply = null;
        try {
            pstm = conn.prepareStatement(SEL_REPLY_SIN);
            pstm.setInt(1,repId);
            rs = pstm.executeQuery();
            rs.next();
            reply = new DBReply();
            reply.setRepId(rs.getInt("repId"));
            reply.setRepTopicId(rs.getInt("repTopicId"));
            reply.setRepUsrName(rs.getString("repUsrName"));
            reply.setRepContent(CodeFilter.unEncode(rs.getString("repContent")));
            reply.setRepTime(rs.getString("repTime"));
            reply.setRepIp(rs.getString("repIp"));
        }
        catch (Exception ex) {
            logger.info("列出回复数据失败 : " + ex.getMessage());
        }
        finally {
            try {
                rs.close();
            }
            catch(Exception ex){
                 logger.error("关闭 rs 失败 error : " + ex.getMessage());
            }
            try {
                pstm.close();
            }
            catch (Exception ex) {
                logger.error("关闭 pstm 失败 error : " + ex.getMessage());
            }
            try {
                conn.close();
            }
            catch (Exception ex) {
                logger.error("关闭数据库连接失败 error : " + ex.getMessage());
            }
        }
        return reply;
    }
}

⌨️ 快捷键说明

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