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

ars.util.AbstractTree Maven / Gradle / Ivy

The newest version!
package ars.util;

import java.util.Map;
import java.util.List;
import java.util.HashMap;
import java.util.ArrayList;

/**
 * 树抽象实现
 *
 * @param  树对象类型
 * @author wuyongqiang
 */
public abstract class AbstractTree> implements Tree, Formable {
    private static final long serialVersionUID = 1L;

    private Boolean leaf; // 是否为叶节点
    private Integer level; // 当前节点层级
    private T parent; // 父节点
    private List children = new ArrayList(0); // 子节点列表

    @Override
    public Boolean getLeaf() {
        if (this.leaf == null) {
            this.leaf = this.children.isEmpty();
        }
        return this.leaf;
    }

    @Override
    public void setLeaf(Boolean leaf) {
        this.leaf = leaf;
    }

    @Override
    public Integer getLevel() {
        if (this.level == null) {
            this.level = Trees.getLevel(this);
        }
        return this.level;
    }

    @Override
    public void setLevel(Integer level) {
        this.level = level;
    }

    @Override
    public T getParent() {
        return this.parent;
    }

    @SuppressWarnings("unchecked")
    @Override
    public List getParents() {
        return (List) Trees.getParents(this);
    }

    @Override
    public void setParent(T parent) {
        this.parent = parent;
    }

    @Override
    public List getChildren() {
        return this.children;
    }

    @Override
    public void setChildren(List children) {
        this.children = children;
    }

    @Override
    public Map format() {
        Map values = new HashMap();
        values.put("leaf", this.getLeaf());
        values.put("level", this.getLevel());
        values.put("children", this.children);
        return values;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy