/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You 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.
*/
package org.apache.persistence.logging;
/**
* A level measures the importance of a entry in a log file.
*
* The priorty of level from highest to lowest is:
* <OL>
* <LI>ALL</LI>
* <LI>SEVERE</LI>
* <LI>WARNING</LI>
* <LI>INFO</LI>
* <LI>CONFIG</LI>
* <LI>FINE</LI>
* <LI>FINER</LI>
* <LI>FINEST</LI>
* <LI>OFF</LI>
* </OL>
*/
public class Level {
public static final Level OFF = new Level("OFF", 4);
public static final Level SEVERE = new Level("SEVERE", 3);
public static final Level WARNING = new Level("WARNING", 2);
public static final Level INFO = new Level("INFO", 1);
public static final Level CONFIG = new Level("CONFIG", 0);
public static final Level FINE = new Level("FINE", -1);
public static final Level FINER = new Level("FINER", -2);
public static final Level FINEST = new Level("FINEST", -3);
public static final Level ALL = new Level("ALL", -4);
private String name;
private int value;
/**
* Creates a new <code>Level</code> with a given name and integer value.
*/
protected Level(String name, int value) {
this.name = name;
this.value = value;
}
/**
* Creates a new <code>Level</code> from a string. The string should be something like "FINER" or
* "42".
*/
public static Level parse(String name) {
if (name.equalsIgnoreCase("OFF")) {
return (OFF);
} else if (name.equalsIgnoreCase("SEVERE")) {
return (SEVERE);
} else if (name.equalsIgnoreCase("WARNING")) {
return (WARNING);
} else if (name.equalsIgnoreCase("INFO")) {
return (INFO);
} else if (name.equalsIgnoreCase("CONFIG")) {
return (CONFIG);
} else if (name.equalsIgnoreCase("FINE")) {
return (FINE);
} else if (name.equalsIgnoreCase("FINER")) {
return (FINER);
} else if (name.equalsIgnoreCase("FINEST")) {
return (FINEST);
} else if (name.equalsIgnoreCase("ALL")) {
return (ALL);
}
try {
return (new Level(name, Integer.parseInt(name)));
} catch (NumberFormatException ex) {
throw new IllegalArgumentException("Invalid level: " + name);
}
}
/**
* Returns the integer value for this level
*/
public int intValue() {
return (this.value);
}
/**
* Returns a textual representation of this level
*/
public String toString() {
return ("Level " + this.name + " (" + this.value + ")");
}
/**
* Two levels are equal if they have the same integer value
*/
public boolean equals(Object o) {
if (o instanceof Level) {
Level l = (Level) o;
if (l.value == this.value) {
return (true);
}
}
return (false);
}
}