package edu.ualberta.med.biobank.model; import java.util.Arrays; import java.util.Collections; import java.util.List; // TODO: consider making Rank an @Embeddable with an isManager and an isAllPermissions components, perhaps serialized to an int? a bit array? public enum Rank { NORMAL(0, "Normal"), MANAGER(1, "Manager"), ADMINISTRATOR(2, "Administrator"); private static final List<Rank> VALUES_LIST = Collections .unmodifiableList(Arrays.asList(values())); private final byte rank; private final String name; private Rank(int rank, String name) { this.rank = (byte) rank; this.name = name; } public static List<Rank> valuesList() { return VALUES_LIST; } public byte getId() { return rank; } public String getName() { return name; } public boolean isLt(Rank that) { return this.rank < that.rank; } public boolean isLe(Rank that) { return this.rank <= that.rank; } public boolean isGt(Rank that) { return this.rank > that.rank; } public boolean isGe(Rank that) { return this.rank >= that.rank; } public static Rank fromId(byte rank) { for (Rank item : values()) { if (item.rank == rank) { return item; } } return NORMAL; } }