All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cloudbees.syslog.Severity Maven / Gradle / Ivy

/**
 * Copyright 2010-2016 OrientDB LTD (http://orientdb.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * 	http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * For more information: http://www.orientdb.com
 */
package com.cloudbees.syslog;

import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;

/**
 * Syslog severity as defined in RFC 5424 - The Syslog Protocol.
 *
 * @author Cyrille Le Clerc
 */
public enum Severity {
    /**
     * Emergency: system is unusable, numerical code 0.
     */
    EMERGENCY(0, "EMERGENCY"),
    /**
     * Alert: action must be taken immediately, numerical code 1.
     */
    ALERT(1, "ALERT"),
    /**
     * Critical: critical conditions, numerical code 2.
     */
    CRITICAL(2, "CRITICAL"),
    /**
     * Error: error conditions, numerical code 3.
     */
    ERROR(3, "ERROR"),
    /**
     * Warning: warning conditions, numerical code 4.
     */
    WARNING(4, "WARNING"),
    /**
     * Notice: normal but significant condition, numerical code 5.
     */
    NOTICE(5, "NOTICE"),
    /**
     * Informational: informational messages, numerical code 6.
     */
    INFORMATIONAL(6, "INFORMATIONAL"),
    /**
     * Debug: debug-level messages, numerical code 7.
     */
    DEBUG(7, "DEBUG");

    // mapping
    private static final Map severityFromLabel = new HashMap();
    private static final Map severityFromNumericalCode = new HashMap();

    static {
        for (Severity severity : Severity.values()) {
            severityFromLabel.put(severity.label, severity);
            severityFromNumericalCode.put(severity.numericalCode, severity);
        }
    }

    private final int numericalCode;
    private final String label;

    private Severity(int numericalCode, String label) {
        this.numericalCode = numericalCode;
        this.label = label;
    }

    /**
     * @param numericalCode Syslog severity numerical code
     * @return Syslog severity, not {@code null}
     * @throws IllegalArgumentException the given numericalCode is not a valid Syslog severity numerical code
     */
    public static Severity fromNumericalCode(int numericalCode) throws IllegalArgumentException {
        Severity severity = severityFromNumericalCode.get(numericalCode);
        if (severity == null) {
            throw new IllegalArgumentException("Invalid severity '" + numericalCode + "'");
        }
        return severity;
    }

    /**
     * @param label Syslog severity textual code. {@code null} or empty returns {@code null}
     * @return Syslog severity, {@code null} if given value is {@code null}
     * @throws IllegalArgumentException the given value is not a valid Syslog severity textual code
     */
    public static Severity fromLabel(String label) throws IllegalArgumentException {
        if (label == null || label.isEmpty())
            return null;

        Severity severity = severityFromLabel.get(label);
        if (severity == null) {
            throw new IllegalArgumentException("Invalid severity '" + label + "'");
        }
        return severity;
    }

    /**
     * Syslog severity numerical code
     */
    public int numericalCode() {
        return numericalCode;
    }

    /**
     * Syslog severity textual code. Not {@code null}.
     */
    public String label() {
        return label;
    }

    /**
     * Compare on {@link Severity#numericalCode()}
     */
    public static Comparator comparator() {
        return new Comparator() {
            @Override
            public int compare(Severity s1, Severity s2) {
                return Integer.compare(s1.numericalCode, s2.numericalCode);
            }
        };
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy