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

📄 dbtopicfactory.java

📁 bbs struts
💻 JAVA
字号:
package com.ntsky.bbs.service.db;

import java.sql.*;
import java.util.*;
import java.util.Date;
import org.apache.log4j.Logger ;

import com.ntsky.util.Timer;
import com.ntsky.util.TimerExpress;
import com.ntsky.bbs.service.Topic;
import com.ntsky.bbs.service.db.DBTopic;
import com.ntsky.bbs.service.TopicUtil;
import com.ntsky.bbs.service.TopicFactory;
import com.ntsky.xml.bbs.TopicConfigXML;
import com.ntsky.xml.bbs.dto.TopicConfigDTO;
import com.ntsky.datasource.DBConnectionManager;
import com.ntsky.bbs.service.BoardUtil;
import com.ntsky.bbs.service.ReplyFactory;
import com.ntsky.util.CodeFilter;
import com.ntsky.bbs.service.Reply;
import com.ntsky.bbs.service.TopicUtil;
import com.ntsky.bbs.service.UserFactory;
import com.ntsky.bbs.service.UserUtil;
import com.ntsky.bbs.service.BoardFactory;

/**
 * <p>Title: Ntsky OpenSource BBS</p>
 * <p>Description: 主题模块</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: WWW.FM880.COM</p>
 * @author 姚君林
 * @version 1.0
 */

public class DBTopicFactory extends TopicFactory{
    

    private static final String INS_TOPIC = "INSERT INTO t_topic(topicTitle,topicContent,topicAuthor,topicPubTime) VALUES(?,?,?,?);";
    //最新的主题
    private static final String NEWEST_TOPIC = "SELECT * FROM t_topic WHERE topicBoaId=? ORDER BY topicPubTime DESC limit 0,1;";
    private static final String SUM_TOPIC = "SELECT topicId,topicReNum FROM t_topic;";
    private static final String LIST_BOARD_TOPIC = "SELECT * FROM t_topic WHERE topicBoaId=? ORDER BY topicTop DESC,topicReTime DESC,topicPubTime DESC;";
    private static final String SUM_BOARD_TOPIC = "SELECT COUNT(topicId) FROM t_topic ;";
    private static final String LIST_TOPIC = "SELECT * FROM t_topic WHERE topicId=?;";
    private static final String UP_TOPIC_HITS = "UPDATE t_topic SET topicHits = topicHits + 1 WHERE topicId=?;";
    private static final String UP_TOPIC = "UPDATE t_topic SET topicTitle=?,topicContent=? WHERE topicId=?;";
    private static final String DEL_TOPIC = "DELETE FROM t_topic WHERE topicId=?;";
    private static final String UP_TOPIC_LOCK = "UPDATE t_topic SET topicLock=1 WHERE topicId=?;";
    private static final String UP_TOPIC_GOOD = "UPDATE t_topic SET topicElite=1 WHERE topicId=?;";
    private static final String UP_TOPIC_TOP = "UPDATE t_topic SET topicTop=1 WHERE topicId=?;";

    /**
     * 统计一天的主题总数
     * @return int
     */
   

    /**
     * 删除主题(删除主题同时删除主题对应的回复,用户体力值,更新前台显示)
     * @param topicId int
     */
    public void delTopic(int topicId){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        try {
            //删除回复信息
            ReplyFactory.getInstance().delTopicReply(topicId);
            //更新用户体力值
            Topic topic = listTopic(topicId);
            UserFactory.getInstance().upUserWealthDre(topic.getTopicAuthor());

            pstm = conn.prepareStatement(DEL_TOPIC);
            pstm.setInt(1,topicId);
            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());
            }
        }
    }

    /**
     * 指定主题的数据
     * @return Topic
     */
    public Topic listTopic(int topicId){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        ResultSet rs = null;
        Topic topic = new DBTopic();
        try {
            pstm = conn.prepareStatement(LIST_TOPIC);
            pstm.setInt(1,topicId);
            rs = pstm.executeQuery();
            rs.next();
            //当指针有数据时
            topic.setTopicId(rs.getInt("topicId"));
            topic.setTopicTitle(rs.getString("topicTitle"));
            topic.setTopicContent(rs.getString("topicContent"));
            topic.setTopicAuthor(rs.getString("topicAuthor"));
          
            topic.setTopicPubTime(rs.getString("topicPubTime"));
           
            logger.info("取得值后返回");
        }
        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());
            }
        }
        return topic;
    }

    /**
     * 主题总和
     * @param topic Topic
     * @return boolean
     */
   
    /**
     * 插入主题(更新模板)
     */
    public boolean createTopic(Topic topic){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        Timer timer = new TimerExpress("yyyy-MM-dd HH:mm:ss");
        Topic newTopic = null;
        try {
            pstm = conn.prepareStatement(INS_TOPIC);
            pstm.setString(1,topic.getTopicTitle());
            pstm.setString(2,CodeFilter.htmlEncode(topic.getTopicContent()));
            String topicAuthor = topic.getTopicAuthor();
            pstm.setString(3,topicAuthor);
            
            pstm.setString(4,timer.getNowDate());
        
            pstm.executeUpdate();
            
        //    sumtopic();
            /**
             * 更新BoardUtil中的主题数目
             */
            //最新主题
      //      BoardUtil.upTopicNum(topic.getTopicBoaId());
            //刷新主题数组
     //       TopicUtil.reset();
            //增加作者的人气值2和用户发帖数
       //     UserUtil.upUserInfo_AddTopic(topicAuthor);
            //更新帖子热度
            //upTopicHits(topicId);
            //取得刚才添加的纪录
       //     newTopic = listNewTopic(boaId);
            //更新board中的值
          
        }
        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());
            }
        }
        return true;
    }

    /**
     * 更新主题内容
     */
  

    /**
     * 模块主题总数
     */
    public int sumtopic(){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        ResultSet rs = null;
        int topicNum = 0;
        try {
            pstm = conn.prepareStatement(SUM_BOARD_TOPIC);
            
            rs = pstm.executeQuery();
            rs.next();
            topicNum = rs.getInt(1);
        }
        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 topicNum;
    }

   public Topic listTopic(int topicId){
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        ResultSet rs = null;
        Topic topic = new DBTopic();
        try {
            pstm = conn.prepareStatement(LIST_TOPIC);
            pstm.setInt(1,topicId);
            rs = pstm.executeQuery();
            rs.next();
            //当指针有数据时
            topic.setTopicId(rs.getInt("topicId"));
            topic.setTopicTitle(rs.getString("topicTitle"));
            topic.setTopicContent(rs.getString("topicContent"));
            topic.setTopicAuthor(rs.getString("topicAuthor"));
           
            topic.setTopicPubTime(rs.getString("topicPubTime"));
           
            logger.info("取得值后返回");
        }
        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());
            }
        }
        return topic;
    }
 /**
     * 主题列表
     */
    public Iterator topicList(int maxNum, int page) {
        Connection conn = DBConnectionManager.getInstance().getConnection();
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List list = new ArrayList();
       
       
        int i = 0;
        try {
            try {
                pstm = conn.prepareStatement(LIST_BOARD_TOPIC);
              
                rs = pstm.executeQuery();
            }
            catch (Exception e) {
                logger.error("创建指针对象错误 : " + e.getMessage());
            }
            if (page == 1) { //第一页
                try {
                    rs.absolute(1);
                }
                catch (Exception e) {
                    logger.error("指针移到第一条数据错误 : " + e.getMessage());
                }
            }
            else {
                rs.absolute( (page - 1) * maxNum);
            }
            /**
             * 根据定位的指针来取得主题的值
             */
            for (i = 0; i < maxNum; i++) {
                if (page != 1) {
                    if (!rs.next()) {
                        break;
                    }
                }
                Topic topic = new DBTopic();
                topic.setTopicId(rs.getInt("topicId"));
                String topicTitle = rs.getString("topicTitle");
                topic.setTopicTitle(topicTitle);
                topic.setTopicContent(rs.getString("topicContent"));
                String topicAuthor = rs.getString("topicAuthor");
                topic.setTopicAuthor(topicAuthor);
               
                String topicPubTime = rs.getString("topicPubTime");
                topic.setTopicPubTime(topicPubTime);
              
                list.add(topic);
                /**
                 * 当页数为1的时候(填充数据后在返回)
                 */
                if (page == 1) {
                    if (!rs.next()) {
                        break;
                    }
                }
            }
        }
        catch (Exception e) {
            logger.error("获取主题对象错误 : " + e.getMessage());
        }
        finally {
            try {
               rs.close();
           }
           catch (Exception ex) {
               logger.error("关闭rs失败 : " + ex.getMessage());
           }
            try {
                pstm.close();
            }
            catch (Exception ex) {
                logger.error("关闭pstm失败 : " + ex.getMessage());
            }
            try {
                conn.close();
            }
            catch (Exception ex) {
                logger.error("关闭conn失败 : " + ex.getMessage());
            }
        }
        return list.iterator();
    }

⌨️ 快捷键说明

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