001package jmri;
002
003import java.util.*;
004
005import javax.annotation.Nonnull;
006
007/**
008 * A role in the permission system.
009 *
010 * @author Daniel Bergqvist (C) 2024
011 */
012public interface Role {
013
014    @Nonnull
015    String getName();
016
017    boolean isSystemRole();
018
019    int getPriority();
020
021    @Nonnull
022    String getSystemName();
023
024    @Nonnull
025    Map<Permission,PermissionValue> getPermissions();
026
027    @Nonnull
028    PermissionValue getPermissionValue(@Nonnull Permission permission);
029
030    void setPermission(@Nonnull Permission permission, @Nonnull PermissionValue value);
031
032    boolean isGuestRole();
033
034    boolean isStandardUserRole();
035
036    boolean isAdminRole();
037
038}