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

📄 newselecttreedef.java

📁 具备多表组合查询组件功能。通过将表字段与表间关系映射到对象关系及属性
💻 JAVA
字号:
package cn.edu.buaa.ieguam.logmanage;

import java.util.Iterator;
import cn.edu.buaa.ieguam.logmanage.MBean;

/**
 * 依据MBean的设置,在系统的MBeanTree基础树中,构造符合日志查询操作的子树。
 * 在MBeanTree中MBean的权限依照MBean.degree的级别“debug”-“work”-“sleep”,权限有高到低。
 * @author tongxiaodong
 * Creation time:Apr 23, 2007 10:17:25 PM
 */

public class NewSelectTreeDef implements ReadTreeMBean {
	
	private MBean father = null;
	private MBean child = null;
	private String side = null;

	
	public void readMBean(Object fatherMBean, Object childMBean, String side) 
	{
        //TODO Auto-generated method stub
		this.father = (MBean) fatherMBean;
		this.child = (MBean) childMBean;
		this.side = side;
				
		
		if(child.getDegree().equals("sleep"))//若child节点状态为“sleep”
		{			
			if(child.hasLeftChild()==false && child.hasRightChild()==false)//若child为叶节点(即无子节点)
			{			
				if(father != null)//若存在父节点
				{			
					if(father.hasRightChild(child) != null)//child若为father的右子节点
					{			
						if(father.removeRightChild(child) == true)//删除该字节点
						{
							father.decreRightNum();//由于去除了一个右子节点,father的rightNum自减1
						}
						child.setFather(null);//将father从child的父结点中去除
						
					}
					else//child若为father的左子节点
					{
						if(father.getDegree().equals("sleep") == false)//若父节点状态不是“sleep”
						{
							child.setDegree("work");//状态设置为"work"
						}			
					}		
				}
			
			}
			else//若child非叶节点(即含有子节点)
			{		
				if(this.allSleepingChild(child) == true)//若child的子节点状态全为“sleep”
				{		
					if(father == null)//若父节点为空
					{
						if(child.hasLeftChild()==true)
						{
							child.getLeftChildList().clear();//清空左子节点
						}
						if(child.hasRightChild()==true)
						{
							child.getRightChildList().clear();//清空右子节点
						}				
					}
					else//若父节点非空
					{
						if(father.getDegree().equals("sleep")==false && father.hasRightChild(child)==null)
						{
							//若father状态为“sleep”,且child不是father的右节点
							child.setDegree("work");
						}
						else
						{	
							if(father.removeRightChild(child) == true)//删除该字节点
							{
								father.decreRightNum();//由于去除了一个右子节点,father的rightNum自减1
							}
							child.setFather(null);//将father从child的父结点中去除
							if(child.hasLeftChild()==true)
							{
								child.getLeftChildList().clear();//清空左子节点
							}
							if(child.hasRightChild()==true)
							{
								child.getRightChildList().clear();//清空右子节点
							}							
						}
					}
				}
				else
				{
					child.setDegree("work");
				}
			}
		}
	}
	
	
	/**
	 * 判断MBean 的子节点状态是否全为“sleep”。
	 * @return 若没有子节点或全为“sleep”,则返回true;若有的节点状态非“sleep”,则返回false
	 */
	private boolean allSleepingChild(MBean mBean)
	{
		boolean flag = true;
		MBean childMBean = null;
		Iterator iter = null;
		
		if(mBean.hasLeftChild()==true)//若存在左子节点
		{
			iter = mBean.getLeftChildList().iterator();
			while(iter.hasNext())
			{
				childMBean = (MBean) iter.next();
				if(childMBean.getDegree().equals("sleep") == false)
				{
					flag = false;
					return flag;
				}
			}
		}
		if(mBean.hasRightChild()==true)//若存在右子节点
		{
			iter = mBean.getRightChildList().iterator();
			while(iter.hasNext())
			{
				childMBean = (MBean) iter.next();
				if(childMBean.getDegree().equals("sleep") == false)
				{
					flag = false;
					return flag;
				}
			}
		}	
		return flag;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -