All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.power4j.fist.boot.mybaits.tree.TreePathSupport Maven / Gradle / Ivy

/*
 *  Copyright 2021 ChenJun ([email protected] & https://github.com/John-Chan)
 *
 *  Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  

* http://www.gnu.org/licenses/lgpl.html *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.power4j.fist.boot.mybaits.tree; import com.power4j.fist.data.tree.domain.NodeIdx; import org.springframework.lang.Nullable; import java.util.Collection; import java.util.List; import java.util.Set; /** * @author CJ ([email protected]) * @date 2021/10/19 * @since 1.0 */ public interface TreePathSupport, ID> { /** * 查询下级节点关系 * @param id 起始节点 * @param distanceMin 最小层距离(包含) * @param distanceMax 最大层距离(包含) * @return 返回 id 为祖先的所有节点路径 */ List findAllDescendant(ID id, @Nullable Integer distanceMin, @Nullable Integer distanceMax); /** * 查询下级节点关系 * @param ids 起始节点 * @param distanceMin 最小层距离(包含) * @param distanceMax 最大层距离(包含) * @return 返回 id 为祖先的所有节点路径 */ List findAllDescendant(Collection ids, @Nullable Integer distanceMin, @Nullable Integer distanceMax); /** * 统计下级节点数量 * @param id 起始节点 * @param distanceMin 最小层距离(包含) * @param distanceMax 最大层距离(包含) * @return 返回 id 为祖先的所有节点路径 */ long countAllDescendant(ID id, @Nullable Integer distanceMin, @Nullable Integer distanceMax); /** * 查询上级节点关系 * @param id 起始节点 * @param distanceMin 最小层距离(包含) * @param distanceMax 最大层距离(包含) * @return 返回 id 的所有祖先节点路径 */ List findAllAncestor(ID id, @Nullable Integer distanceMin, @Nullable Integer distanceMax); /** * 查询上级节点关系 * @param ids 起始节点 * @param distanceMin 最小层距离(包含) * @param distanceMax 最大层距离(包含) * @return 返回 id 的所有祖先节点路径 */ List findAllAncestor(Collection ids, @Nullable Integer distanceMin, @Nullable Integer distanceMax); /** * 统计上级节点数量 * @param id 起始节点 * @param distanceMin 最小层距离(包含) * @param distanceMax 最大层距离(包含) * @return 返回 id 的所有祖先节点路径 */ long countAllAncestor(ID id, @Nullable Integer distanceMin, @Nullable Integer distanceMax); /** * 查询全部关系 * @param distanceMin 最小层距离(包含) * @param distanceMax 最大层距离(包含) * @return 返回关系集合列表 */ List getAll(@Nullable Integer distanceMin, @Nullable Integer distanceMax); /** * 删除路径信息,当节点删除后应该使用此方法 * @param id 节点ID,与该节点相关的所有路径会被删除 */ void removeAllPath(ID id); /** * 添加路径信息,新增节点时应该使用此方法 * @param newNode 新增节点的ID * @param parent 父节点 */ void generatePath(ID newNode, ID parent); /** * 计算构建子树树所需要的节点 * @param ids 候选根节点,它们的上下级关系不确定 * @return 返回节点集合,包含候选根节点以及它们的子节点,输入为空则返回空集 */ Set subTreeNodes(Collection ids); /** * 根据传入的节点,查找它们的公共根节点,如果数据源只有一个根节点,那么总是返回根节点 * @param ids 子节点ID * @return 返回根节点集合,输入为空则返回空集 */ Set findSharedRoot(Collection ids); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy