📄 dbreplyfactory.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 + -