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

org.tinygroup.tinyscript.tree.impl.DefaultDataNode Maven / Gradle / Ivy

The newest version!
package org.tinygroup.tinyscript.tree.impl;

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

import org.tinygroup.tinyscript.tree.DataNode;

/**
 * 默认树节点的实现
 * @author yancheng11334
 *
 */
public class DefaultDataNode extends AbstractDataNode{

	private List children = new ArrayList();

	public DefaultDataNode() {
		super();
	}
	
	public DefaultDataNode(String name,Object value) {
		super();
		setName(name);
		setValue(value);
	}
	
	public DefaultDataNode(String name,Object value,DataNode parent) {
		super();
		setName(name);
		setValue(value);
		setParent(parent);
	}

	public boolean isLeaf() {
		return children.isEmpty();
	}

	public List getChildren() {
		return children;
	}

	public DataNode getChild(int i) {
		return children.get(i);
	}

	public DataNode getChild(String name) {
		for(DataNode node:children){
		    if(node.getName().equals(name)){
		       return node;
		    }
		}
		return null;
	}

	public DataNode addNode(String name,Object value) {
		return addNode(new DefaultDataNode(name,value));
	}

	public DataNode addNode(DataNode node) {
		AbstractDataNode abstractDataNode = (AbstractDataNode) node;
		abstractDataNode.setParent(this);
		children.add(node);
		return this;
	}

	public DataNode removeNode(DataNode node) {
		AbstractDataNode abstractDataNode = (AbstractDataNode) node;
		abstractDataNode.setParent(null);
		children.remove(node);
		return this;
	}

	public DataNode findNode(String name) {
		return findNode(this,name);
	}
	
	private DataNode findNode(DataNode node,String name){
		if(node.getName()!=null && node.getName().equals(name)){
		   return node;
		}
		if(!node.isLeaf()){
		   DataNode result = null;
		   for(DataNode child:node.getChildren()){
			   result = findNode(child,name);
			   if(result!=null){
				  return result;
			   }
		   }
		}
		return null;
	}

	@SuppressWarnings("unchecked")
	public  T getSource() {
		return (T) this;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy