Package framework.beans.security

Source Code of framework.beans.security.BeanRights

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package framework.beans.security;

import framework.generic.ESecurity;
import framework.security.UserRight;
import framework.security.UserRightsSetAbstract;
import java.io.Serializable;

/**
* Права на выполнения комманд бина. Объект этого класса возвращается методами
* SecuredBean.SetSession и FacadeBean.initById
* @author antony
*/
public class BeanRights implements Serializable {
   
    // список прав, по причине наличия которых доступны комманды бина
    // i - я комманда доступна, если cmdAccess[i] > 0, и недоступна, если cmdAccess[i] < 0.
    // Модуль cmdAccess[i] - право, по причине наличия / отсутсвтия которого данная команда доступна / недоступна.
    private int [] cmdAccess;
   
    public BeanRights(int [] aCmdAccess) {
        cmdAccess = aCmdAccess;
    }

    @Override
    public String toString() {
        String msg = "BeanRights {\n";
        if(cmdAccess != null) {
            for (int i = 0; i < cmdAccess.length; i++) {
                int j = cmdAccess[i];
                if(j > 0) {
                    msg += "ON: ";
                } else {
                    msg += "OFF: ";
                    j = -j;
                }
                UserRight right = UserRightsSetAbstract.getRightFromID(j);
                if(right != null) {
                    msg += right.toString() + "\n";
                } else {
                    msg += "right not found:" + j +  "\n";
                }
            }
        }
        msg += "}";
        return msg;
    }
   
   
    public boolean isCommandAccessible(int aCommandId) {
        return  getCommandAccessReason(aCommandId) > 0 || ! UserRightsSetAbstract.SecurityOn;
    }
   
    /**
     * Возвращает право - причину доступности / недоступности комманды.
     * Модуль результата - право. Знак "-" - команда недоступна, знак "+" - доступна.
     * Число 0 - комманда вообще не имеет смысла, ну и не доступна конечно.
     * Этот пункт возник в случае "редактирование"
     */
    public int getCommandAccessReason(int aCommandId) {
        if (cmdAccess == null || aCommandId >= cmdAccess.length) {
            throw new RuntimeException("Внутренняя ошибка: не заполнены права бина или проверяется доступ к несуществующей команде");
        }
        int res = cmdAccess[aCommandId];
        return res;
    }
   
    /** Метод изменяет причины доступности или недоступрости комманды
     *
     * @param aCommandId
     * @param aRightOrReasonId - либо ид права, со знаком "+" или "-", либо ид. причины недоступности
     */
    public void setCommandAccessReason(int aCommandId, int aRightOrReasonId) throws ESecurity {
        if (cmdAccess == null || aCommandId >= cmdAccess.length) {
            throw new ESecurity("Внутренняя ошибка: не заполнены права бина или определяется доступ к несуществующей команде");
        }
        cmdAccess[aCommandId] = aRightOrReasonId;
    }
}
TOP

Related Classes of framework.beans.security.BeanRights

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.