使用文件修订填充树

时间:2012-10-12 12:02:59

标签: java

`要求是必须使用文件的修订版填充树。

我有一个命令从MKS(版本控制系统)获取特定文件的所有修订版。

在java中使用以下命令

Process p = Runtime.getRuntime().exec("cmd /C "+cmd);

我得到了file.c的所有版本。现在我想将数据填充到Tree结构中。我该怎么做?

try { 
 List<String> lVersions = new ArrayList<String>();
 Process p = Runtime.getRuntime().exec("cmd /C "+cmd); 
 BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()));
 String line = null; 
 while ((line = in.readLine()) != null)
 { 
   lVersions .add(line); 
 }
 }catch (IOException e) 
 { e.printStackTrace(); 
 }

lVersions包含以下输出。它显示了特定文件的所有修订版。我需要将此信息填充到Tree结构中。

1.1
1.1.1.1
1.1.1.2
1.1.1.3
1.1.1.4
1.2
1.3  

我创建了一个树类

public class Tree {

private List<Tree> children = new ArrayList<Tree>();
private String label;
private Tree parent;
private String root;

public Tree() {
    super();
    children = new ArrayList<Tree>();
    }

    public Tree(String label) {
    this();
    setData(label);
    }

    public void setRoot(String root){
    this.root= root;
}
public String getRoot(){
    return root;
}
public void addChild(Tree child) {

    child.setParent(this);
    children.add(child);
}

public void removeChild(Tree node) {
    children.remove(node);
    node.setParent(null);
}

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

public Object[] getChildren() {
    return children.toArray();
}

public Object getParent() {
    return parent;
}

public String getLabel() {
    return this.label;
}
public void setData(String label) {
    this.label = label;
    }

}

我必须生成以下树结构,并记住每个节点的父节点。我不是要求代码,但关于如何开始和继续的一些指示将是非常有帮助的!

    1.1
 1.2    1.1.1.1
 1.3    1.1.1.2
 1.4    1.1.1.3
        1.1.1.4

1 个答案:

答案 0 :(得分:0)

您需要阅读命令的输出。请参阅ProcessBuilder的API,以便将流程输出设为InputStream(流程输出==您的输入,对吧?)

将输出解析为树节点。每个节点都有一个parent引用和一个带有子节点的列表children