📄 commonaction.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.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @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 CommonAction extends BaseBean{ public CommonAction() {} // -------------------------------------------------- forum.jsp /** * get the infomation about the topic and the lastReply * return for example:<br> * Obj(0).get("topic") 获得主题TopicModel;<br> * Obj(0).get("lastReply") 获得最后的回复 ReplyModel;<br> * @param startRow * @param pageSize * @param forumId * @return a list of Map */ public static List<Map> getTopicsObjectByForumId(int startRow, int pageSize, int forumId) { List<Map> list = new ArrayList<Map>(); List<TopicModel> topics = TopicAction.getTopicsForPageByForumId(startRow, pageSize, forumId); for (TopicModel topic : topics) { ReplyModel reply = ReplyAction.getLastReplyByTopicId(topic.getNum()); Map<String, Object> myMap = new HashMap<String, Object>(); myMap.put("topic", topic); myMap.put("lastReply", reply); list.add(myMap); } return list; } // -------------------------------------------------- topic.jsp /** * 通过topicId获取与该主题相关联的信息, * 如topic,userinfo,upload * topicObj包含以下数据: * topic['topic'] => TopicModel<br> * topic['userinfo'] => UserinfoModel<br> * topic['files'] => ArrayList<FileModel><br> * topic['music'] => MusicModel<br> * @param topicId 所要获取的主题的id * @return topicObj topicObj为HashMap类型 */ public static Map<String, Object> getTopicOfObject(int topicId) { Map<String, Object> topicObj = new HashMap<String, Object>(1); String sql = "select * from topic, userinfo " + "where t_num=? " + "and t_beRevoke!=1 " + "and t_byUser=u_byUser "; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setInt(1, topicId); ResultSet rs = ps.executeQuery(); if (rs.next()) { // topic 为该主题本身的信息 TopicModel topic = new TopicModel(); // userinfo用于存放该主题的作者信息 UserinfoModel userinfo = new UserinfoModel(); // files用于存放该主题的所有关联上传文件 List<FileModel> files = new ArrayList<FileModel>(); // 音乐信息 MusicModel music = new MusicModel(); topic = TopicAction.getTopicByRS(rs); // 取得topic userinfo = UserinfoAction.getUserinfoByRS(rs); // 取得userinfo files = FileAction.getFilesByTopicId(topic.getNum()); // 取得上传文件 music = MusicAction.getMusicById(topic.getMusic()); topicObj.put("topic", topic); topicObj.put("userinfo", userinfo); topicObj.put("files", files); topicObj.put("music", music); } } catch (SQLException sqle) { Elog.log("CommonAction.getTopicOfObject()/" + sqle.getMessage()); } finally { myConn.close(); } return topicObj; } /** * reply * 通过Topic获取相应的回复信息数量(replies) * @param topic 通过该topic获取其回复总数 * @return total replys with the topic */ public static int getTotalRepliesByTopic(TopicModel topic) { int total = 0; String sql = "select * from userinfo, reply " + "left join upload on (up_byTarget=r_num and up_target='r') " + "where r_byTopic=? " + "and r_byUser=u_byUser " + "and r_beRevoke!=1 "; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setInt(1, topic.getNum()); ResultSet rs = ps.executeQuery(); rs.last(); total = rs.getRow(); } catch (SQLException sqle) { Elog.log("CommonAction.getRepliesByTopic()/" + sqle.getMessage()); } finally { myConn.close(); } return total; } /** * 获取一定数量的回复信息,并组合成List集合, * 主要用于页面分页相关 * for example: * ReplyObj['userinfo'] is a UserinfoModel, * ReplyObj['reply'] is a ReplyModel; * ReplyObj['file'] -> upload file * @param startRow 所要获取的起始位置 * @param pageSize 所要获取的数量 * @param topic 通过该主题获取其回复信息 * @return ReplyObj of list */ public static List<Map> getRepliesByTopic(TopicModel topic, int startRow, int pageSize) { List<Map> list = new ArrayList<Map>(); String sql = "select * from userinfo, reply " + "left join upload on (up_byTarget=r_num and up_target='r') " + "where r_byTopic=? " + "and r_byUser=u_byUser " + "and r_beRevoke!=1 " + "order by r_num asc " + "limit ?, ?"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setInt(1, topic.getNum()); ps.setInt(2, startRow); ps.setInt(3, pageSize); ResultSet rs = ps.executeQuery(); list = getRepliesOfObject(rs); } catch (SQLException sqle) { Elog.log("CommonAction.getRepliesByTopic()/" + sqle.getMessage()); } finally { myConn.close(); } return list; } /** * 该方法与ReplyAction -> getReplies(ResultSet rs)相关 * 注意:replyAction.getReplies(ResultSet) * @param rs ResultSet * @return list */ private static List<Map> getRepliesOfObject(ResultSet rs) { List<Map> list = new ArrayList<Map>(); try { while (rs.next()) { UserinfoModel userinfo = new UserinfoModel(); userinfo = UserinfoAction.getUserinfoByRS(rs); ReplyModel reply = new ReplyModel(); reply = ReplyAction.getReplyByRS(rs); FileModel file = FileAction.getFileByRS(rs); Map<String, Object> myMap = new HashMap<String, Object>(3); myMap.put("userinfo", userinfo); myMap.put("reply", reply); if (file.getName() != null) { myMap.put("file", file); } list.add(myMap); } } catch (SQLException sqle) { Elog.log("CommonAction:getRepliesOfObject:/" + sqle.getMessage()); } return list; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -