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

📄 zonefactory.java

📁 tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛
💻 JAVA
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! */package biz.tbuy.bbs;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set;import javax.faces.model.SelectItem;import javax.faces.model.SelectItemGroup;/** * @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 ZoneFactory extends BBSFactory{    private static ZoneFactory _zoneFactory = new ZoneFactory();    private ZoneFactory() {}        /**     * 获取ZoneFactory     * @return ZoneFactory     */    public static ZoneFactory getInstance() {        return _zoneFactory;    }        /**     * 获取所有对当前用户可见的专区列表     * @return zones     */    public static List<ZoneModel> getZones() {        Map<Integer, ZoneModel> zonesMap = getBBSApplication().getZonesMap();        List<ZoneModel> zones = new ArrayList<ZoneModel>(zonesMap.size());        Set<Integer> keys = zonesMap.keySet();        for (Integer key : keys) {            ZoneModel zone = zonesMap.get(key);            if (!isVisibleZone(zone)) {                continue;            }            zones.add(zone);        }        return zones;    }        /**     * 获取所有专区下的对当前用户可访问的所有forums     * @return forums 对当前用户的所有可访问讨论区     */    public static List<ForumModel> getForums() {        List<ZoneModel> zones = ZoneFactory.getZones();        List<ForumModel> forums = new ArrayList<ForumModel>();        for (ZoneModel zone : zones) {            ZoneBuilder zBuilder = ZoneFactory.newBuilder(zone.getNum());            if (zBuilder != null) {                List<ForumModel> zForums = zBuilder.getForums();                if (zForums != null && !zForums.isEmpty()) {                    forums.addAll(zForums);                }            }        }        return forums;    }        /**     * 获取所有专区下的当前用户可访问的forums,并以SelectItemGroup的形式返回     * @return forums     */    public static List<SelectItemGroup> getForumsGroup() {        List<SelectItemGroup> forums = new ArrayList<SelectItemGroup>();        List<ZoneModel> zones = ZoneFactory.getZones();        if (!zones.isEmpty()) {            for (ZoneModel zone : zones) {                SelectItemGroup zoneG = new SelectItemGroup(zone.getName());                ZoneBuilder zBuilder = ZoneFactory.newBuilder(zone.getNum());                List<ForumModel> theForums = zBuilder.getForums();                if (theForums != null && !theForums.isEmpty()) {                    SelectItem[] items = new SelectItem[theForums.size()];                    for (int i = 0; i < theForums.size(); i++) {                        ForumModel forum = theForums.get(i);                        items[i] = new SelectItem(forum.getNum(), forum.getName());                    }                    zoneG.setSelectItems(items);                    forums.add(zoneG);                }            }        }        return forums;    }        /**     * 从所有讨论区中获取主题topics信息,按topic主键t_num的desc顺序获取,从start行起     * 数量为size的topics信息,如果获取不到数据则返回null,<br/>     * <strong>注意</strong>:只获取用户能够访问的专区及其讨论区下的topics信息     * @param start 获取的起始行     * @param size 获取的数量     * @return topics 所有专区的可访问topics信息,即整个BBS.(一定数量)     */    public static List<TopicModel> getTopics(int start, int size) {        List<TopicModel> topics = null;        List<ForumModel> forums = ZoneFactory.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;    }        /**     * 根据给定的zoneId创建一个ZoneBuilder, 该builer包含相应的zone及其authenticator     * 该方法首先判断所要获取的zone是否对当前用户可见,不可见则直接返回null;     * <strong>注意</strong>:该方法可能返回null(如果当前用户无权限访问该zone)     * @param zoneId     * @return zoneBuilder or null     */    public static ZoneBuilder newBuilder(int zoneId) {        ZoneModel zone = getBBSApplication().getZonesMap().get(zoneId);        return isVisibleZone(zone)? new ZoneBuilder(zone, AuthenticatorFactory.createAuthenticator(zone)) : null;    }        /**     * 获得指定zone的最终权限配置信息authModel     * @param zone 给定的zone,获取其最终权限配置信息     * @return authModel     */    public static AuthModel getFinalAuthModel(ZoneModel zone) {        AuthModel auth = getBBSApplication().getZonesAuthMap().get(zone.getNum());        if (auth == null) {            auth = new AuthModel();            auth.setBePost(true);            auth.setBeReply(true);            auth.setBeUpload(true);            auth.setVisible(true);        }        auth.setBeUpload(auth.getBeUpload() && getComApplication().isUpload());        return auth;    }        /**     * 通过给定的zone,获取其原本的权限配置信息,如果并未设置权限,则返回null     * @param zone     * @return authModel or null     */    public static AuthModel getAuthModel(ZoneModel zone) {        return getBBSApplication().getZonesAuthMap().get(zone.getNum());    }}

⌨️ 快捷键说明

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