package org.wikiwebserver.core;

/**
 * @author Michael Gardiner
 *
 */
public enum Privilege {
    
    BANNED          (0,   "Banned"),
    GUEST           (100, "Guest"),
    USER            (200, "Standard user"),
    PREMIUM_USER    (300, "Premium user"), 
    MODERATOR       (400, "Moderator"),
    ADMIN           (500, "Administrator"),
    SUPER_ADMIN     (600, "Super administrator");
    
    private int value;
    private String label;
    
    Privilege(int value, String label) {
        this.value = value;
        this.label = label;
    }
    
    public String getLabel() {
        return label;
    }
    
    public int getValue() {
        return value;
    }
    
    public boolean isAbove(Privilege test) {
        return this.getValue() > test.getValue();
    }
    
    public boolean isBelow(Privilege test) {
        return this.getValue() < test.getValue();
    }    
    
    public static Privilege getPrivilegeFromValue(int value) {
        for (Privilege p : Privilege.values()) {
            if (p.getValue() == value) {
                return p;
            }
        }
        return Privilege.GUEST;
    }
    
    public static Privilege getPrivilegeFromLabel(String label) {
        for (Privilege p : Privilege.values()) {
            if (p.getLabel().equals(label)) {
                return p;
            }
        }
        return Privilege.GUEST;
    }    
}

