changeset 19:019ca5abb1f0

commit
author shoshi
date Tue, 31 May 2011 15:55:28 +0900
parents 00ac748fbce1
children 084de6909451
files src/treecms/cached/CachedForestEvent.java src/treecms/cached/CachedForestEventListener.java src/treecms/cached/CachedMemoryForest.java src/treecms/cassandra/CassandraForest.java src/treecms/cassandra/CassandraNodeMap.java src/treecms/cassandra/CassandraRandomNodeID.java src/treecms/cassandra/CassandraSingleNode.java src/treecms/test/GenericsTest.java src/treecms/test/GenericsTest2.java src/treecms/test/JSONParserTest1.java
diffstat 10 files changed, 413 insertions(+), 158 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/cached/CachedForestEvent.java	Tue May 31 15:55:28 2011 +0900
@@ -0,0 +1,8 @@
+package treecms.cached;
+
+public enum CachedForestEvent
+{
+	ON_CACHE_CHANGED,
+	ON_CACHE_NOT_FOUND,
+	ON_SCHEDULED_UPDATE
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/cached/CachedForestEventListener.java	Tue May 31 15:55:28 2011 +0900
@@ -0,0 +1,6 @@
+package treecms.cached;
+
+public interface CachedForestEventListener
+{
+	public void onForestEvent(CachedForestEventListener _event);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/cached/CachedMemoryForest.java	Tue May 31 15:55:28 2011 +0900
@@ -0,0 +1,70 @@
+package treecms.cached;
+
+import java.util.Map;
+
+import treecms.api.Forest;
+import treecms.api.MonotonicTree;
+import treecms.api.NodeID;
+import treecms.api.SingleNode;
+import treecms.api.Tree;
+import treecms.tree.util.NodeData;
+
+public class CachedMemoryForest implements Forest
+{
+	private Map<NodeID,SingleNode> m_nodeCache;
+	private Map<String,SingleNode> m_tipCache;
+	
+	public CachedMemoryForest()
+	{
+		
+	}
+
+	@Override
+	public SingleNode get(NodeID _id)
+	{
+		return null;
+	}
+
+	@Override
+	public SingleNode getTip(String _uuid)
+	{
+		return null;
+	}
+
+	@Override
+	public SingleNode create() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Tree getTree(SingleNode _root) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public MonotonicTree getMonotonicTree(Tree _tree) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SingleNode create(NodeData<SingleNode> _data) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Tree getMainTree() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SingleNode create(NodeID _id, NodeData<SingleNode> _data) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
--- a/src/treecms/cassandra/CassandraForest.java	Tue May 24 19:28:38 2011 +0900
+++ b/src/treecms/cassandra/CassandraForest.java	Tue May 31 15:55:28 2011 +0900
@@ -1,13 +1,5 @@
 package treecms.cassandra;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.cassandra.thrift.Mutation;
-
 import treecms.api.Forest;
 import treecms.api.MonotonicTree;
 import treecms.api.NodeID;
@@ -15,81 +7,61 @@
 import treecms.api.Tree;
 import treecms.tree.util.NodeData;
 
-
 public class CassandraForest implements Forest
 {
-	private Map<NodeID,SingleNode> m_nodeTable;
-	private Map<String,SingleNode> m_tipTable;
-	
-	public CassandraForest()
-	{
-		m_nodeTable = new ConcurrentHashMap<NodeID,SingleNode>();
-		m_tipTable = new ConcurrentHashMap<String,SingleNode>();
-	}
 
 	@Override
 	public SingleNode get(NodeID _id)
 	{
-		return m_nodeTable.get(_id);
-	}
-
-	@Override
-	public SingleNode getTip(String _uuid)
-	{
-		return m_tipTable.get(_uuid);
-	}
-
-	@Override
-	public SingleNode create()
-	{
+		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
-	public Tree getTree(SingleNode _root)
-	{
+	public SingleNode getTip(String _uuid) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SingleNode create() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Tree getTree(SingleNode _root) {
+		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
-	public MonotonicTree getMonotonicTree(Tree _tree)
-	{
+	public MonotonicTree getMonotonicTree(Tree _tree) {
+		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
-	public SingleNode create(NodeData<SingleNode> _data)
-	{
-		return null;
-	}
-
-	@Override
-	public Tree getMainTree()
-	{
+	public SingleNode create(NodeData<SingleNode> _data) {
+		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
-	public SingleNode create(NodeID _id, NodeData<SingleNode> _data)
-	{
+	public Tree getMainTree() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SingleNode create(NodeID _id, NodeData<SingleNode> _data) {
+		// TODO Auto-generated method stub
 		return null;
 	}
 	
-	private class CassandraNodeExporter extends TimerTask
+	public static NodeID decodeStringID(String _strID)
 	{
-		private List<Mutation> m_updateQueue;
-		
-		@Override
-		public void run()
-		{
-		}
-	}
-
-	private class CassandraNodeImporter extends TimerTask
-	{
-		@Override
-		public void run()
-		{
-		}
+		CassandraRandomNodeID id = CassandraRandomNodeID.decode(_strID);
+		return id;
 	}
 }
--- a/src/treecms/cassandra/CassandraNodeMap.java	Tue May 24 19:28:38 2011 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-package treecms.cassandra;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class CassandraNodeMap
-{
-	private Map<NodeID,SingleNode> m_table;
-
-	public CassandraNodeMap(String _host,int _port,String _ks)
-	{
-		m_table = new ConcurrentHashMap<NodeID,SingleNode>();
-	}
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/cassandra/CassandraRandomNodeID.java	Tue May 31 15:55:28 2011 +0900
@@ -0,0 +1,76 @@
+package treecms.cassandra;
+
+import java.util.Random;
+import java.util.StringTokenizer;
+import java.util.UUID;
+
+import treecms.api.NodeID;
+import treecms.tree.id.AbstractRandomNodeID;
+
+public class CassandraRandomNodeID extends AbstractRandomNodeID
+{
+	private final long m_version;
+	private final String m_uuid;
+	
+	
+	private CassandraRandomNodeID(String _uuid,String _version)
+	{
+		this(_uuid,Long.parseLong(_version,16));
+	}
+	
+	private CassandraRandomNodeID(String _uuid,long _version)
+	{
+		m_uuid = _uuid;
+		m_version = _version;
+	}
+	
+	@Override
+	public NodeID create()
+	{
+		return newInstance();
+	}
+
+	@Override
+	public String getUUID()
+	{
+		return m_uuid;
+	}
+
+	@Override
+	public String getVersion()
+	{
+		return Long.toString(m_version);
+	}
+
+	@Override
+	public NodeID update()
+	{
+		Random rnd = new Random();
+		CassandraRandomNodeID id = new CassandraRandomNodeID(m_uuid,rnd.nextLong());
+		return id;
+	}
+	
+	public static CassandraRandomNodeID newInstance()
+	{
+		Random rnd = new Random();
+		CassandraRandomNodeID id = new CassandraRandomNodeID(UUID.randomUUID().toString(),rnd.nextLong());
+		return id;
+	}
+
+	public static CassandraRandomNodeID decode(String _id)
+	{
+		// UUID@Version
+		StringTokenizer tokens = new StringTokenizer(_id,"@");
+		
+		try{
+			String uuid = tokens.nextToken();
+			String version = tokens.nextToken();
+			
+			CassandraRandomNodeID id = new CassandraRandomNodeID(uuid,version);
+			
+			return id;
+		}catch(Exception _e){
+			throw new IllegalArgumentException(_e);
+		}
+	}
+}
--- a/src/treecms/cassandra/CassandraSingleNode.java	Tue May 24 19:28:38 2011 +0900
+++ b/src/treecms/cassandra/CassandraSingleNode.java	Tue May 31 15:55:28 2011 +0900
@@ -4,151 +4,166 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import treecms.api.Forest;
 import treecms.api.NodeAttributes;
 import treecms.api.NodeChildren;
 import treecms.api.NodeID;
 import treecms.api.SingleNode;
-
-public class CassandraSingleNode implements SingleNode {
+import treecms.tree.util.NodeAttributesImpl;
+import treecms.tree.util.NodeChildrenImpl;
 
-	@Override
-	public NodeID getID() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Forest getForest() {
-		// TODO Auto-generated method stub
-		return null;
+public class CassandraSingleNode implements SingleNode
+{
+	private final CassandraForest m_forest;
+	private final NodeID m_id;
+	
+	private final NodeChildren<SingleNode> m_children;
+	private final NodeAttributes m_attrs;
+	
+	public CassandraSingleNode(CassandraForest _forest,NodeID _id)
+	{
+		m_forest = _forest;
+		m_id = _id;
+		
+		m_children = new NodeChildrenImpl<SingleNode>();
+		m_attrs = new NodeAttributesImpl();
 	}
 
 	@Override
-	public Map<ByteBuffer, ByteBuffer> asMap() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Set<ByteBuffer> getKeySet() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public void put(ByteBuffer _name, ByteBuffer _value) {
-		// TODO Auto-generated method stub
-
+	public NodeID getID()
+	{
+		return m_id;
 	}
 
 	@Override
-	public void putAll(NodeAttributes _attrs) {
-		// TODO Auto-generated method stub
-
+	public Forest getForest()
+	{
+		return m_forest;
+	}
+	
+	@Override
+	public List<SingleNode> getList()
+	{
+		return m_children.getList();
 	}
 
 	@Override
-	public ByteBuffer get(ByteBuffer _name) {
-		// TODO Auto-generated method stub
-		return null;
+	public Set<String> getUUIDSet()
+	{
+		return m_children.getUUIDSet();
 	}
 
 	@Override
-	public NodeAttributes getAll() {
-		// TODO Auto-generated method stub
-		return null;
+	public boolean add(SingleNode _child)
+	{
+		return m_children.add(_child);
+	}
+
+	@Override
+	public boolean addAll(NodeChildren<SingleNode> _children)
+	{
+		return m_children.addAll(_children);
 	}
 
 	@Override
-	public void remove(ByteBuffer _name) {
-		// TODO Auto-generated method stub
-
+	public SingleNode get(String _uuid)
+	{
+		return m_children.get(_uuid);
 	}
 
 	@Override
-	public void removeAll(Set<ByteBuffer> _keySet) {
-		// TODO Auto-generated method stub
-
+	public SingleNode get(int _index)
+	{
+		return m_children.get(_index);
 	}
 
 	@Override
-	public void clearAttributes() {
-		// TODO Auto-generated method stub
-
+	public SingleNode remove(String _uuid)
+	{
+		return m_children.remove(_uuid);
 	}
 
 	@Override
-	public List<SingleNode> getList() {
-		// TODO Auto-generated method stub
-		return null;
+	public SingleNode remove(int _index)
+	{
+		return m_children.remove(_index);
 	}
 
 	@Override
-	public Set<String> getUUIDSet() {
-		// TODO Auto-generated method stub
-		return null;
+	public SingleNode replace(SingleNode _newChild)
+	{
+		return m_children.replace(_newChild);
+	}
+
+	@Override
+	public boolean contains(String _id)
+	{
+		return m_children.contains(_id);
 	}
 
 	@Override
-	public boolean add(SingleNode _child) {
-		// TODO Auto-generated method stub
-		return false;
+	public boolean swap(String _uuid1, String _uuid2)
+	{
+		return m_children.swap(_uuid1, _uuid2);
 	}
 
 	@Override
-	public boolean addAll(NodeChildren<SingleNode> _children) {
-		// TODO Auto-generated method stub
-		return false;
+	public void clearChildren()
+	{
+		m_children.clearChildren();
 	}
 
 	@Override
-	public SingleNode get(String _uuid) {
-		// TODO Auto-generated method stub
-		return null;
+	public Map<ByteBuffer, ByteBuffer> asMap()
+	{
+		return m_attrs.asMap();
 	}
 
 	@Override
-	public SingleNode get(int _index) {
-		// TODO Auto-generated method stub
-		return null;
+	public Set<ByteBuffer> getKeySet()
+	{
+		return m_attrs.getKeySet();
 	}
 
 	@Override
-	public SingleNode remove(String _uuid) {
-		// TODO Auto-generated method stub
-		return null;
+	public void put(ByteBuffer _name, ByteBuffer _value)
+	{
+		m_attrs.put(_name,_value);
 	}
 
 	@Override
-	public SingleNode remove(int _index) {
-		// TODO Auto-generated method stub
-		return null;
+	public void putAll(NodeAttributes _attrs) 
+	{
+		m_attrs.putAll(_attrs);
 	}
 
 	@Override
-	public SingleNode replace(SingleNode _newChild) {
-		// TODO Auto-generated method stub
-		return null;
+	public ByteBuffer get(ByteBuffer _name)
+	{
+		return m_attrs.get(_name);
 	}
 
 	@Override
-	public boolean contains(String _id) {
-		// TODO Auto-generated method stub
-		return false;
+	public NodeAttributes getAll()
+	{
+		return m_attrs.getAll();
+	}
+
+	@Override
+	public void remove(ByteBuffer _name)
+	{
+		m_attrs.remove(_name);
 	}
 
 	@Override
-	public boolean swap(String _uuid1, String _uuid2) {
-		// TODO Auto-generated method stub
-		return false;
+	public void removeAll(Set<ByteBuffer> _keySet)
+	{
+		m_attrs.removeAll(_keySet);
 	}
 
 	@Override
-	public void clearChildren() {
-		// TODO Auto-generated method stub
-
+	public void clearAttributes()
+	{
+		m_attrs.clearAttributes();
 	}
-
 }
--- a/src/treecms/test/GenericsTest.java	Tue May 24 19:28:38 2011 +0900
+++ b/src/treecms/test/GenericsTest.java	Tue May 31 15:55:28 2011 +0900
@@ -6,6 +6,11 @@
 {
 	public static void main(String _args[])
 	{
+		new GenericsTest<Hoge>();
+	}
+	
+	public GenericsTest()
+	{
 	}
 	
 	public GenericsTest(E _instance)
@@ -13,6 +18,23 @@
 	}
 }
 
+class FooBar implements Bar<FooBar>
+{
+
+	@Override
+	public Foo get() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<Foo> list(Foo _f) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
+}
+
 interface Foo
 {
 	public Foo get();
@@ -25,4 +47,20 @@
 	public Hoge get();
 	
 	public List<Foo> list(Hoge _h);
-}
\ No newline at end of file
+}
+
+interface Bar<T extends Foo> extends Foo
+{
+}
+
+interface Foo2<T extends Foo>
+{
+}
+
+class FooBar2<Bar> implements Foo2
+{
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/test/GenericsTest2.java	Tue May 31 15:55:28 2011 +0900
@@ -0,0 +1,41 @@
+package treecms.test;
+
+public class GenericsTest2
+{
+
+}
+
+interface Attributes
+{
+	void a();
+}
+
+interface Children<T extends Node<T>>
+{
+	void b();
+}
+
+interface Context
+{
+	void c();
+}
+
+interface Node<T extends Node<T>> extends Attributes , Children<T> , Context
+{
+}
+
+interface SingleNode extends Node<SingleNode>
+{
+	
+}
+
+class ChildrenImpl implements Children<SingleNode>
+{
+
+	@Override
+	public void b() {
+		// TODO Auto-generated method stub
+		
+	}
+	
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/test/JSONParserTest1.java	Tue May 31 15:55:28 2011 +0900
@@ -0,0 +1,45 @@
+package treecms.test;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.json.simple.JSONArray;
+import org.json.simple.parser.ContainerFactory;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+
+public class JSONParserTest1
+{
+	public static void main(String _args[]) throws ParseException
+	{
+		//test1
+		String s = "[]";
+		JSONParser p = new JSONParser();
+		JSONArray array = (JSONArray)p.parse(s);
+		System.out.println(array.size());
+		
+		//test2
+		String json = "";
+		ContainerFactory factory = new ContainerFactory(){
+
+			@Override
+			public List<Object> creatArrayContainer() {
+				return new LinkedList<Object>();
+			}
+
+			@Override
+			public Map<Object,Object> createObjectContainer() {
+				return new HashMap<Object,Object>();
+			}
+			
+		};
+		
+		JSONParser p2 = new JSONParser();
+		LinkedList<Object> list = (LinkedList<Object>)p2.parse(json,factory);
+		for(Object item : list){
+			System.out.println(item.toString());
+		}
+	}
+}