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;
}
}