package tern.server.protocol.outline; import java.util.ArrayList; import java.util.List; import tern.ITernProject; import tern.utils.StringUtils; public class BaseJSNode implements IJSNode { private final String name; private final String kind; private final String value; private final Long start; private final Long end; private final String file; private final IJSNode parent; private final List<IJSNode> children; public BaseJSNode(String name, String kind, String value, Long start, Long end, String file, IJSNode parent) { this.name = name; this.kind = kind; this.value = value; this.start = start; this.end = end; this.file = file; this.children = new ArrayList<IJSNode>(); if (parent != null) { this.parent = parent; parent.addChild(this); } else { this.parent = null; } } @Override public String getName() { return name; } @Override public Long getStart() { return start; } @Override public Long getEnd() { return end; } @Override public String getFile() { return file; } @Override public String getKind() { return kind; } @Override public String getValue() { return value; } @Override public List<IJSNode> getChildren() { return children; } @Override public boolean hasChidren() { return children.size() > 0; } @Override public IJSNode getParent() { return parent; } @Override public void addChild(IJSNode node) { children.add(node); } public boolean isFile() { return !StringUtils.isEmpty(file); } @Override public ITernProject getTernProject() { return parent != null ? parent.getTernProject() : null; } @Override public boolean isContainer() { return false; } }