RoleView.java 4.06 KB
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fi.insomnia.bortal.view;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.beans.SecurityBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.handler.SessionHandler;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight;

/**
 * 
 * @author tuukka
 */
@ManagedBean(name = "roleView")
@SessionScoped
public class RoleView {

    @EJB
    private EventBeanLocal eventbean;
    @EJB
    private RoleBeanLocal roleBean;
    private static final Logger logger = LoggerFactory.getLogger(RoleView.class);
    @EJB
    private UserBeanLocal userbean;

    private Role role;
    private DataModel<Role> items;

    private ListDataModel<RoleRight> rolerights;

    public void initCreate() {
        role = new Role(eventbean.getCurrentEvent());
    }

    public List<Role> getRoleList() {
        userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.READ);
        return roleBean.listRoles();
    }

    public DataModel<Role> getItems() {
        userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.READ);

        return items;
    }

    public DataModel<Role> getRoles() {

        items = new ListDataModel<Role>(getRoleList());

        return items;
    }

    public DataModel<RoleRight> getRoleRights() {
        userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.READ);

        if (rolerights == null) {
            logger.info("Fetching new rolerights from database");
            rolerights = new ListDataModel<RoleRight>(roleBean.getRoleRights(role));
        }
        return rolerights;
    }

    public String save() {

        userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.WRITE, "Does not have permission to modify role!");

        role = roleBean.mergeChanges(getRole());

        return "roleSaved";
    }

    public String editRoleRight() {
        userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.WRITE);

        logger.info("Roleright array: {}", rolerights);
        RoleRight row = rolerights.getRowData();
        roleBean.mergeChanges(row);
        logger.info("Saving roleright {}, r {}, w {}, x {}", new String[] { row.getPermission().toString(), new Boolean(row.isRead()).toString(), new Boolean(row.isWrite()).toString(), new Boolean(row.isExecute()).toString() });
        rolerights = null;

        return "editRoleright";
    }

    public String create() {

        userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.WRITE, "Does not have permission to create role!");
        logger.debug("Creating role {}", getRole());
        role = roleBean.create(getRole());
        return "roleCreated";
    }

    public String edit() {
        userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.READ);

        logger.info("Editing row from items");
        setRole(items.getRowData());
        rolerights = null;
        items = null;

        return "roleEdit";
    }

    /** Creates a new instance of RoleView */
    public RoleView() {
    }

    /**
     * @return the role
     */
    public Role getRole() {
        userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.READ);

        return role;
    }

    /**
     * @param role
     *            the role to set
     */
    public void setRole(Role role) {
        this.role = role;
    }

    /**
     * @return the possibleParents
     */
    public List<Role> getPossibleParents() {
        return roleBean.getPossibleParents(getRole());
    }

}