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

📄 forumproxy.java

📁 这是学习Java必须读懂两套源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            ForumThread thread = forum.createThread(rootMessage);
            return new ForumThreadProxy(thread, authorization, permissions);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public ForumMessage createMessage(User user)
            throws UnauthorizedException
    {
        if (permissions.get(ForumPermissions.CREATE_MESSAGE) ||
                permissions.get(ForumPermissions.CREATE_THREAD) )
        {
            //The user must be anonymous or the actual user in order to post as
            //that user. Otherwise, throw an exception.
            if (user.hasPermission(ForumPermissions.USER_ADMIN) ||
                user.isAnonymous() )
            {
                ForumMessage message = forum.createMessage(user);
                return new ForumMessageProxy(message, authorization, permissions);
            }
            else {
                throw new UnauthorizedException();
            }

        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void deleteThread(ForumThread thread) throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin() || permissions.get(ForumPermissions.MODERATOR)) {
            forum.deleteThread(thread);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void moveThread(ForumThread thread, Forum newForum) throws
            UnauthorizedException, IllegalArgumentException
    {
        //If the user is an amdin of both forums
        if (permissions.isSystemOrForumAdmin() && (
                newForum.hasPermission(ForumPermissions.SYSTEM_ADMIN) ||
                newForum.hasPermission(ForumPermissions.FORUM_ADMIN)))
        {
            forum.moveThread(thread, newForum);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void addThread(ForumThread thread) throws UnauthorizedException
    {
        if (permissions.get(ForumPermissions.CREATE_THREAD)) {
            forum.addThread(thread);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public ForumThread getThread(int threadID) throws ForumThreadNotFoundException
    {
        ForumThread thread = forum.getThread(threadID);
        //Apply protection proxy and return.
        return new ForumThreadProxy(thread, authorization, permissions);
    }

    public Iterator threads() {
        Iterator iterator = forum.threads();
        return new ThreadIteratorProxy(iterator, authorization, permissions);
    }

    public Iterator threads(int startIndex, int numResults) {
        Iterator iterator = forum.threads(startIndex, numResults);
        return new ThreadIteratorProxy(iterator, authorization, permissions);
    }

    public int getThreadCount() {
        return forum.getThreadCount();
    }

    public int getMessageCount() {
        return forum.getMessageCount();
    }

    public Query createQuery() {
        return new QueryProxy(forum.createQuery(), authorization, permissions);
    }

    public void addUserPermission(User user, int permissionType)
            throws UnauthorizedException
    {
        //Don't let someone become a System Admin through this method.
        //The ForumPermissions class probably needs to be changed.
        if (permissionType == ForumPermissions.SYSTEM_ADMIN) {
            throw new UnauthorizedException();
        }
        if (permissions.isSystemOrForumAdmin()) {
            forum.addUserPermission(user, permissionType);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void removeUserPermission(User user, int permissionType)
            throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin()) {
            forum.removeUserPermission(user, permissionType);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public int [] usersWithPermission(int permissionType)
            throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin()) {
            return forum.usersWithPermission(permissionType);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void addGroupPermission(Group group, int permissionType)
            throws UnauthorizedException
    {
        //Don't let someone become a System Admin through this method.
        //The ForumPermissions class probably needs to be changed.
        if (permissionType == ForumPermissions.SYSTEM_ADMIN) {
            throw new UnauthorizedException();
        }
        if (permissions.isSystemOrForumAdmin()) {
            forum.addGroupPermission(group, permissionType);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void removeGroupPermission(Group group, int permissionType)
            throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin()) {
            forum.removeGroupPermission(group, permissionType);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public int[] groupsWithPermission(int permissionType)
            throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin()) {
            return forum.groupsWithPermission(permissionType);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public ForumMessageFilter[] getForumMessageFilters()
            throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin()) {
            return forum.getForumMessageFilters();
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void addForumMessageFilter(ForumMessageFilter filter)
            throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin()) {
            forum.addForumMessageFilter(filter);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void addForumMessageFilter(ForumMessageFilter filter, int index)
            throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin()) {
            forum.addForumMessageFilter(filter, index);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public void removeForumMessageFilter(int index)
            throws UnauthorizedException
    {
        if (permissions.isSystemOrForumAdmin()) {
            forum.removeForumMessageFilter(index);
        }
        else {
            throw new UnauthorizedException();
        }
    }

    public ForumMessage applyFilters(ForumMessage message) {
        return forum.applyFilters(message);
    }

    public ForumPermissions getPermissions(Authorization authorization) {
        return forum.getPermissions(authorization);
    }

    public boolean hasPermission(int type) {
        return permissions.get(type);
    }

    public String toString() {
        return forum.toString();
    }
}

⌨️ 快捷键说明

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