package auth.types; import com.avaje.ebean.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import java.util.*; public enum RoleType { @EnumValue("ADMIN")ADMIN("ADMIN", "Administrator", new PermissionType[]{ PermissionType.READ, PermissionType.WRITE, PermissionType.INVOICING, PermissionType.ADMIN }), @EnumValue("INVOICING")INVOICING("Invoicing", "Fakturering", new PermissionType[]{ PermissionType.READ, PermissionType.WRITE, PermissionType.INVOICING }), @EnumValue("READWRITE")READWRITE("READWRITE", "Bruker", new PermissionType[]{ PermissionType.READ, PermissionType.WRITE }), @EnumValue("READONLY")READONLY("READONLY", "Kun lesetilgang", new PermissionType[]{ PermissionType.READ }); private String code; private String name; private List<PermissionType> permissions; private static final Map<String, RoleType> CODE_LOOKUP = new HashMap<>(); private static final Map<String, RoleType> NAME_LOOKUP = new HashMap<>(); static { for (RoleType roleType : EnumSet.allOf(RoleType.class)) { CODE_LOOKUP.put(roleType.getCode(), roleType); NAME_LOOKUP.put(roleType.getName(), roleType); } } public static RoleType get(String code) { if (code == null) { return null; } return CODE_LOOKUP.get(code.toUpperCase()); } RoleType(String code, String name, PermissionType[] permissionTypes) { this.code = code; this.name = name; if (permissionTypes != null) { this.permissions = Arrays.asList(permissionTypes); } } public String getCode() { return code; } @JsonValue public String getName() { return name; } @JsonCreator public static RoleType createByName(String name) { return name == null ? null : NAME_LOOKUP.get(name); } public List<PermissionType> getPermissions() { return permissions; } }