?? newselecttreedef.java
字號:
package cn.edu.buaa.ieguam.logmanage;
import java.util.Iterator;
import cn.edu.buaa.ieguam.logmanage.MBean;
/**
* 依據(jù)MBean的設(shè)置,在系統(tǒng)的MBeanTree基礎(chǔ)樹中,構(gòu)造符合日志查詢操作的子樹。
* 在MBeanTree中MBean的權(quán)限依照MBean.degree的級別“debug”-“work”-“sleep”,權(quán)限有高到低。
* @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節(jié)點狀態(tài)為“sleep”
{
if(child.hasLeftChild()==false && child.hasRightChild()==false)//若child為葉節(jié)點(即無子節(jié)點)
{
if(father != null)//若存在父節(jié)點
{
if(father.hasRightChild(child) != null)//child若為father的右子節(jié)點
{
if(father.removeRightChild(child) == true)//刪除該字節(jié)點
{
father.decreRightNum();//由于去除了一個右子節(jié)點,father的rightNum自減1
}
child.setFather(null);//將father從child的父結(jié)點中去除
}
else//child若為father的左子節(jié)點
{
if(father.getDegree().equals("sleep") == false)//若父節(jié)點狀態(tài)不是“sleep”
{
child.setDegree("work");//狀態(tài)設(shè)置為"work"
}
}
}
}
else//若child非葉節(jié)點(即含有子節(jié)點)
{
if(this.allSleepingChild(child) == true)//若child的子節(jié)點狀態(tài)全為“sleep”
{
if(father == null)//若父節(jié)點為空
{
if(child.hasLeftChild()==true)
{
child.getLeftChildList().clear();//清空左子節(jié)點
}
if(child.hasRightChild()==true)
{
child.getRightChildList().clear();//清空右子節(jié)點
}
}
else//若父節(jié)點非空
{
if(father.getDegree().equals("sleep")==false && father.hasRightChild(child)==null)
{
//若father狀態(tài)為“sleep”,且child不是father的右節(jié)點
child.setDegree("work");
}
else
{
if(father.removeRightChild(child) == true)//刪除該字節(jié)點
{
father.decreRightNum();//由于去除了一個右子節(jié)點,father的rightNum自減1
}
child.setFather(null);//將father從child的父結(jié)點中去除
if(child.hasLeftChild()==true)
{
child.getLeftChildList().clear();//清空左子節(jié)點
}
if(child.hasRightChild()==true)
{
child.getRightChildList().clear();//清空右子節(jié)點
}
}
}
}
else
{
child.setDegree("work");
}
}
}
}
/**
* 判斷MBean 的子節(jié)點狀態(tài)是否全為“sleep”。
* @return 若沒有子節(jié)點或全為“sleep”,則返回true;若有的節(jié)點狀態(tài)非“sleep”,則返回false
*/
private boolean allSleepingChild(MBean mBean)
{
boolean flag = true;
MBean childMBean = null;
Iterator iter = null;
if(mBean.hasLeftChild()==true)//若存在左子節(jié)點
{
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)//若存在右子節(jié)點
{
iter = mBean.getRightChildList().iterator();
while(iter.hasNext())
{
childMBean = (MBean) iter.next();
if(childMBean.getDegree().equals("sleep") == false)
{
flag = false;
return flag;
}
}
}
return flag;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -