RightState.java 2.15 KB
package net.ziemers.swxercise.lg.user.enums;

/**
 * Stellt grundsätzliche Rechte zur Verfügung, die so mit hoher Wahrscheinlichkeit
 * in vielen Anwendungen verwendet werden möchten.
 *
 * Copyright (c) 2017 Dipl.-Inform. Thomas Ziemer
 *
 * This file is part of swXercise.
 *
 * swXercise is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 3
 * of the License, or (at your option) any later version.
 *
 * swXercise is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with swXercise.
 * If not, see <http://www.gnu.org/licenses/>.
 */
public enum RightState {

    NOT_LOGGED_IN(Constants.NOT_LOGGED_IN),
    LOGGED_IN(Constants.LOGGED_IN),
    ADMIN(Constants.ADMIN),
    USER(Constants.USER),
    ;

    private String name;

    RightState(final String name) {
        if (!this.name().equals(name)) {
          throw new ExceptionInInitializerError("Constant string didn't match enum name");
        }
        this.name = name;
    }

    public static RightState getByName(final String name) {
        for (RightState value : values()) {
            // die Groß-/Kleinschreibung soll beim Vergleich keine Rolle spielen
            if (value.name().equalsIgnoreCase(name)) {
                return value;
            }
        }
        return null;
    }

    public String getName() {
        return name;
    }

    @SuppressWarnings("unused")
	private void setName(String name) {
        this.name = name;
    }

    /*
     * Diese Klasse wird verwendet, damit wir innerhalb von Annotationen auf die Namen zugreifen können.
     */
    public static class Constants {
        public static final String NOT_LOGGED_IN = "NOT_LOGGED_IN";
        public static final String LOGGED_IN = "LOGGED_IN";
        public static final String ADMIN = "ADMIN";
        public static final String USER = "USER";
    }

}