view src/treecms/proto/edit/EditableNodeAPITreeBuilder.java @ 11:bb802051dab3

added proxy based EditableNodeAPI
author shoshi
date Sat, 28 Aug 2010 20:39:41 +0900
parents 8fbe7ba1d820
children c8e31aaac297
line wrap: on
line source

package treecms.proto.edit;

import java.util.List;
import java.util.UUID;

import treecms.proto.api.NodeAPI;
import treecms.proto.api.NodeAPITreeBuilder;

public class EditableNodeAPITreeBuilder implements NodeAPITreeBuilder
{
	private NodeAPI m_root;
	private NodeAPI m_clone;
	
	public EditableNodeAPITreeBuilder(NodeAPI _root)
	{
		m_root = _root;
		m_clone = clone(_root);
	}
	
	private NodeAPI clone(NodeAPI _orig)
	{
		EditableNodeAPI clone = new EditableNodeAPI(_orig);
		
		List<NodeAPI> children = _orig.getChildList();
		for(NodeAPI child : children){
			//System.out.println(child.getTitle());
			clone.addChild(clone(child));
		}
		
		clone._resetFlag();
		return clone;
	}
	
	public void discard()
	{
		//discard changes.
		m_clone = clone(m_root);
	}
	
	public void commit()
	{
		//commit changes
	}
	
	public void push()
	{
		//push changes
	}
	
	public String generateUUID()
	{
		return UUID.randomUUID().toString();
	}
	
	@Override
	public NodeAPI getContents() {
		// TODO Auto-generated method stub
		return this.m_clone;
	}

	@Override
	public NodeAPI createNode() {
		// TODO Auto-generated method stub
		return new EditableNodeAPI(null);
	}

}