view src/treecms/tree/util/NodeAttributesImpl.java @ 20:084de6909451

commit
author shoshi
date Wed, 01 Jun 2011 15:35:50 +0900
parents 168deb591f21
children
line wrap: on
line source

package treecms.tree.util;

import java.nio.ByteBuffer;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import treecms.api.NodeAttributes;

public class NodeAttributesImpl implements NodeAttributes
{
	private Map<ByteBuffer,ByteBuffer> m_attrs;
	
	public NodeAttributesImpl()
	{
		m_attrs = new ConcurrentHashMap<ByteBuffer,ByteBuffer>();
	}
	
	public NodeAttributesImpl(Map<ByteBuffer,ByteBuffer> _map)
	{
		this();
		m_attrs.putAll(_map);
	}
	
	public NodeAttributesImpl(NodeAttributesImpl _attrs)
	{
		this();
		m_attrs.putAll(_attrs.m_attrs);
	}
	
	@Override
	public Set<ByteBuffer> getKeySet()
	{
		return m_attrs.keySet();
	}

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

	@Override
	public void putAll(NodeAttributes _attrs)
	{
		m_attrs.putAll(_attrs.asMap());
	}
	
	@Override
	public Map<ByteBuffer,ByteBuffer> asMap()
	{
		return Collections.unmodifiableMap(m_attrs);
	}

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

	@Override
	public NodeAttributes getAll()
	{
		return this;
	}

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

	@Override
	public void removeAll(Set<ByteBuffer> _keySet)
	{
		for(ByteBuffer _key : _keySet){
			remove(_key);
		}
	}

	@Override
	public void clearAttributes()
	{
		m_attrs.clear();
	}
	
	@Override
	public boolean equals(Object _o)
	{
		if(_o instanceof NodeAttributes || _o == null){
			return false;
		}
		
		NodeAttributes attr = (NodeAttributes)_o;
		Map<ByteBuffer,ByteBuffer> map = attr.asMap();
		return m_attrs.equals(map);
	}
	
	@Override
	public int hashCode()
	{
		return m_attrs.hashCode();
	}
}