package foundation.dao.preload;
|
|
import java.util.Comparator;
|
|
import foundation.json.IJSONWriter;
|
import foundation.util.MapList;
|
|
public abstract class Node {
|
|
protected Node parent;
|
protected MapList<String, Node> children;
|
|
|
public Node() {
|
children = new MapList<String, Node>();
|
}
|
|
public abstract String getId();
|
|
public abstract String getParentId();
|
|
public void addOneChild(Node item) {
|
children.add(item.getId(), item);
|
}
|
|
public Comparator<Node> createComparator() {
|
return null;
|
}
|
|
public void sort(Comparator<Node> comparator) {
|
//1. 创建comparator
|
if (comparator == null) {
|
comparator = createComparator();
|
}
|
|
if (comparator == null) {
|
return;
|
}
|
|
//2. 递归调用子节点进行排序
|
for (Node child: children) {
|
|
if (child.containsChildren()) {
|
child.sort(comparator);
|
}
|
}
|
|
//3. 排序自己在子节点
|
children.sortList(comparator);
|
}
|
|
@Override
|
public String toString() {
|
return getId();
|
}
|
|
@SuppressWarnings("unchecked")
|
public <T> T getParent() {
|
return (T)parent;
|
}
|
|
public MapList<String, Node> getChildren() {
|
return children;
|
}
|
|
public boolean containsChildren() {
|
return !children.isEmpty();
|
}
|
|
public abstract void writeJSON(IJSONWriter writer);
|
|
public abstract void writeJSONBody(IJSONWriter writer);
|
|
}
|