alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/auth/AbstractPermission.java,v 1.8 2005/01/24 12:33:58 minhnn Exp $
 * $Author: minhnn $
 * $Revision: 1.8 $
 * $Date: 2005/01/24 12:33:58 $
 *
 * ====================================================================
 *
 * Copyright (C) 2002-2005 by MyVietnam.net
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * All copyright notices regarding mvnForum MUST remain intact
 * in the scripts and in the outputted HTML.
 * The "powered by" text/logo with a link back to
 * http://www.mvnForum.com and http://www.MyVietnam.net in the
 * footer of the pages MUST remain visible when the pages
 * are viewed on the internet or intranet.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * Support can be obtained from support forums at:
 * http://www.mvnForum.com/mvnforum/index
 *
 * Correspondence and Marketing Questions can be sent to:
 * info@MyVietnam.net
 *
 * @author: Minh Nguyen  minhnn@MyVietnam.net
 * @author: Mai  Nguyen  mai.nh@MyVietnam.net
 */
package com.mvnforum.auth;

import net.myvietnam.mvncore.exception.BadInputException;
import net.myvietnam.mvncore.exception.NotLoginException;

public abstract class AbstractPermission implements MVNForumPermission {

    public static final int[] globalCombinedPermissionArray =
        {
            PERMISSION_SYSTEM_ADMIN,

            // below are forum-appliable permissions
            PERMISSION_FORUM_ADMIN,
            PERMISSION_FORUM_MODERATOR,
            PERMISSION_POWER_USER,
            PERMISSION_NORMAL_USER,
            PERMISSION_LIMITED_USER
        };

    public static final int[] forumCombinedPermissionArray =
        {
            PERMISSION_FORUM_ADMIN,
            PERMISSION_FORUM_MODERATOR,
            PERMISSION_POWER_USER,
            PERMISSION_NORMAL_USER,
            PERMISSION_LIMITED_USER
        };

    public static final int[] globalIndividualPermissionArray =
        {
            //PERMISSION_LOGIN,//minhnn: login is not used, so I removed it to avoid confusion
            //PERMISSION_ADMIN_SYSTEM,
            PERMISSION_ADD_CATEGORY,
            PERMISSION_EDIT_CATEGORY,
            PERMISSION_DELETE_CATEGORY,
            PERMISSION_ADD_FORUM,

            // these 2 permission should be in forum-appliable permissions,
            // However, I put it here for the more natural order that user
            // can see in interface
            PERMISSION_EDIT_FORUM,
            PERMISSION_DELETE_FORUM,
            PERMISSION_ASSIGN_TO_FORUM,
            PERMISSION_BYPASS_PRIVATE_FORUM,

            // forum-nonappliable permissions
            PERMISSION_SEND_MAIL,
            PERMISSION_USE_MESSAGE,
            PERMISSION_ADD_MESSAGE_ATTACHMENT,
            PERMISSION_USE_AVATAR,

            // below are forum-appliable permissions
            PERMISSION_MODERATE_THREAD,
            PERMISSION_READ_POST,
            PERMISSION_ADD_THREAD,
            PERMISSION_ADD_POST,
            PERMISSION_EDIT_POST,
            PERMISSION_DELETE_POST,
            PERMISSION_ADD_POLL,
            PERMISSION_EDIT_POLL,
            PERMISSION_DELETE_POLL,
            PERMISSION_ADD_ATTACHMENT,
            PERMISSION_GET_ATTACHMENT
        };

    public static final int[] forumIndividualPermissionArray =
        {
            PERMISSION_EDIT_FORUM,
            PERMISSION_DELETE_FORUM,
            PERMISSION_ASSIGN_TO_FORUM,
            PERMISSION_MODERATE_THREAD,
            PERMISSION_READ_POST,
            PERMISSION_ADD_THREAD,
            PERMISSION_ADD_POST,
            PERMISSION_EDIT_POST,
            PERMISSION_DELETE_POST,
            PERMISSION_ADD_POLL,
            PERMISSION_EDIT_POLL,
            PERMISSION_DELETE_POLL,
            PERMISSION_ADD_ATTACHMENT,
            PERMISSION_GET_ATTACHMENT
        };

/**************************************************************************
 * global permissions variables
 **************************************************************************/
    protected boolean authenticated        = false;

    protected boolean activated            = false;

    protected boolean login                = false;

    protected boolean adminSystem          = false;

    protected boolean addForum             = false;

    protected boolean addCategory          = false;

    protected boolean editCategory         = false;

    protected boolean deleteCategory       = false;

    protected boolean sendMail             = false;

    protected boolean useAvatar            = false;

    protected boolean useMessage           = false;

    protected boolean addMessageAttachment = false;

/**************************************************************************
 * individual forum permissions variables
 **************************************************************************/
    protected ForumListPermission editForum     = new ForumListPermission();

    protected ForumListPermission deleteForum   = new ForumListPermission();

    protected ForumListPermission assignToForum = new ForumListPermission();

    protected ForumListPermission readPost      = new ForumListPermission();

    protected ForumListPermission addThread     = new ForumListPermission();

    protected ForumListPermission addPost       = new ForumListPermission();

    protected ForumListPermission editPost      = new ForumListPermission();

    protected ForumListPermission deletePost    = new ForumListPermission();

    protected ForumListPermission addPoll       = new ForumListPermission();

    protected ForumListPermission editPoll      = new ForumListPermission();

    protected ForumListPermission deletePoll    = new ForumListPermission();

    protected ForumListPermission addAttachment = new ForumListPermission();

    protected ForumListPermission getAttachment = new ForumListPermission();

    protected ForumListPermission moderateThread = new ForumListPermission();

    /**
     * constructor
     */
    protected AbstractPermission() {
    }

/**************************************************************************
 * The below methods are static methods
 **************************************************************************/

    public static String getDescription(int permission) throws BadInputException {
        String desc = "";

        switch (permission) {
            /**************************************************************************
             * Combined permissions
             **************************************************************************/
            case PERMISSION_SYSTEM_ADMIN:
                desc = "System Admin (Combined Permission)";
                break;

            case PERMISSION_FORUM_ADMIN:
                desc = "Forum Admin (Combined Permission)";
                break;

            case PERMISSION_FORUM_MODERATOR:
                desc = "Forum Moderator (Combined Permission)";
                break;

            case PERMISSION_LIMITED_USER:
                desc = "Limited User (Combined Permission)";
                break;

            case PERMISSION_NORMAL_USER:
                desc = "Normal User (Combined Permission)";
                break;

            case PERMISSION_POWER_USER:
                desc = "Power User (Combined Permission)";
                break;

            /**************************************************************************
             * Individual permissions
             **************************************************************************/
            case PERMISSION_LOGIN:
                desc = "Can Login";
                break;

            //case PERMISSION_ADMIN_SYSTEM:
            //    desc = "Admin System";
            //    break;

            case PERMISSION_ADD_FORUM:
                desc = "Add Forum";
                break;

            case PERMISSION_EDIT_FORUM:
                desc = "Edit Forum";
                break;

            case PERMISSION_DELETE_FORUM:
                desc = "Delete Forum";
                break;

            case PERMISSION_ASSIGN_TO_FORUM:
                desc = "Assign To Forum";
                break;

            case PERMISSION_ADD_CATEGORY:
                desc = "Add Category";
                break;

            case PERMISSION_EDIT_CATEGORY:
                desc = "Edit Category";
                break;

            case PERMISSION_DELETE_CATEGORY:
                desc = "Delete Category";
                break;

            case PERMISSION_SEND_MAIL:
                desc = "Send Mail";
                break;

            case PERMISSION_BYPASS_PRIVATE_FORUM:
                desc = "Bypass Private Forum";
                break;

            case PERMISSION_USE_MESSAGE:
                desc = "Use Private Message";
                break;

            case PERMISSION_ADD_MESSAGE_ATTACHMENT:
                desc = "Upload Attachment in Private Message";
                break;

            case PERMISSION_USE_AVATAR:
                desc = "Use Avatar";
                break;

            case PERMISSION_READ_POST:
                desc = "Read Post";
                break;

            case PERMISSION_ADD_THREAD:
                desc = "Add Thread";
                break;

            case PERMISSION_ADD_POST:
                desc = "Add Post";
                break;

            case PERMISSION_EDIT_POST:
                desc = "Edit Post";
                break;

            case PERMISSION_DELETE_POST:
                desc = "Delete Post";
                break;

            case PERMISSION_ADD_POLL:
                desc = "Add Poll";
                break;

            case PERMISSION_EDIT_POLL:
                desc = "Edit Poll";
                break;

            case PERMISSION_DELETE_POLL:
                desc = "Delete Poll";
                break;

            case PERMISSION_ADD_ATTACHMENT:
                desc = "Add Attachment";
                break;

            case PERMISSION_GET_ATTACHMENT:
                desc = "Get Attachment";
                break;

            case PERMISSION_MODERATE_THREAD:
                desc = "Moderate Thread";
                break;


            default:
                throw new BadInputException("Currently do not support permission = " + permission);
        }//switch

        return desc;
    }

/**************************************************************************
 * Special permissions methods
 **************************************************************************/

    public boolean isAuthenticated() {
        return authenticated;
    }
    public void ensureIsAuthenticated() throws AuthenticationException {
        if (authenticated == false) {
            throw new AuthenticationException(NotLoginException.NOT_LOGIN);
        }
    }

    public boolean isActivated() {
        return activated;
    }
    public void ensureIsActivated() throws AuthenticationException {
        if (activated == false) {
            throw new AuthenticationException(NotLoginException.NOT_ACTIVATED);
        }
    }

/**************************************************************************
 * global permissions methods
 **************************************************************************/

    public boolean canLogin() {
        return login;
    }
    public void ensureCanLogin() throws AuthenticationException {
        if (login == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAdminSystem() {
        return adminSystem;
    }
    public void ensureCanAdminSystem() throws AuthenticationException {
        if (adminSystem == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAddForum() {
        return addForum;
    }
    public void ensureCanAddForum() throws AuthenticationException {
        if (addForum == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAddCategory() {
        return addCategory;
    }
    public void ensureCanAddCategory() throws AuthenticationException {
        if (addCategory == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canEditCategory() {
        return editCategory;
    }
    public void ensureCanEditCategory() throws AuthenticationException {
        if (editCategory == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canDeleteCategory() {
        return deleteCategory;
    }
    public void ensureCanDeleteCategory() throws AuthenticationException {
        if (deleteCategory == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canSendMail() {
        return sendMail;
    }
    public void ensureCanSendMail() throws AuthenticationException {
        if (sendMail == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canUseAvatar() {
        return useAvatar;
    }
    public void ensureCanUseAvatar() throws AuthenticationException {
        if (useAvatar == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canUseMessage() {
        return useMessage;
    }
    public void ensureCanUseMessage() throws AuthenticationException {
        if (useMessage == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAddMessageAttachment() {
        return addMessageAttachment;
    }
    public void ensureCanAddMessageAttachment() throws AuthenticationException {
        if (addMessageAttachment == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }


/**************************************************************************
 * individual forum permissions methods
 **************************************************************************/
    // For Forum Admin only
    public boolean canEditForum(int forumID) {
        return editForum.hasPermssion(forumID);
    }
    public void ensureCanEditForum(int forumID) throws AuthenticationException {
        if (canEditForum(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canDeleteForum(int forumID) {
        return deleteForum.hasPermssion(forumID);
    }
    public void ensureCanDeleteForum(int forumID) throws AuthenticationException {
        if (canDeleteForum(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAssignToForum(int forumID) {
        return assignToForum.hasPermssion(forumID);
    }
    public void ensureCanAssignToForum(int forumID) throws AuthenticationException {
        if (canAssignToForum(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    // Moderator and below permission
    public boolean canReadPost(int forumID) {
        return readPost.hasPermssion(forumID);
    }
    public void ensureCanReadPost(int forumID) throws AuthenticationException {
        if (canReadPost(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAddThread(int forumID) {
        return addThread.hasPermssion(forumID);
    }
    public void ensureCanAddThread(int forumID) throws AuthenticationException {
        if (canAddThread(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAddPost(int forumID) {
        return addPost.hasPermssion(forumID);
    }
    public void ensureCanAddPost(int forumID) throws AuthenticationException {
        if (canAddPost(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canEditPost(int forumID) {
        return editPost.hasPermssion(forumID);
    }
    public void ensureCanEditPost(int forumID) throws AuthenticationException {
        if (canEditPost(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canDeletePost(int forumID) {
        return deletePost.hasPermssion(forumID);
    }
    public void ensureCanDeletePost(int forumID) throws AuthenticationException {
        if (canDeletePost(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAddPoll(int forumID) {
        return addPoll.hasPermssion(forumID);
    }
    public void ensureCanAddPoll(int forumID) throws AuthenticationException {
        if (canAddPoll(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canEditPoll(int forumID) {
        return editPoll.hasPermssion(forumID);
    }
    public void ensureCanEditPoll(int forumID) throws AuthenticationException {
        if (canEditPoll(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canDeletePoll(int forumID) {
        return deletePoll.hasPermssion(forumID);
    }
    public void ensureCanDeletePoll(int forumID) throws AuthenticationException {
        if (canDeletePoll(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canAddAttachment(int forumID) {
        return addAttachment.hasPermssion(forumID);
    }
    public void ensureCanAddAttachment(int forumID) throws AuthenticationException {
        if (canAddAttachment(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canGetAttachment(int forumID) {
        return getAttachment.hasPermssion(forumID);
    }
    public void ensureCanGetAttachment(int forumID) throws AuthenticationException {
        if (canGetAttachment(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    public boolean canModerateThread(int forumID) {
        return moderateThread.hasPermssion(forumID);
    }
    public void ensureCanModerateThread(int forumID) throws AuthenticationException {
        if (canModerateThread(forumID) == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    /**************************************************************************
     * individual forum permissions methods
     **************************************************************************/
    // For Forum Admin only
    public boolean canEditAnyForum() {
        return editForum.hasPermssionInAnyForums();
    }
    public void ensureCanEditAnyForum() throws AuthenticationException {
        if (canEditAnyForum() == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

    // For moderation thread
    public boolean canModerateThreadInAnyForum() {
        return moderateThread.hasPermssionInAnyForums();
    }
    public void ensureCanModerateThreadInAnyForum() throws AuthenticationException {
        if (canModerateThreadInAnyForum() == false) {
            throw new AuthenticationException(NotLoginException.NOT_ENOUGH_RIGHTS);
        }
    }

}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.