All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.stanford.protege.webprotege.access.BuiltInRole Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.access;

import com.google.common.base.CaseFormat;
import com.google.common.collect.ImmutableList;
import edu.stanford.protege.webprotege.authorization.RoleId;

import java.util.Arrays;

import static edu.stanford.protege.webprotege.access.BuiltInAction.*;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 5 Jan 2017
 */
public enum BuiltInRole {

    // Application Roles

    PROJECT_CREATOR(CREATE_EMPTY_PROJECT),

    PROJECT_UPLOADER(UPLOAD_PROJECT),

    ACCOUNT_CREATOR(CREATE_ACCOUNT),

    USER_ADMIN(ACCOUNT_CREATOR,
               VIEW_ANY_USER_DETAILS,
               DELETE_ANY_ACCOUNT,
               RESET_ANY_USER_PASSWORD),

    SYSTEM_ADMIN(USER_ADMIN,
                 MOVE_ANY_PROJECT_TO_TRASH,
                 SUBSTITUTE_USER,
                 EDIT_APPLICATION_SETTINGS,
                 REBUILD_PERMISSIONS),


    // Project Roles

    PROJECT_DOWNLOADER(DOWNLOAD_PROJECT),



    ISSUE_VIEWER(VIEW_ANY_ISSUE),

    ISSUE_COMMENTER(ISSUE_VIEWER,
                    COMMENT_ON_ISSUE),

    ISSUE_CREATOR(ISSUE_COMMENTER,
                  CREATE_ISSUE,
                  ASSIGN_OWN_ISSUE_TO_SELF,
                  CLOSE_OWN_ISSUE),

    ISSUE_MANAGER(ISSUE_CREATOR,
                  ASSIGN_ANY_ISSUE_TO_ANYONE,
                  CLOSE_ANY_ISSUE,
                  UPDATE_ANY_ISSUE_TITLE,
                  UPDATE_ANY_ISSUE_BODY),



    PROJECT_VIEWER(VIEW_PROJECT,
                   VIEW_OBJECT_COMMENT,
                   EDIT_OWN_OBJECT_COMMENT,
                   ADD_OR_REMOVE_VIEW,
                   ADD_OR_REMOVE_PERSPECTIVE,
                   VIEW_CHANGES,
                   WATCH_CHANGES),

    OBJECT_COMMENTER(PROJECT_VIEWER,
                     CREATE_OBJECT_COMMENT,
                     EDIT_OWN_OBJECT_COMMENT,
                     SET_OBJECT_COMMENT_STATUS,
                     EDIT_ENTITY_TAGS),

    PROJECT_EDITOR(OBJECT_COMMENTER,
                   EDIT_ONTOLOGY,
                   EDIT_ONTOLOGY_ANNOTATIONS,
                   CREATE_CLASS,
                   DELETE_CLASS,
                   MERGE_ENTITIES,
                   CREATE_PROPERTY,
                   DELETE_PROPERTY,
                   CREATE_INDIVIDUAL,
                   DELETE_INDIVIDUAL,
                   CREATE_DATATYPE,
                   DELETE_DATATYPE,
                   REVERT_CHANGES),

    LAYOUT_EDITOR(ADD_OR_REMOVE_PERSPECTIVE,
                  ADD_OR_REMOVE_VIEW),

    PROJECT_MANAGER(PROJECT_EDITOR,
                    LAYOUT_EDITOR,
                    SAVE_DEFAULT_PROJECT_LAYOUT,
                    EDIT_PROJECT_SETTINGS,
                    EDIT_DEFAULT_VISUALIZATION_SETTINGS,
                    EDIT_SHARING_SETTINGS,
                    EDIT_NEW_ENTITY_SETTINGS,
                    EDIT_PROJECT_PREFIXES,
                    UPLOAD_AND_MERGE,
                    EDIT_PROJECT_TAGS,
                    EDIT_FORMS,
                    UPLOAD_AND_MERGE_ADDITIONS,
                    EDIT_PROJECT_TAGS),


    // Roles that relate to the UI

    CAN_VIEW(PROJECT_VIEWER, ISSUE_VIEWER, PROJECT_DOWNLOADER),

    CAN_COMMENT(CAN_VIEW, ISSUE_CREATOR, OBJECT_COMMENTER),

    CAN_EDIT(PROJECT_EDITOR, CAN_COMMENT),

    CAN_MANAGE(CAN_EDIT, PROJECT_MANAGER, ISSUE_MANAGER)

    ;






    private final RoleId roleId;

    private final ImmutableList parents;

    private final ImmutableList actions;



    BuiltInRole(ImmutableList parents, ImmutableList actions) {
        this.roleId = new RoleId(CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name()));
        this.parents = parents;
        this.actions = actions;
    }

    BuiltInRole(BuiltInAction... actions) {
        this(ImmutableList.of(), ImmutableList.copyOf(Arrays.asList(actions)));
    }


    BuiltInRole(BuiltInRole parentRole, BuiltInAction... actions) {
        this(ImmutableList.of(parentRole), ImmutableList.copyOf(Arrays.asList(actions)));
    }

    BuiltInRole(BuiltInRole parentRole1, BuiltInRole parentRole2, BuiltInAction... actions) {
        this(ImmutableList.of(parentRole1, parentRole2), ImmutableList.copyOf(Arrays.asList(actions)));
    }

    BuiltInRole(BuiltInRole parentRole1, BuiltInRole parentRole2, BuiltInRole parentRole3, BuiltInAction... actions) {
        this(ImmutableList.of(parentRole1, parentRole2, parentRole3), ImmutableList.copyOf(Arrays.asList(actions)));
    }

    public RoleId getRoleId() {
        return roleId;
    }

    public ImmutableList getParents() {
        return parents;
    }

    public ImmutableList getActions() {
        return actions;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy