view src/treecms/tree/util/NodeData.java @ 22:fa784faafc78

commit
author shoshi
date Tue, 07 Jun 2011 16:42:49 +0900
parents 084de6909451
children 77a894c0b919
line wrap: on
line source

package treecms.tree.util;

import java.nio.ByteBuffer;
import java.util.List;
import java.util.Map;
import java.util.Set;
import treecms.api.NodeAttributes;
import treecms.api.NodeChildren;
import treecms.api.NodeContext;
import treecms.api.NodeID;

public class NodeData<T extends NodeContext & NodeAttributes & NodeChildren<T>> implements NodeAttributes , NodeChildren<T>
{
	private final NodeChildrenImpl<T> m_children;
	private final NodeAttributesImpl m_attrs;
	
	public NodeData()
	{
		this(null,null);
	}
	
	public NodeData(NodeData<T> _newData)
	{
		this(_newData.m_children,_newData.m_attrs);
	}
	
	public NodeData(NodeChildren<T> _children,NodeAttributes _attrs)
	{
		m_children = (_children != null) ? new NodeChildrenImpl<T>(_children) : new NodeChildrenImpl<T>();
		m_attrs = (_attrs != null) ? new NodeAttributesImpl(_attrs.asMap()) : new NodeAttributesImpl();
	}

	@Override
	public List<T> getList()
	{
		return m_children.getList();
	}

	@Override
	public T create(NodeAttributes _attrs)
	{
		throw new UnsupportedOperationException();
	}

	@Override
	public T get(int _index)
	{
		return m_children.get(_index);
	}

	@Override
	public T remove(int _uuid)
	{
		return m_children.remove(_uuid);
	}
	
	public void add(T _newChild)
	{
		m_children.add(_newChild);
	}

	public T replace(T _newChild)
	{
		return m_children.replace(_newChild);
	}

	@Override
	public boolean contains(NodeID _id)
	{
		return m_children.contains(_id);
	}

	@Override
	public void clearChildren()
	{
		m_children.clearChildren();
	}

	@Override
	public Map<ByteBuffer, ByteBuffer> asMap()
	{
		return m_attrs.asMap();
	}

	@Override
	public Set<ByteBuffer> getKeySet()
	{
		return m_attrs.getKeySet();
	}

	@Override
	public void put(ByteBuffer _name, ByteBuffer _value)
	{
		m_attrs.put(_name,_value);
	}

	@Override
	public void putAll(NodeAttributes _attrs) 
	{
		m_attrs.putAll(_attrs);
	}

	@Override
	public ByteBuffer get(ByteBuffer _name)
	{
		return m_attrs.get(_name);
	}

	@Override
	public NodeAttributes getAll()
	{
		return m_attrs.getAll();
	}

	@Override
	public void remove(ByteBuffer _name)
	{
		m_attrs.remove(_name);
	}

	@Override
	public void removeAll(Set<ByteBuffer> _keySet)
	{
		m_attrs.removeAll(_keySet);
	}

	@Override
	public void clearAttributes()
	{
		m_attrs.clearAttributes();
	}

	@Override
	public Set<String> getFamilyIDSet()
	{
		return m_children.getFamilyIDSet();
	}

	@Override
	public T get(String _familyID)
	{
		return m_children.get(_familyID);
	}

	@Override
	public T remove(String _familyID)
	{
		return m_children.get(_familyID);
	}

	@Override
	public boolean swap(String _fid1, String _fid2)
	{
		return m_children.swap(_fid1,_fid2);
	}
}