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 children; public Node() { children = new MapList(); } public abstract String getId(); public abstract String getParentId(); public void addOneChild(Node item) { children.add(item.getId(), item); } public Comparator createComparator() { return null; } public void sort(Comparator 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 getParent() { return (T)parent; } public MapList getChildren() { return children; } public boolean containsChildren() { return !children.isEmpty(); } public abstract void writeJSON(IJSONWriter writer); public abstract void writeJSONBody(IJSONWriter writer); }