package alien4cloud.utils;
import java.util.TreeSet;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(of = "name")
public class TreeNode implements Comparable<TreeNode> {
private String name;
/** The full path of the node in the tree. */
private String fullPath;
/** Optional temporary artifact id that replace the actual file in an edition context. */
private String artifactId;
private boolean isLeaf;
private TreeSet<TreeNode> children;
@JsonIgnore
private TreeNode parent;
public TreeNode(String name) {
this.name = name;
}
/**
* Get a children based on it's name.
*
* @param childName The name of the children to get.
* @return A tree node or null.
*/
public TreeNode getChild(String childName) {
TreeNode template = new TreeNode(childName);
TreeNode match = children == null ? null : children.ceiling(template);
if (template.equals(match)) {
return match;
}
return null;
}
@Override
public int compareTo(TreeNode o) {
return this.name.compareTo(o.getName());
}
}