package trees;

import java.util.Collection;

import points.DrawableNamedPoint;

public class Tree implements TreeInterface {
  private TreeNode root;

  public Tree(String name, int x, int y) {
    root = new TreeNode(name, x, y);
  }

  public DrawableNamedPoint getRoot() {
    return root;
  }

  private TreeNode fetch(String name) {
    TreeNode t = root.fetch(name);
    if (t == null)
      throw new IllegalArgumentException("no node named " + name);
    else
      return t;
  }

  public DrawableNamedPoint addChild(String name, int x, int y, String parent) {
    TreeNode t = fetch(parent);
    TreeNode child = new TreeNode(name, x, y);
    t.addChild(child);
    return child;
  }

  public Collection<DrawableNamedPoint> getChildren(String node) {
    TreeNode t = fetch(node);
    return t.getChildren();
  }

  public DrawableNamedPoint getParent(String node) {
    TreeNode t = fetch(node);
    return t.getParent();
  }
}

