📄 newselecttreedef.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 + -