/*
* Copyright 2010
* Ubiquitous Knowledge Processing (UKP) Lab
* Technische Universität Darmstadt
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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 de.tudarmstadt.ukp.dkpro.core.decompounding.trie;
import java.util.ArrayList;
import java.util.List;
/**
* A tree node with a value object
*
*
* @param <V>
* The value object class
*/
public class ValueNode<V>
{
private V value;
private List<ValueNode<V>> children = new ArrayList<ValueNode<V>>();
public ValueNode(V aValue)
{
value = aValue;
}
/**
* Returns the value object of this node
*
* @return the value.
*/
public V getValue()
{
return value;
}
/**
* Sets the value object of this node
*
* @param aValue
* the value.
*/
public void setValue(V aValue)
{
value = aValue;
}
/**
* Returns a children for this node
*
* @return the children.
*/
public List<ValueNode<V>> getChildren()
{
return children;
}
/**
* Returns all children's values
*
* @return the children's values.
*/
public List<V> getChildrenValues()
{
List<ValueNode<V>> values = getChildren();
List<V> result = new ArrayList<V>();
for (ValueNode<V> value : values) {
result.add(value.getValue());
}
return result;
}
/**
* Sets the children for this node
*
* @param aChildren
* the children.
*/
public void setChildren(List<ValueNode<V>> aChildren)
{
children = aChildren;
}
/**
* Adds a child object to this node
*
* @param node
* the child object.
*/
public void addChild(ValueNode<V> node)
{
children.add(node);
}
/**
* Checks if this node has children
*
* @return if this node has children
*/
public boolean hasChildren()
{
return children.size() > 0;
}
/**
* Checks if the node is a leaf node
*
* @return if the node is a leaf node
*/
public boolean isLeaf()
{
return !hasChildren();
}
}