2015-06-10 55 views
0

我在Tree格式中有許多功能並且想要控制使用配置。樹配置打開/關閉java中的功能

假設下面樹中,每個節點是一個特徵

A --- root 
A1 & A2 --- are child of A 
A1a, A1b and A1c --- are child of A1 
A2a, A2b and A2c --- are child of A2 

如果我關閉A,則所有的特徵應當被關閉。
如果我關掉A2,那麼只有A2和它的孩子(直到葉子)應該關閉。
如果我關掉A1a,那麼只應關閉A1a功能。
如果我打開了A2a並關閉了A2,那麼A2會被賦予更高的優先級,並且應該關閉A2及其子(直到葉)。

同樣我想用配置來控制所有的功能。

有什麼辦法可以在JAVA中控制這些配置樹嗎?

+0

請告訴我們你已經擁有的,你嘗試過什麼,哪裏也沒有工作。 – hoijui

+1

「在JAVA中有沒有辦法控制這些配置樹?」 - 是的,你可以實現它。這是你的問題嗎? – alfasin

+0

@alfasin。是的,我想用Java控制這些配置樹(功能)。任何現有的圖書館? –

回答

0

我的實現:

import java.util.List; 

public class CtrlNode { 

    private String name; 
    private boolean status; 
    private CtrlNode parent; 
    private List<CtrlNode> kids; 

    public CtrlNode(String name, boolean status, CtrlNode parent, List<CtrlNode> kids) { 
     super(); 
     this.name = name; 
     this.status = status; 
     this.parent = parent; 
     this.kids = kids; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public boolean getStatus() { 
     return status; 
    } 

    public void setStatus(boolean status) { 
     this.status = status; 
    } 

    public CtrlNode getParent() { 
     return parent; 
    } 

    public void setParent(CtrlNode parent) { 
     this.parent = parent; 
    } 

    public List<CtrlNode> getKids() { 
     return kids; 
    } 

    public void setKids(List<CtrlNode> kids) { 
     this.kids = kids; 
    } 

    public void off() { 
     recurOff(this); 
    } 

    private void recurOff(CtrlNode node) { 
     if (node != null && node.getStatus()) { 
      node.setStatus(false); 
      for (CtrlNode kid : node.getKids()) { 
       recurOff(kid); 
      } 
     } 
    } 

    public void on() { 
     if(!this.getStatus() && this.getParent().getStatus()) { 
      this.setStatus(true); 
     } 
    } 

} 
+0

非常感謝依賴。這是我想要的。 –

+0

@Amaresh Narayanan我的榮幸 –