📄 forumbuilder.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.Utils;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 ForumBuilder extends BaseBean{ private ForumModel _forum; // 当前讨论区 private AuthForum _authenticator; // 包含最终对于当前用户的相对权限 public ForumBuilder(ForumModel forum, AuthForum authenticator) { _forum = forum; _authenticator = authenticator; } /** * 获取该builder下的forum,如果讨论区不可访问则返回null; * @return forum or null */ public ForumModel getForum() { return _authenticator.isVisible() ? _forum : null; } /** * 获取当前用户相对于该forum的所有权限 * @return authenticator */ public Authenticator getAuthenticator() { return _authenticator; } /** * 获取当前builder下的所有主题信息的数量 * @return total */ public int getTotalTopics() { if (!isView()) return 0; // 检查权限 return TopicAction.getTotalTopicsByForumId(_forum.getNum()); } /** * 获取<b>一定量</b>的当前builder下的主题信息列表及其相应的最后回复信息, * 该方法主要用于分页查询,返回类型为List并包含Map. for example:<br> * topicsObj(0).get("topic") 获得主题TopicModel;<br> * topicsObj(0).get("lastReply") 获得最后的回复 ReplyModel;<br> * @param startRow 获取的起始行 * @param pageSize 获取的数量 * @return topicsObj */ public List<Map> getTopicsObjectForPage(int startRow, int pageSize) { if (!isView()) return null; // 检查相应权限 List<Map> list = new ArrayList<Map>(); List<TopicModel> topics = TopicAction.getTopicsForPageByForumId( startRow, pageSize, _forum.getNum()); for (TopicModel topic : topics) { ReplyModel reply = ReplyAction.getLastReplyByTopicId(topic.getNum()); Map<String, Object> myMap = new HashMap<String, Object>(2); myMap.put("topic", topic); myMap.put("lastReply", reply); list.add(myMap); } return list; } /** * 接收一个来自于其他讨论区的topic,主要用于主题信息的移动 * @param topic 准备接收的topic * @return true or false */ public boolean receiveTopic(TopicModel topic) { if (!isPost()) return false; // 检查相应权限 topic.setByForum(_forum.getNum()); return TopicAction.updateTopic(topic); } // ------------------------------------------------------------ check authenticator // 检查该专区是否可发表新的主题 private boolean isPost() { if (!_authenticator.isPost()) { Utils.addErrorMessage(getBundle(), "对不起,你所选择的讨论区当前不允许发表主题"); return false; } else { return true; } } // 检查该专区是否可见 private boolean isView() { if (!_authenticator.isVisible()) { Utils.addErrorMessage(getBundle(), "对不起,讨论区不可见!"); return false; } else { return true; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -