view src/treecms/memory/OnMemoryMonotonicTree.java @ 22:fa784faafc78

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

package treecms.memory;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import treecms.api.MonotonicTree;
import treecms.api.MonotonicTreeNode;
import treecms.api.Node;
import treecms.api.NodeID;
import treecms.merger.Merger;
import treecms.merger.ReplaceMerger;
import treecms.tree.util.NodeData;

public class OnMemoryMonotonicTree implements MonotonicTree
{
	private final ConcurrentMap<String,OnMemoryNode> m_members;
	private final OnMemoryMonotonicTree m_tree;
	
	private OnMemoryMonotonicTreeNode m_root;
	
	private OnMemoryMonotonicTree(OnMemoryNode _root,OnMemoryMonotonicTree _tree)
	{
		m_members = new ConcurrentHashMap<String,OnMemoryNode>();
		m_members.put(_root.getID().getFamilyID(),_root);
		m_tree = _tree;
	}
	
	public static OnMemoryMonotonicTree createInstance(OnMemoryNode _root,OnMemoryMonotonicTree _tree)
	{
		OnMemoryMonotonicTree tree = new OnMemoryMonotonicTree(_root,_tree);
		tree.m_root = new OnMemoryMonotonicTreeNode(_root.getID().getFamilyID(),null,tree);
		return tree;
	}
	
	public OnMemoryNode get(String _fid)
	{
		return m_members.get(_fid);
	}
	
	public OnMemoryNode createNode(NodeID _id,NodeData<Node> _data)
	{
		OnMemoryNode newNode = new OnMemoryNode(_id,_data);
		m_members.put(_id.getFamilyID(),newNode);
		return newNode;
	}
	
	@Override
	public boolean commit(boolean _force)
	{
		if(m_tree == null){
			return true;
		}
		
		return true;
	}

	@Override
	public boolean pull()
	{
		return true;
	}

	@Override
	public boolean check()
	{
		return m_tree.getRoot().getNode().equals(m_root.getNode());
	}

	@Override
	public void merge()
	{
	}

	@Override
	public MonotonicTreeNode getRoot()
	{
		return m_root;
	}
}