diff src/treecms/api/NodeData.java @ 4:f5ed85be5640

finished treecms.cassandra.v1 implementation (not tested yet)
author shoshi
date Thu, 24 Feb 2011 21:30:18 +0900
parents 4a5ee88f02cf
children 12604eb6b615
line wrap: on
line diff
--- a/src/treecms/api/NodeData.java	Fri Feb 18 02:14:10 2011 +0900
+++ b/src/treecms/api/NodeData.java	Thu Feb 24 21:30:18 2011 +0900
@@ -1,14 +1,63 @@
 package treecms.api;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 
-public interface NodeData
+public class NodeData
 {
-	public String get();
-	public void set(String _str);
+	LinkedList<Node> m_children;
+	HashMap<byte[],byte[]> m_attrs;
+	
+	public NodeData()
+	{
+		m_children = new LinkedList<Node>();
+		m_attrs = new HashMap<byte[],byte[]>();
+	}
+	
+	public NodeData deepCopy()
+	{
+		NodeData copy = new NodeData();
+		copy.m_children.addAll(m_children);
+		copy.m_attrs.putAll(m_attrs);
+		
+		return copy;
+	}
+	
+	public Set<byte[]> keys()
+	{
+		return m_attrs.keySet();
+	}
 	
-	public List<Node> list();
-	public void add(List<Node> _child);
-	public void del(List<Node> _child);
-	public void clear();
+	public byte[] get(byte[] _name)
+	{
+		return m_attrs.get(_name);
+	}
+	
+	public void set(byte[] _name,byte[] _value)
+	{
+		m_attrs.put(_name,_value);
+	}
+	
+	public List<Node> list()
+	{
+		return Collections.unmodifiableList(m_children);
+	}
+	
+	public void add(List<Node> _child)
+	{
+		m_children.addAll(_child);
+	}
+	
+	public void del(List<Node> _child)
+	{
+		m_children.removeAll(_child);
+	}
+	
+	public void clear()
+	{
+		m_children.clear();
+	}
 }