⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7030c5290b8c001c19e7c0a9f1c1f59c

📁 一个类似于log4j的小软件
💻
字号:
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)
	{
		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;
		else{
			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(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 + -