?? 606b7da7278c001c1df8bc9ee8cc3f09
字號:
package main.cn.edu.nju.software.sd.cll;
import java.util.Stack;
public class LoggerTree {
private LoggerNode root;
public LoggerTree()
{
// System.out.println("here");
root = new LoggerNode(Logger.getRootLogger());
}
/**獲得root節點*/
public LoggerNode getRoot()
{
return root;
}
/**獲得父節點*/
public LoggerNode getParent(Logger logger)
{
LoggerNode node = find(logger.getName());
return node.parent;
}
/**搜索是否存在logger,如果存在則返回logger所在的節點。*/
public LoggerNode find(String name)
{
// System.out.println("here");ok
LoggerNode current;
// String namestr = null;
if(root.logger.getName().equals(name))
return root;
/*
else
{
current = root.lchild;
if(current!=null)
{
namestr = current.logger.getName();
while((!namestr.equals(name))&&(current!=null))
{
if(name.startsWith(namestr))
current = current.lchild;
else
current = current.rchild;
if(current==null)
return null;
namestr = current.logger.getName();
}
}
namestr = current.logger.getName();
}
return current;*/
else
{
// System.out.println("here");ok
current = root.child;
Stack stack = new Stack();
// System.out.println("here");ok
if(current==null)
return null;
// System.out.println("here");wrong
if(current.logger.getName().equals(name))
return current;
stack.push(current);
LoggerNode temp = current.child;
// System.out.println("here");wrong
while(temp!=null)
{
if(temp.logger.getName().equals(name))
{
stack.clear();
return temp;
}
stack.push(temp);
temp = temp.child;
}
temp = (LoggerNode)stack.pop();
while(temp!=null)
{
temp = temp.brother;
while(temp!=null)
{
if(temp.logger.getName().equals(name))
{
stack.clear();
// System.out.println("here");wrong
return temp;
}
stack.push(temp);
temp = temp.child;
}
if(stack.empty())
break;
temp = (LoggerNode)stack.pop();
}
stack.clear();
return null;
}
}
public Logger findLogger(String name)
{
LoggerNode node= find(name);
if(node==null)
return null;
else
return node.logger;
}
/**搜索name 為name的logger是否存在 */
public boolean isExist(String name)
{
LoggerNode log;
log = find(name);
if(log==null)
return false;
else
return true;
}
/**插入一個節點*/
public void insert(Logger logger)
{
// System.out.println("test parent");ok
LoggerNode newNode = new LoggerNode(logger);
String loggerName = logger.getName();
String tempstr = null;
LoggerNode temp;
boolean isbrother = false;
if(loggerName.equals("root"))
root = newNode;
else if(root.child==null)
{
root.child = newNode;
System.out.println(newNode.logger.getName());
}
else{
// System.out.println("test parent");ok
newNode.parent = root;
int dot = loggerName.lastIndexOf('.');
if(dot!=-1)
{
for(String subname=loggerName.substring(0, dot);subname!=null;)
{
temp = find(subname);
dot = subname.lastIndexOf('.');
if((temp==null)&&(dot!=-1))
{
tempstr = subname.substring(0, dot);
subname = tempstr;
}
else if((dot==-1)&&(temp==null))
{
isbrother = true;
break;
}
else
{
newNode.parent = temp;
if(temp.child==null)
{
temp.child = newNode;
}
else
{
newNode.child = temp.child;
temp.child.parent = newNode;
temp.child = newNode;
}
break;
}//end else
}//end for
}//end if
else if((dot==-1)||(isbrother==true))
{
temp = root.child;
LoggerNode prenode=temp;
while(temp.brother!=null)
{
prenode = temp;
temp = temp.brother;
}
prenode.brother = newNode;
}
else
{}
}
/* else
{
newNode.parent = root;
boolean flag = false;
LoggerNode current = root.child;
LoggerNode prenode;
while(!flag)
{
prenode = current;
if(loggerName.startsWith(current.logger.getName()))
{
newNode.parent = current;
current = current.child;
if(current==null)
{
prenode.child = newNode;
flag = true;
}
}
else if(current.logger.getName().startsWith(loggerName))
{
prenode = current.parent;
newNode.parent = prenode;
prenode.child = newNode;
newNode.child = current;
current.parent = newNode;
flag = true;
}
else
{
current = current.brother;
if(current==null)
{
prenode.brother = newNode;
flag = true;
}
}
}//end while
}//end else */
}
public void printTree()
{
printTree(root);
}
public void printTree(LoggerNode r)
{
if(r!=null)
{
System.out.println(r.logger.getName());
printTree(r.child);
printTree(r.brother);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -