package cc.smtweb.system.bpm.util;

import java.util.List;

/**
 * 树型节点句柄
 *
 * @author xkliu
 */
public interface ITreeDataHandler<T> {
    /**
     * 获取ID
     *
     * @param node 节点
     * @return 节点ID
     */
    Long getId(T node);

    /**
     * 获取上级ID
     *
     * @param node 当前节点
     * @return 上级ID
     */
    Long getParentId(T node);

//  void addChild(IWebTreeVO item);

    /**
     * 获取下级对象列表
     *
     * @param node 当前节点
     * @return 下级对象列表
     */
    List<T> getChildren(T node);

    /**
     * 设置下级对象列表
     *
     * @param children 下级对象列表
     */
    void setChildren(T node, List<T> children);

    /**
     * 是否强行添加未找到上级的错误节点到顶级
     *
     * @param node 通过node有parentId值，但未找到对应上级节点
     * @return 是否强行添加错误节点到顶级
     */
    default boolean forceAdd(T node) {
        return false;
    }
}
