/*
* Copyright 2009 The Microlog project @sourceforge.net
* 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.
*/
package org.slf4j.impl.repository;
import java.util.Hashtable;
import org.slf4j.impl.MicrologLoggerAdapter;
import com.google.code.microlog4android.Level;
import com.google.code.microlog4android.Logger;
import com.google.code.microlog4android.repository.AbstractRepositoryNode;
/**
* @author Johan Karlsson (johan.karlsson@jayway.se)
*
*/
public class Slf4jRepositoryNode extends AbstractRepositoryNode {
private Slf4jRepositoryNode parent;
private Hashtable<String, Slf4jRepositoryNode> children = new Hashtable<String, Slf4jRepositoryNode>(17);
private MicrologLoggerAdapter logger;
/**
* Create a <code>TreeNode</code> with the specified name and the associated
* <code>Logger</code>.
*
* @param name
* the name of the <code>TreeNode</code>
* @param logger
* the <code>Logger</code> to be associated with the
* <code>TreeNode</code>
*/
public Slf4jRepositoryNode(String name, MicrologLoggerAdapter logger) {
this.name = name;
this.logger = logger;
}
public Slf4jRepositoryNode(String name, Slf4jRepositoryNode parent) {
this.name = name;
this.parent = parent;
this.logger = new MicrologLoggerAdapter(new Logger(name));
}
public Slf4jRepositoryNode(String name, MicrologLoggerAdapter logger, Slf4jRepositoryNode parent) {
this.name = name;
this.logger = logger;
this.parent = parent;
}
public void addChild(Slf4jRepositoryNode child) {
children.put(child.getName(), child);
}
/**
* @return the logger
*/
public MicrologLoggerAdapter getLogger() {
return logger;
}
public Slf4jRepositoryNode getChildNode(String name) {
return children.get(name);
}
/**
* Remove all the children.
*/
public void resetLogger() {
children.clear();
logger.getMicrologLogger().resetLogger();
logger.getMicrologLogger().setLevel(Level.DEBUG);
}
/**
* @return the parent
*/
public Slf4jRepositoryNode getParent() {
return parent;
}
/**
* @param parent
* the parent to set
*/
public void setParent(Slf4jRepositoryNode parent) {
this.parent = parent;
}
}