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

shz.model.TreeNodeMetadata Maven / Gradle / Ivy

package shz.model;

import shz.Help;
import shz.Validator;
import shz.constant.ArrayConstant;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 树结构节点元数据
 */
public class TreeNodeMetadata> extends TreeNode {
    protected String rootId;
    protected String parentId;
    protected int level;
    protected String tag;

    public final String getRootId() {
        return rootId;
    }

    public final void setRootId(String rootId) {
        this.rootId = rootId;
    }

    public final String getParentId() {
        return parentId;
    }

    public final void setParentId(String parentId) {
        this.parentId = parentId;
    }

    public final int getLevel() {
        return level;
    }

    public final void setLevel(int level) {
        this.level = level;
    }

    public final String getTag() {
        return tag;
    }

    public final void setTag(String tag) {
        this.tag = tag;
    }

    @Override
    public String toString() {
        return "TreeNodeMetadata{" +
                "rootId='" + rootId + '\'' +
                ", parentId='" + parentId + '\'' +
                ", level=" + level +
                ", tag='" + tag + '\'' +
                ", id='" + id + '\'' +
                ", childes=" + childes +
                '}';
    }

    /**
     * 节点比较器
     */
    public static int lbtCmp(int idx, String tag1, String tag2, char[] arrayX) {
        return Long.compare(
                idx <= 0 ? Help.stringToLong(tag1, arrayX) - Help.stringToLong(tag2, arrayX)
                        : Help.stringToLong(tag1.substring(idx), arrayX) - Help.stringToLong(tag2.substring(idx), arrayX),
                0L
        );
    }

    public static int lbtCmp(int idx, String tag1, String tag2) {
        return lbtCmp(idx, tag1, tag2, ArrayConstant.CHAR_ARRAY_62);
    }

    /**
     * 打标签
     */
    public static String tag(String pt, String lbt, char[] arrayX) {
        if (Validator.isBlank(lbt)) return Validator.isBlank(pt) ? arrayX[0] + "" : pt + "." + arrayX[0];
        int idx = lbt.lastIndexOf(".");
        return idx == -1 ? Help.increment(lbt, arrayX) : lbt.substring(0, idx + 1) + Help.increment(lbt.substring(idx + 1), arrayX);
    }

    public static String tag(String pt, String lbt) {
        return tag(pt, lbt, ArrayConstant.CHAR_ARRAY_62);
    }

    /**
     * 获取路径标签集
     */
    public static List dpTags(String tag) {
        if (Validator.isBlank(tag)) return Collections.emptyList();
        String[] a = tag.split("\\.");
        if (a.length < 2) return Collections.emptyList();
        List result = new ArrayList<>(a.length - 1);
        String prev = a[0];
        result.add(prev);
        for (int i = 1; i < a.length - 1; ++i) {
            prev = prev + "." + a[i];
            result.add(prev);
        }
        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy