changeset 26:9b91329e8a04

commit for zemi , doent move
author ShoshiTAMAKI
date Tue, 02 Nov 2010 18:44:21 +0900
parents 99346c04a3cf
children 45881237e777
files src/treecms/proto/api/Node.java src/treecms/proto/edit/EditableTreeBuilder.java src/treecms/proto/edit/PreOrderTreeWalkerRecursive.java src/treecms/proto/id/IncrementalNodeID.java src/treecms/proto/id/IncrementalNodeIDFactory.java src/treecms/proto/id/NodeIDFactoryImpl.java src/treecms/proto/id/NodeIDImpl.java src/treecms/proto/merge/MergedTreeBuilder.java src/treecms/proto/simple/SimpleNode.java src/treecms/proto/simple/SimpleTreeBuilder.java src/treecms/proto/test/EditableTreeBuilderTest1.java src/treecms/proto/test/PreOrderTreeWalkerRecurisiveTest1.java src/treecms/proto/test/PreOrderTreeWalkerRecursive.java src/treecms/proto/test/SearchPathTest1.java src/treecms/proto/test/SimpleNodeTest1.java
diffstat 15 files changed, 233 insertions(+), 279 deletions(-) [+]
line wrap: on
line diff
--- a/src/treecms/proto/api/Node.java	Sun Oct 31 18:34:02 2010 +0900
+++ b/src/treecms/proto/api/Node.java	Tue Nov 02 18:44:21 2010 +0900
@@ -11,6 +11,7 @@
 	public boolean isChild(Node _child);
 	
 	public void addChild(Node _child);
+	public void addChildren(List<Node> _children);
 	public void removeChild(Node _child);
 	
 	public void up(Node _child);
--- a/src/treecms/proto/edit/EditableTreeBuilder.java	Sun Oct 31 18:34:02 2010 +0900
+++ b/src/treecms/proto/edit/EditableTreeBuilder.java	Tue Nov 02 18:44:21 2010 +0900
@@ -2,40 +2,22 @@
 
 import java.util.LinkedList;
 import java.util.List;
-
 import treecms.proto.api.Node;
 import treecms.proto.api.TreeBuilder;
+import treecms.proto.simple.SimpleTreeBuilder;
 
-public class EditableTreeBuilder implements TreeBuilder
+public class EditableTreeBuilder extends SimpleTreeBuilder
 {
-	private TreeBuilder m_builder;
 	private Node m_newRoot;
-	private Node m_oldRoot;
-	
 	private Node m_target; //node that wanted to edit.
 	
 	public EditableTreeBuilder(Node _target,TreeBuilder _builder)
 	{
-		m_builder = _builder;
-		
 		//search path
-		m_oldRoot = _builder.getContents();
-		LinkedList<Node> path = findPath(m_oldRoot,_target);
-		
-		/*
-		for(Node node : path){
-			System.out.println(node.getTitle());
-		}
-		*/
-		
-		//clone tree
+		LinkedList<Node> path = findPath(_builder.getContents(),_target);
 		
 		//clone root node.
-		m_newRoot = m_builder.createNode();
-		Node oldRoot = path.poll();
-		m_newRoot.setClassName(oldRoot.getClassName());
-		m_newRoot.setTitle(oldRoot.getTitle());
-		m_newRoot.getChildList().addAll(oldRoot.getChildList());
+		m_newRoot = cloneNode(path.poll());
 		
 		cloneTree(path,m_newRoot.getChildList());
 	}
@@ -52,11 +34,8 @@
 			Node _child = _children.get(i);
 			if(_child == target){
 				//clone node
-				Node newNode = m_builder.createNode();
-				newNode.setClassName(target.getClassName());
-				newNode.setTitle(target.getTitle());
-				newNode.getChildList().addAll(target.getChildList());
-				m_target = newNode; //oooooooooooooo.............. :(
+				Node newNode = cloneNode(target);
+				m_target = newNode; // look out!!
 				
 				//remove old node from clonedTree
 				_children.add(i,newNode);
@@ -103,11 +82,4 @@
 		// TODO Auto-generated method stub
 		return m_newRoot;
 	}
-
-	@Override
-	public Node createNode()
-	{
-		// TODO Auto-generated method stub
-		return m_builder.createNode();
-	}
 }
--- a/src/treecms/proto/edit/PreOrderTreeWalkerRecursive.java	Sun Oct 31 18:34:02 2010 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-package treecms.proto.edit;
-import java.util.Iterator;
-
-import java.util.LinkedList;
-
-import treecms.proto.api.Node;
-
-public class PreOrderTreeWalkerRecursive implements Iterable<Node>
-{
-	private Node m_root;
-	
-	public PreOrderTreeWalkerRecursive(Node _root)
-	{
-		m_root = _root;
-	}
-
-	@Override
-	public Iterator<Node> iterator()
-	{
-		return new PreOrderRecursiveIterator(m_root);
-	}
-
-	class PreOrderRecursiveIterator implements Iterator<Node>
-	{
-		private LinkedList<Node> nextList;
-		
-		public PreOrderRecursiveIterator(Node _root)
-		{
-			nextList = new LinkedList<Node>();
-			getChildren(_root, nextList);
-		}
-		
-		void getChildren(Node node, LinkedList<Node>list) {
-			list.add(node);
-			for(Node child : node.getChildList()){
-				getChildren(child,list);
-			}
-		}
-		
-		@Override
-		public boolean hasNext()
-		{
-			return !nextList.isEmpty();
-		}
-
-		@Override
-		public Node next()
-		{
-			return nextList.poll();
-		}
-
-		@Override
-		public void remove()
-		{
-			throw new UnsupportedOperationException("cant remove from itrerator");
-		}
-	}
-	
-	public LinkedList<Node> findPath(Node root, Node node) {
-		LinkedList<Node> list = new LinkedList<Node>();
-		list.addFirst(root);
-		findPath(root,node,list);
-		return list;
-	}
-
-	private boolean findPath(Node root, Node node, LinkedList<Node> list) {
-		if (root==node) return true;
-		for(Node child : node.getChildList()){
-			if (findPath(child,node,list)) {
-				list.addFirst(child);
-				return true;
-			}
-		}
-		return false; // backtrack
-	}
-	
-	/*
-	public Node cloneTree(LinkedList<Node> path) {
-			Node old = path.poll();
-			Node node = new SimpleNode(old.getTitle());
-			node.setClassName(old.getClassName());
-			for(Node child: old.getChildList()) {
-				if (child==old && !path.isEmpty()) child = cloneTree(path);
-				node.getChildList().add(child);
-			}
-			return node;
-		}
-	*/
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/proto/id/IncrementalNodeID.java	Tue Nov 02 18:44:21 2010 +0900
@@ -0,0 +1,62 @@
+package treecms.proto.id;
+
+import treecms.proto.api.NodeID;
+import java.util.concurrent.atomic.AtomicLong;
+
+public class IncrementalNodeID implements NodeID
+{
+	private String m_inheritedID;
+	private final long m_version;
+	
+	private AtomicLong m_tip;
+	
+	public IncrementalNodeID(String _inheritedID,AtomicLong _version)
+	{
+		m_inheritedID = _inheritedID;
+		m_version = _version.getAndIncrement();
+		m_tip = _version;
+	}
+	
+	String getInheritedID()
+	{
+		return m_inheritedID;
+	}
+	
+	long getVersion()
+	{
+		return m_version;
+	}
+	
+	AtomicLong getTip()
+	{
+		return m_tip;
+	}
+	
+	@Override
+	public int compare(NodeID _target)
+	{
+		// TODO Auto-generated method stub
+		if(!(_target instanceof IncrementalNodeID)){
+			throw new IllegalArgumentException("_target is not instance of NodeIDImpl");
+		}
+		
+		IncrementalNodeID target = (IncrementalNodeID)_target;
+		if(m_inheritedID.equals(target.m_inheritedID)){
+			long diff = m_version - target.m_version;
+			if(diff == 0){
+				return 0;
+			}else if(diff < 0){
+				return -1;
+			}else{
+				return 1;
+			}
+		}
+		return -2;
+	}
+	
+	@Override
+	public String toString()
+	{
+		return m_inheritedID + "@" + m_version;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/proto/id/IncrementalNodeIDFactory.java	Tue Nov 02 18:44:21 2010 +0900
@@ -0,0 +1,25 @@
+package treecms.proto.id;
+
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicLong;
+
+import treecms.proto.api.NodeID;
+import treecms.proto.api.NodeIDFactory;
+
+public class IncrementalNodeIDFactory implements NodeIDFactory
+{
+	@Override
+	public NodeID createNewID()
+	{
+		// TODO Auto-generated method stub
+		return new IncrementalNodeID(UUID.randomUUID().toString(),new AtomicLong());
+	}
+
+	@Override
+	public NodeID updateExistID(NodeID _id)
+	{
+		// TODO Auto-generated method stub
+		IncrementalNodeID id = (IncrementalNodeID)_id;
+		return new IncrementalNodeID(id.getInheritedID(),id.getTip());
+	}
+}
--- a/src/treecms/proto/id/NodeIDFactoryImpl.java	Sun Oct 31 18:34:02 2010 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-package treecms.proto.id;
-
-import java.util.UUID;
-import java.util.concurrent.atomic.AtomicLong;
-
-import treecms.proto.api.NodeID;
-import treecms.proto.api.NodeIDFactory;
-
-public class NodeIDFactoryImpl implements NodeIDFactory
-{
-	@Override
-	public NodeID createNewID()
-	{
-		// TODO Auto-generated method stub
-		return new NodeIDImpl(UUID.randomUUID().toString(),new AtomicLong());
-	}
-
-	@Override
-	public NodeID updateExistID(NodeID _id)
-	{
-		// TODO Auto-generated method stub
-		NodeIDImpl id = (NodeIDImpl)_id;
-		return new NodeIDImpl(id.getInheritedID(),id.getTip());
-	}
-}
--- a/src/treecms/proto/id/NodeIDImpl.java	Sun Oct 31 18:34:02 2010 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-package treecms.proto.id;
-
-import treecms.proto.api.NodeID;
-import java.util.concurrent.atomic.AtomicLong;
-
-public class NodeIDImpl implements NodeID
-{
-	private String m_inheritedID;
-	private final long m_version;
-	
-	private AtomicLong m_tip;
-	
-	public NodeIDImpl(String _inheritedID,AtomicLong _version)
-	{
-		m_inheritedID = _inheritedID;
-		m_version = _version.getAndIncrement();
-		m_tip = _version;
-	}
-	
-	String getInheritedID()
-	{
-		return m_inheritedID;
-	}
-	
-	long getVersion()
-	{
-		return m_version;
-	}
-	
-	AtomicLong getTip()
-	{
-		return m_tip;
-	}
-	
-	@Override
-	public int compare(NodeID _target)
-	{
-		// TODO Auto-generated method stub
-		if(m_inheritedID.equals(((NodeIDImpl)_target).m_inheritedID)){
-			long diff = m_version - ((NodeIDImpl)_target).m_version;
-			if(diff == 0){
-				return 0;
-			}else if(diff < 0){
-				return -1;
-			}else{
-				return 1;
-			}
-		}
-		return -2;
-	}
-	
-	@Override
-	public String toString()
-	{
-		return m_inheritedID + "@" + m_version;
-	}
-}
--- a/src/treecms/proto/merge/MergedTreeBuilder.java	Sun Oct 31 18:34:02 2010 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-package treecms.proto.merge;
-
-import treecms.proto.api.Node;
-
-import java.util.List;
-import treecms.proto.api.TreeBuilder;
-
-public class MergedTreeBuilder implements TreeBuilder
-{
-	private Node m_root;
-	
-	private TreeBuilder m_target;
-	
-	public MergedTreeBuilder(TreeBuilder _target1,TreeBuilder _target2)
-	{
-		Node root1 = _target1.getContents();
-		Node root2 = _target2.getContents();
-		
-		merge(root2,root1);
-	}
-	
-	public void merge(Node _target,Node _root)
-	{
-		List<Node> targetChld = _target.getChildList();
-		List<Node> rootChld = _root.getChildList();
-	}
-	
-	@Override
-	public Node getContents()
-	{
-		// TODO Auto-generated method stub
-		return m_root;
-	}
-
-	@Override
-	public Node createNode()
-	{
-		// TODO Auto-generated method stub
-		return null;
-	}
-}
--- a/src/treecms/proto/simple/SimpleNode.java	Sun Oct 31 18:34:02 2010 +0900
+++ b/src/treecms/proto/simple/SimpleNode.java	Tue Nov 02 18:44:21 2010 +0900
@@ -8,7 +8,7 @@
 
 public class SimpleNode implements Node
 {
-	private LinkedList<Node> m_childs;
+	private LinkedList<Node> m_children;
 	
 	private String m_class;
 	private String m_title;
@@ -16,7 +16,7 @@
 	
 	public SimpleNode(NodeID _id)
 	{
-		m_childs = new LinkedList<Node>();
+		m_children = new LinkedList<Node>();
 		m_class = "";
 		m_title = "";
 		
@@ -27,42 +27,42 @@
 	public List<Node> getChildList()
 	{
 		// TODO Auto-generated method stub
-		return m_childs;
+		return m_children;
 	}
 
 	@Override
 	public boolean isChild(Node _child) {
 		// TODO Auto-generated method stub
-		return m_childs.contains(_child);
+		return m_children.contains(_child);
 	}
 
 	@Override
 	public void addChild(Node _child) {
 		// TODO Auto-generated method stub
-		m_childs.add(_child);
+		m_children.add(_child);
 	}
 
 	@Override
 	public void removeChild(Node _child) {
 		// TODO Auto-generated method stub
-		m_childs.remove(_child);
+		m_children.remove(_child);
 	}
 
 	@Override
 	public void up(Node _child) {
 		// TODO Auto-generated method stub
-		int curPos = m_childs.indexOf(_child);
+		int curPos = m_children.indexOf(_child);
 		if(curPos - 1 > 0){
-			m_childs.add(curPos - 1,m_childs.remove(curPos));
+			m_children.add(curPos - 1,m_children.remove(curPos));
 		}
 	}
 
 	@Override
 	public void down(Node _child) {
 		// TODO Auto-generated method stub
-		int curPos = m_childs.indexOf(_child);
-		if(curPos + 1 < m_childs.size()){
-			m_childs.add(curPos + 1,m_childs.remove(curPos));
+		int curPos = m_children.indexOf(_child);
+		if(curPos + 1 < m_children.size()){
+			m_children.add(curPos + 1,m_children.remove(curPos));
 		}
 	}
 
@@ -93,7 +93,7 @@
 	@Override
 	public Iterator<Node> iterator() {
 		// TODO Auto-generated method stub
-		return m_childs.iterator();
+		return m_children.iterator();
 	}
 	
 	@Override
@@ -102,4 +102,9 @@
 		return this.m_id;
 	}
 
+	@Override
+	public void addChildren(List<Node> _children) {
+		// TODO Auto-generated method stub
+		this.m_children.addAll(_children);
+	}
 }
--- a/src/treecms/proto/simple/SimpleTreeBuilder.java	Sun Oct 31 18:34:02 2010 +0900
+++ b/src/treecms/proto/simple/SimpleTreeBuilder.java	Tue Nov 02 18:44:21 2010 +0900
@@ -2,16 +2,16 @@
 
 import treecms.proto.api.Node;
 import treecms.proto.api.TreeBuilder;
-import treecms.proto.id.NodeIDFactoryImpl;
+import treecms.proto.id.IncrementalNodeIDFactory;
 
 public class SimpleTreeBuilder implements TreeBuilder
 {
 	private Node m_root;
-	private NodeIDFactoryImpl m_idFactory;
+	private IncrementalNodeIDFactory m_idFactory;
 	
 	public SimpleTreeBuilder()
 	{
-		m_idFactory = new NodeIDFactoryImpl();
+		m_idFactory = new IncrementalNodeIDFactory();
 		m_root = createNode();
 	}
 	
@@ -30,8 +30,14 @@
 	{
 		// TODO Auto-generated method stub
 		if(!(_node instanceof SimpleNode)){
-			throw new IllegalArgumentException();
+			throw new IllegalArgumentException("cant clone , _node is not instance of SimpleNode");
 		}
-		return new SimpleNode(m_idFactory.updateExistID(_node.getID()));
+		
+		SimpleNode clone = new SimpleNode(m_idFactory.updateExistID(_node.getID()));
+		clone.setClassName(_node.getClassName());
+		clone.setTitle(_node.getTitle());
+		clone.addChildren(_node.getChildList());
+		
+		return clone;
 	}
 }
--- a/src/treecms/proto/test/EditableTreeBuilderTest1.java	Sun Oct 31 18:34:02 2010 +0900
+++ b/src/treecms/proto/test/EditableTreeBuilderTest1.java	Tue Nov 02 18:44:21 2010 +0900
@@ -1,13 +1,19 @@
 package treecms.proto.test;
 
-import treecms.proto.edit.*;
 import treecms.proto.api.*;
+import treecms.proto.edit.EditableTreeBuilder;
 import treecms.proto.simple.*;
 
 public class EditableTreeBuilderTest1 
 {
 	public static void main(String _args[])
 	{
+		new EditableTreeBuilderTest1();
+	}
+	
+	public EditableTreeBuilderTest1()
+	{
+		
 		TreeBuilder builder = new SimpleTreeBuilder();
 		Node root = builder.getContents();
 		root.setTitle("root");
@@ -43,23 +49,26 @@
 		
 		child21.addChild(child211);
 		child21.addChild(child212);
-	
-		//i want to edit child22
 		
-		System.out.println("original");
 		PreOrderTreeWalkerRecursive walker = new PreOrderTreeWalkerRecursive(builder.getContents());
-		for(Node node : walker){
-			System.out.println(node.getTitle() + "\t\tID:" + node.getID());
-		}
+		System.out.println("original........................................");
+		print(walker);
 		
-		
-		System.out.println("clonedtree");
-		
-		//check that tree correctly copied.
 		EditableTreeBuilder builder2 = new EditableTreeBuilder(child212,builder);
 		builder2.getTargetNode().setTitle("cloned child212");
 		walker = new PreOrderTreeWalkerRecursive(builder2.getContents());
-		for(Node node : walker){
+		System.out.println("cloned..........................................");
+		print(walker);
+		
+		builder2 = new EditableTreeBuilder(builder2.getTargetNode(),builder);
+		walker = new PreOrderTreeWalkerRecursive(builder2.getContents());
+		System.out.println("cloned..........................................");
+		print(walker);
+	}
+	
+	private void print(PreOrderTreeWalkerRecursive _walker)
+	{
+		for(Node node : _walker){
 			System.out.println(node.getTitle() + "\t\tID:" + node.getID());
 		}
 	}
--- a/src/treecms/proto/test/PreOrderTreeWalkerRecurisiveTest1.java	Sun Oct 31 18:34:02 2010 +0900
+++ b/src/treecms/proto/test/PreOrderTreeWalkerRecurisiveTest1.java	Tue Nov 02 18:44:21 2010 +0900
@@ -4,7 +4,6 @@
 import treecms.proto.api.*;
 import treecms.proto.simple.*;
 import treecms.proto.edit.EditableTreeBuilder;
-import treecms.proto.edit.PreOrderTreeWalkerRecursive;
 
 public class PreOrderTreeWalkerRecurisiveTest1
 {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/proto/test/PreOrderTreeWalkerRecursive.java	Tue Nov 02 18:44:21 2010 +0900
@@ -0,0 +1,89 @@
+package treecms.proto.test;
+import java.util.Iterator;
+
+import java.util.LinkedList;
+
+import treecms.proto.api.Node;
+
+public class PreOrderTreeWalkerRecursive implements Iterable<Node>
+{
+	private Node m_root;
+	
+	public PreOrderTreeWalkerRecursive(Node _root)
+	{
+		m_root = _root;
+	}
+
+	@Override
+	public Iterator<Node> iterator()
+	{
+		return new PreOrderRecursiveIterator(m_root);
+	}
+
+	class PreOrderRecursiveIterator implements Iterator<Node>
+	{
+		private LinkedList<Node> nextList;
+		
+		public PreOrderRecursiveIterator(Node _root)
+		{
+			nextList = new LinkedList<Node>();
+			getChildren(_root, nextList);
+		}
+		
+		void getChildren(Node node, LinkedList<Node>list) {
+			list.add(node);
+			for(Node child : node.getChildList()){
+				getChildren(child,list);
+			}
+		}
+		
+		@Override
+		public boolean hasNext()
+		{
+			return !nextList.isEmpty();
+		}
+
+		@Override
+		public Node next()
+		{
+			return nextList.poll();
+		}
+
+		@Override
+		public void remove()
+		{
+			throw new UnsupportedOperationException("cant remove from itrerator");
+		}
+	}
+	
+	public LinkedList<Node> findPath(Node root, Node node) {
+		LinkedList<Node> list = new LinkedList<Node>();
+		list.addFirst(root);
+		findPath(root,node,list);
+		return list;
+	}
+
+	private boolean findPath(Node root, Node node, LinkedList<Node> list) {
+		if (root==node) return true;
+		for(Node child : node.getChildList()){
+			if (findPath(child,node,list)) {
+				list.addFirst(child);
+				return true;
+			}
+		}
+		return false; // backtrack
+	}
+	
+	/*
+	public Node cloneTree(LinkedList<Node> path) {
+			Node old = path.poll();
+			Node node = new SimpleNode(old.getTitle());
+			node.setClassName(old.getClassName());
+			for(Node child: old.getChildList()) {
+				if (child==old && !path.isEmpty()) child = cloneTree(path);
+				node.getChildList().add(child);
+			}
+			return node;
+		}
+	*/
+}
--- a/src/treecms/proto/test/SearchPathTest1.java	Sun Oct 31 18:34:02 2010 +0900
+++ b/src/treecms/proto/test/SearchPathTest1.java	Tue Nov 02 18:44:21 2010 +0900
@@ -5,7 +5,6 @@
 import java.util.LinkedList;
 
 import treecms.proto.api.*;
-import treecms.proto.edit.PreOrderTreeWalkerRecursive;
 import treecms.proto.simple.*;
 
 public class SearchPathTest1
--- a/src/treecms/proto/test/SimpleNodeTest1.java	Sun Oct 31 18:34:02 2010 +0900
+++ b/src/treecms/proto/test/SimpleNodeTest1.java	Tue Nov 02 18:44:21 2010 +0900
@@ -3,7 +3,6 @@
 import java.util.Iterator;
 
 import treecms.proto.api.*;
-import treecms.proto.edit.PreOrderTreeWalkerRecursive;
 import treecms.proto.simple.*;
 
 public class SimpleNodeTest1
@@ -51,7 +50,7 @@
 		Iterator<Node> itr = walker.iterator();
 		while(itr.hasNext()){
 			Node node = itr.next();
-			System.out.println(node.getTitle());
+			System.out.println(node.getTitle()+"\t id:"+node.getID().toString());
 		}
 	}
 }