📄 zonebuilder.java
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! */package biz.tbuy.bbs;import java.util.ArrayList;import java.util.List;/** * @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 ZoneBuilder extends Builder{ private ZoneModel _zone; // 当前的zone private AuthZone _authenticator; // 包含最终对于当前用户的相对权限 public ZoneBuilder() {} public ZoneBuilder(ZoneModel zone, AuthZone authenticator) { _zone = zone; _authenticator = authenticator; } /** * 获取当前builder里的zone, 如果用户无权限,则返回null * @return zone or null */ public ZoneModel getZone() { return _authenticator.isVisible() ? _zone : null; } /** * 获取其下的所有对当前用户可见的讨论区列表,该方法首先判断zone对 * 用户是否是可见的,如果不可见则直接返回null, 否则再检查其内的讨论区 * @return forums or null 所有对当前用户可见的讨论区列表 */ public List<ForumModel> getForums() { if (_zone == null) return null; if (!_authenticator.isVisible()) return null; return getForums(getBBSApplication().getForumsGroup().get(_zone.getNum())); } /** * 获取zone下的topic信息,按topic主键t_num的desc排序,只获取当前用户有权访问的信息, * 举例,如果用户在该zone下的某一forum中不存在权限,则不会获取该forum下的主题信息 * @param start 起始行 * @param size 获取的最高数量 * @param topics 该zone下的一部分topics信息 */ public List<TopicModel> getTopics(int start, int size) { List<TopicModel> topics = null; // 选获取对用户可见的forum的id数组 List<ForumModel> forums = getForums(); if (forums != null && !forums.isEmpty()) { int[] fid = new int[forums.size()]; for (int i = 0; i < forums.size(); i++) { fid[i] = forums.get(i).getNum(); } topics = TopicAction.getTopicByForums(fid, start, size); } return topics; } /** * 通过给定的讨论区列表,获取其中对当前用户可见的部分。 * @param forums 所给定的讨论区列表 * @return forums or null对当前用户可见的列表 */ private List<ForumModel> getForums(List<ForumModel> forums) { if (forums == null || forums.isEmpty()) return null; List<ForumModel> ffs = new ArrayList<ForumModel>(forums.size()); for (ForumModel forum : forums) { ForumBuilder fBuilder = ForumFactory.newBuilder(forum.getNum()); if (fBuilder.getForum() != null) { ffs.add(forum); } } return ffs; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -