package dmg.util.logback;
import org.slf4j.Logger;
public class LoggerName
{
public static final LoggerName ROOT =
new LoggerName(Logger.ROOT_LOGGER_NAME);
private String _name;
public static LoggerName getInstance(Logger logger)
{
return getInstance(logger.getName());
}
public static LoggerName getInstance(String name)
{
if (name.equalsIgnoreCase(Logger.ROOT_LOGGER_NAME)) {
return ROOT;
} else {
return new LoggerName(name);
}
}
public static LoggerName valueOf(String name)
{
return getInstance(name);
}
private LoggerName(String name)
{
_name = name;
}
public boolean isNameOfLogger(Logger logger)
{
return logger.getName().equals(_name);
}
@Override
public String toString()
{
return _name;
}
@Override
public boolean equals(Object that)
{
if (this == that) {
return true;
}
if (that == null || !that.getClass().equals(LoggerName.class)) {
return false;
}
LoggerName other = (LoggerName) that;
return _name.equals(other._name);
}
@Override
public int hashCode()
{
return _name.hashCode();
}
public LoggerName getParent()
{
if (this == ROOT) {
return null;
}
int pos = Math.max(_name.lastIndexOf('.'), _name.lastIndexOf('$'));
if (pos > -1) {
return new LoggerName(_name.substring(0, pos));
} else {
return ROOT;
}
}
}