changeset 191:5d0734fd859d

fix error
author tatsuki
date Thu, 15 Jan 2015 09:23:23 +0900
parents 269bada9eedc
children 3202a2a427b1
files pom.xml src/main/java/alice/jungle/core/NetworkDefaultJungle.java src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java src/main/java/alice/jungle/operations/NetworkNodePath.java src/main/java/alice/jungle/operations/NetworkPutAttributeOperation.java src/main/java/alice/jungle/persistent/PersistentChangeSet.java src/main/java/alice/jungle/persistent/PersistentJungle.java src/main/java/alice/jungle/persistent/PersistentJungleTree.java src/main/java/alice/jungle/persistent/PersistentTransactionManager.java src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java src/main/java/alice/jungle/transaction/NetworkTransactionManager.java src/main/java/app/bbs/DistributeApp.java src/main/java/app/bbs/NetworkBulletinBoard.java src/main/java/app/bbs/NetworkJungleBulletinBoard.java src/main/java/app/bbs/codesegment/StartmaTrixBBSCodeSegment.java src/main/java/app/bbs/thinks/CreateNode.java src/main/java/app/bbs/thinks/EditAttributeServlet.java src/main/java/app/bbs/thinks/EditNodeName.java src/main/java/app/bbs/thinks/MatrixApp.java src/main/java/app/bbs/thinks/NetworkMatrixJungleBulletinBoard.java src/main/java/app/bbs/thinks/ShowBoardsServletMatrix.java src/main/java/app/bbs/thinks/ShowMatrix.java src/main/java/app/bbs/thinks/ShowMessageWithTimeStampServletMatrix.java src/main/java/app/bbs/thinks/createAttributeMatrix.java src/main/java/app/bbs/thinks/deleteAttributeServlet.java src/main/java/app/bbs/thinks/deleteNodeServlet.java src/main/java/app/bbs/thinks/getAttributeImp.java src/main/java/app/bbs/thinks/permission.java src/test/java/alice/jungle/log/example/FindMatrixTest.java
diffstat 30 files changed, 453 insertions(+), 2243 deletions(-) [+]
line wrap: on
line diff
--- a/pom.xml	Fri Oct 17 15:16:56 2014 +0900
+++ b/pom.xml	Thu Jan 15 09:23:23 2015 +0900
@@ -48,11 +48,6 @@
   		<artifactId>uuid</artifactId>
   		<version>3.3.0</version>
   	</dependency>
-  	<dependency>
-  		<groupId>org.functionaljava</groupId>
-  		<artifactId>functionaljava</artifactId>
-  		<version>3.1</version>
-  	</dependency>
 
   	 <dependency>
       <groupId>org.msgpack</groupId>
--- a/src/main/java/alice/jungle/core/NetworkDefaultJungle.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/core/NetworkDefaultJungle.java	Thu Jan 15 09:23:23 2015 +0900
@@ -15,53 +15,57 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
 import fj.data.List;
+import fj.data.TreeMap;
 
 public class NetworkDefaultJungle implements Jungle {
-	private Journal journal;
-	private ConcurrentHashMap<String,JungleTree> trees;
-	private String uuid;
-	private TreeEditor editor;
-	
-	public NetworkDefaultJungle(Journal _journal,String _uuid,TreeEditor _editor)
-	{
-		journal = _journal;
-		trees = new ConcurrentHashMap<String,JungleTree>();
-		uuid = _uuid;
-		editor = _editor;
-	}
+  private Journal journal;
+  private ConcurrentHashMap<String, JungleTree> trees;
+  private String uuid;
+  private TreeEditor editor;
 
-	@Override
-	public JungleTree getTreeByName(String _name)
-	{
-		return trees.get(_name);
-	}
+  public NetworkDefaultJungle(Journal _journal, String _uuid, TreeEditor _editor) {
+    journal = _journal;
+    trees = new ConcurrentHashMap<String, JungleTree>();
+    uuid = _uuid;
+    editor = _editor;
+  }
+
+  @Override
+  public JungleTree getTreeByName(String _name) {
+    return trees.get(_name);
+  }
 
-	@Override
-	public JungleTree createNewTree(final String _name)
-	{
-		ChangeList list = new ChangeList(){
-			@Override
-			public Iterator<TreeOperation> iterator() {
-				List<TreeOperation> nil = List.nil();
-				return nil.iterator();
-			}
-			@Override
-			public String uuid() {
-				return uuid;
-			}
-			@Override
-			public String getTreeName() {
-				return _name;
-			}
-		};
-		TreeNode root = new DefaultTreeNode();
-		ChangeSet set = new DefaultChangeSet(root,null,list,uuid,_name, 0,null);
-		DefaultTreeContext tc = new DefaultTreeContext(root,set);
-		JungleTree newTree = new NetworkDefaultJungleTree(_name, tc,uuid,journal.getWriter(),editor);
-		if(trees.putIfAbsent(_name,newTree) != null){
-			return null;
-		}
-		return newTree;
-	}
+  @Override
+  public JungleTree createNewTree(final String name) {
+    ChangeList list = new ChangeList() {
+      @Override
+      public Iterator<TreeOperation> iterator() {
+        List<TreeOperation> nil = List.nil();
+        return nil.iterator();
+      }
+
+      @Override
+      public String uuid() {
+        return uuid;
+      }
+
+      @Override
+      public String getTreeName() {
+        return name;
+      }
+    };
+    TreeNode root = new DefaultTreeNode();
+    TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> indexList = new Index().getIndex();
+    TreeMap<TreeNode, TreeNode> parentIndex = new ParentIndex().getParentIndex();
+    ChangeSet set = new DefaultChangeSet(root, null, list, uuid, name, 0, indexList, parentIndex);
+    DefaultTreeContext tc = new DefaultTreeContext(root, set);
+    JungleTree newTree = new NetworkDefaultJungleTree(name, tc, uuid, journal.getWriter(), editor);
+    if (trees.putIfAbsent(name, newTree) != null) {
+      return null;
+    }
+    return newTree;
+  }
 }
--- a/src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java	Thu Jan 15 09:23:23 2015 +0900
@@ -54,10 +54,4 @@
 		return new LoggingNode(node, op);
 	}
 
-	@Override
-	public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
 }
--- a/src/main/java/alice/jungle/operations/NetworkNodePath.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/operations/NetworkNodePath.java	Thu Jan 15 09:23:23 2015 +0900
@@ -9,68 +9,73 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
 
 @Message
-public class NetworkNodePath implements NodePath
-{
-	LinkedList<Integer> path;
-	
-	public NetworkNodePath() {
-		path = new LinkedList<Integer>();
-		path.add(-1);
-	}
-	
-	public NetworkNodePath(NodePath _p) {
-		path = new LinkedList<Integer>();
-		for(Integer pos: _p) {
-			path.add(pos);
-		}
-	}
-	
-	private NetworkNodePath(LinkedList<Integer> _path) {
-		path = _path;
-	}
-	
-	@Override
-	public Iterator<Integer> iterator() {
-		return path.iterator();
-	}
+public class NetworkNodePath implements NodePath {
+  LinkedList<Integer> path;
+
+  public NetworkNodePath() {
+    path = new LinkedList<Integer>();
+    path.add(-1);
+  }
+
+  public NetworkNodePath(NodePath _p) {
+    path = new LinkedList<Integer>();
+    for (Integer pos : _p) {
+      path.add(pos);
+    }
+  }
 
-	@Override
-	public NetworkNodePath add(int _pos) {
-		LinkedList<Integer> newPath = copyPath();
-		newPath.add(_pos);
-		return new NetworkNodePath(newPath);
-	}
+  private NetworkNodePath(LinkedList<Integer> _path) {
+    path = _path;
+  }
+
+  @Override
+  public Iterator<Integer> iterator() {
+    return path.iterator();
+  }
+
+  @Override
+  public NetworkNodePath add(int _pos) {
+    LinkedList<Integer> newPath = copyPath();
+    newPath.add(_pos);
+    return new NetworkNodePath(newPath);
+  }
 
-	@Override
-	public Pair<Integer, NodePath> pop() {
-		LinkedList<Integer> cPath = copyPath();
-		int e = cPath.getFirst();
-		cPath.remove();
-		return new Pair<Integer, NodePath>(e, new NetworkNodePath(cPath));
-	}
+  @Override
+  public Pair<Integer, NodePath> pop() {
+    LinkedList<Integer> cPath = copyPath();
+    int e = cPath.getFirst();
+    cPath.remove();
+    return new Pair<Integer, NodePath>(e, new NetworkNodePath(cPath));
+  }
 
-	@Override
-	public int size() {
-		return path.size();
-	}
+  @Override
+  public int size() {
+    return path.size();
+  }
 
-	private LinkedList<Integer> copyPath() {
-		LinkedList<Integer> newPath = new LinkedList<Integer>();
-		for (Integer i : path) {
-			newPath.add(i);
-		}
-		return newPath;
-	}
-	
-	@Override
-	public String toString() {
-		return path.toString();
-	}
+  private LinkedList<Integer> copyPath() {
+    LinkedList<Integer> newPath = new LinkedList<Integer>();
+    for (Integer i : path) {
+      newPath.add(i);
+    }
+    return newPath;
+  }
+
+  @Override
+  public String toString() {
+    return path.toString();
+  }
 
-	@Override
-	public NodePath tail() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-	
+  @Override
+  public NodePath tail() {
+    path.removeLast();
+    return new NetworkNodePath(path);
+  }
+
+  @Override
+  public Pair<Integer, NodePath> last() {
+    Integer num = path.removeLast();
+    return new Pair<Integer, NodePath>(num, new NetworkNodePath(path));
+  }
+
 }
--- a/src/main/java/alice/jungle/operations/NetworkPutAttributeOperation.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/operations/NetworkPutAttributeOperation.java	Thu Jan 15 09:23:23 2015 +0900
@@ -10,7 +10,6 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.LoggingNode;
 @Message
 public class NetworkPutAttributeOperation  implements NodeOperation
 {
--- a/src/main/java/alice/jungle/persistent/PersistentChangeSet.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/persistent/PersistentChangeSet.java	Thu Jan 15 09:23:23 2015 +0900
@@ -1,77 +1,78 @@
 package alice.jungle.persistent;
 
-import fj.data.List;
 import fj.data.TreeMap;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
+
+public class PersistentChangeSet implements ChangeSet {
+  private final TreeNode root;
+  private final ChangeSet previous;
+  private final ChangeList changeList;
+  private final String uuid;
+  private final long revision;
+  private final String treeName;
+  private final TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> indexList;
+  private final TreeMap<TreeNode, TreeNode> parentIndex;
 
-public class PersistentChangeSet implements ChangeSet 
-{
-	private final TreeNode root;
-	private final ChangeSet previous;
-	private final ChangeList changeList;
-	private final String uuid;
-	private final long revision;
-	private final String treeName;
-	
-	public PersistentChangeSet(TreeNode _node,ChangeSet _prev,ChangeList _log,String _uuid, String _treeName, long _revision)
-	{
-		root = _node;
-		previous = _prev;
-		changeList = _log;
-		uuid = _uuid;
-		revision = _revision;
-		treeName = _treeName;
-	}
-	
-	@Override
-	public TreeNode getRoot()
-	{
-		return root;
-	}
+  public PersistentChangeSet(TreeNode _node, ChangeSet _prev, ChangeList _log, String _uuid, String _treeName,
+      long _revision, TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> indexList,
+      TreeMap<TreeNode, TreeNode> parentIndex) {
+    root = _node;
+    previous = _prev;
+    changeList = _log;
+    uuid = _uuid;
+    revision = _revision;
+    treeName = _treeName;
+    this.indexList = indexList;
+    this.parentIndex = parentIndex;
+  }
 
-	@Override
-	public ChangeSet prev()
-	{
-		return previous;
-	}
+  @Override
+  public TreeNode getRoot() {
+    return root;
+  }
 
-	@Override
-	public ChangeList getChangeList()
-	{
-		return changeList;
-	}
+  @Override
+  public ChangeSet prev() {
+    return previous;
+  }
 
-	@Override
-	public String uuid()
-	{
-		return uuid;
-	}
+  @Override
+  public ChangeList getChangeList() {
+    return changeList;
+  }
+
+  @Override
+  public String uuid() {
+    return uuid;
+  }
 
-	@Override
-	public long revision()
-	{
-		return revision;
-	}
+  @Override
+  public long revision() {
+    return revision;
+  }
+
+  @Override
+  public Iterable<TreeOperation> getOperations() {
+    return changeList;
+  }
 
-	@Override
-	public Iterable<TreeOperation> getOperations()
-	{
-		return changeList;
-	}
-	
-	public String getTreeName() {
-		return treeName;
-	}
+  public String getTreeName() {
+    return treeName;
+  }
 
-	@Override
-	public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+  @Override
+  public Index getIndex() {
+    return new Index(indexList);
+  }
+
+  @Override
+  public ParentIndex getParentIndex() {
+    return new ParentIndex(parentIndex);
+  }
 
 }
--- a/src/main/java/alice/jungle/persistent/PersistentJungle.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/persistent/PersistentJungle.java	Thu Jan 15 09:23:23 2015 +0900
@@ -4,6 +4,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import fj.data.List;
+import fj.data.TreeMap;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
@@ -13,53 +14,56 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
 
 public class PersistentJungle implements Jungle {
-	private PersistentJournal journal;
-	private ConcurrentHashMap<String,JungleTree> trees;
-	final private String uuid;
-	private TreeEditor editor;
+  private PersistentJournal journal;
+  private ConcurrentHashMap<String, JungleTree> trees;
+  final private String uuid;
+  private TreeEditor editor;
 
-	public PersistentJungle(PersistentJournal _journal,String _uuid,TreeEditor _editor)
-	{
-		journal = _journal;
-		trees = new ConcurrentHashMap<String,JungleTree>();
-		uuid = _uuid;
-		editor = _editor;
-	}
+  public PersistentJungle(PersistentJournal _journal, String _uuid, TreeEditor _editor) {
+    journal = _journal;
+    trees = new ConcurrentHashMap<String, JungleTree>();
+    uuid = _uuid;
+    editor = _editor;
+  }
 
-	@Override
-	public JungleTree getTreeByName(String _name)
-	{
-		return trees.get(_name);
-	}
+  @Override
+  public JungleTree getTreeByName(String _name) {
+    return trees.get(_name);
+  }
 
-	@Override
-	public JungleTree createNewTree(final String _name)
-	{
-		ChangeList list = new ChangeList(){
-			@Override
-			public Iterator<TreeOperation> iterator() {
-				List<TreeOperation> nil = List.nil();
-				return nil.iterator();
-			}
-			@Override
-			public String uuid() {
-				return uuid;
-			}
-			@Override
-			public String getTreeName() {
-				return _name;
-			}
-		};
-		TreeNode root = new DefaultTreeNode();
-		ChangeSet set = new PersistentChangeSet(root,null,list,uuid,_name,0);
-		DefaultTreeContext tc = new DefaultTreeContext(root,set);
-		JungleTree newTree = new PersistentJungleTree(_name, tc,uuid, journal.getWriter(),editor);
-		if(trees.putIfAbsent(_name,newTree) != null){
-			return null;
-		}
-		return newTree;
-	}
+  @Override
+  public JungleTree createNewTree(final String name) {
+    ChangeList list = new ChangeList() {
+      @Override
+      public Iterator<TreeOperation> iterator() {
+        List<TreeOperation> nil = List.nil();
+        return nil.iterator();
+      }
+
+      @Override
+      public String uuid() {
+        return uuid;
+      }
+
+      @Override
+      public String getTreeName() {
+        return name;
+      }
+    };
+    TreeNode root = new DefaultTreeNode();
+    TreeMap<String, TreeMap<String, TreeMap<TreeNode, TreeNode>>> indexList = new Index().getIndex();
+    TreeMap<TreeNode, TreeNode> parentIndex = new ParentIndex().getParentIndex();
+    ChangeSet set = new PersistentChangeSet(root, null, list, uuid, name, 0, indexList, parentIndex);
+    DefaultTreeContext tc = new DefaultTreeContext(root, set);
+    JungleTree newTree = new PersistentJungleTree(name, tc, uuid, journal.getWriter(), editor);
+    if (trees.putIfAbsent(name, newTree) != null) {
+      return null;
+    }
+    return newTree;
+  }
 
 }
--- a/src/main/java/alice/jungle/persistent/PersistentJungleTree.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/persistent/PersistentJungleTree.java	Thu Jan 15 09:23:23 2015 +0900
@@ -2,6 +2,7 @@
 
 import fj.data.List;
 import fj.data.TreeMap;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungleTree;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
@@ -11,10 +12,16 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.GetOldTreeError;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
 
 public class PersistentJungleTree implements JungleTree {
 	private final AtomicReservableReference<TreeContext> repository;
@@ -54,24 +61,67 @@
 		return getTreeEditor();
 	}
 
-	@Override
-	public InterfaceTraverser getTraverser() {
-		TreeContext tc = repository.get();
-		ChangeSet cs = tc.getChangeSet();
-		return new InterfaceTraverser(getRootNode(), cs.getIndex(), getTreeEditor());
-	}
+  @Override
+  public long revision() {
+    TreeContext tc = repository.get();
+    ChangeSet cs = tc.getChangeSet();
+    return cs.revision();
+  }
+
+  @Override
+  public Either<Error, JungleTree> getOldTree(long revision) {
+    TreeContext tc = repository.get();
+    ChangeSet cs = tc.getChangeSet();
+
+    for (; cs.revision() != revision;) {
+      cs = cs.prev();
+      if (cs == null)
+        return DefaultEither.newA(GetOldTreeError.OLD_TREE_NOT_FOUND);
+    }
+
+    TreeNode root = cs.getRoot();
+
+    TreeContext oldTc = new DefaultTreeContext(root, cs);
+    String oldTreeUuid = uuid + revision;
+    JungleTree oldTree = new DefaultJungleTree(oldTc, oldTreeUuid, writer, editor);
+    return DefaultEither.newB(oldTree);
+  }
 
-	@Override
-	public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+  @Override
+  public ParentIndex getParentIndex() {
+    TreeContext tc = repository.get();
+    ChangeSet cs = tc.getChangeSet();
+    return cs.getParentIndex();
+  }
+
+  @Override
+  public Index getIndex() {
+    TreeContext tc = repository.get();
+    ChangeSet cs = tc.getChangeSet();
+    return cs.getIndex();
+  }
 
-	@Override
-	public IndexJungleTreeEditor getIndexTreeEditor() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+  @Override
+  public InterfaceTraverser getTraverser(boolean useIndex) {
+    AtomicReservableReference<TreeContext>.Reservation reservation = repository.getReservation();
+    IndexManager indexManager = new IndexManager(reservation);
+    Index index = getIndex();
+    ParentIndex parentIndex = getParentIndex();
+    return new InterfaceTraverser(getRootNode(), index, parentIndex, indexManager, useIndex);
+  }
 
+  @Override
+  public Either<Error, TreeNode> getNodeOfPath(NodePath path) {
+    TreeNode node = repository.get().getTreeNode();
+    for (int num : path) {
+      if (num == -1)
+        continue;
+      Either<Error, TreeNode> either = node.getChildren().at(num);
+      if (either.isA())
+        return either;
+      node = either.b();
+    }
+    return DefaultEither.newB(node);
+  }
 
 }
--- a/src/main/java/alice/jungle/persistent/PersistentTransactionManager.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/persistent/PersistentTransactionManager.java	Thu Jan 15 09:23:23 2015 +0900
@@ -1,11 +1,9 @@
 package alice.jungle.persistent;
 
-import fj.data.List;
-import fj.data.TreeMap;
+
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference;
@@ -13,11 +11,14 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TransactionManager;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference.Reservation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
 
 public class PersistentTransactionManager implements TransactionManager { 
 	private final AtomicReservableReference<TreeContext> repository;
@@ -37,14 +38,18 @@
 	}
 	
 	@Override
-	public Either<Error, TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log,TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index) {
+	public Either<Error, TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log) {
 		ChangeSet cs = tip.getChangeSet();
 		long currentRevision = cs.revision();
 		long nextRevision = currentRevision + 1;
 		
 		PersistentChangeList list = new PersistentChangeList(uuid, treeName, _log);
-		TreeNode root = _newRoot;
-		PersistentChangeSet newCs = new PersistentChangeSet(root, cs, list, uuid, treeName, nextRevision);
+    IndexManager indexManager = new IndexManager(repository.getReservation());
+    InterfaceTraverser traverser = new InterfaceTraverser(_newRoot, indexManager, false);
+    traverser.createIndex();
+    Index index = traverser.getIndex();
+    ParentIndex parentIndex = traverser.getParentIndex();
+		PersistentChangeSet newCs = new PersistentChangeSet(_newRoot, cs, list, uuid, treeName, nextRevision, index.getIndex(), parentIndex.getParentIndex());
 		DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs);
 		
 		@SuppressWarnings("rawtypes")
--- a/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java	Thu Jan 15 09:23:23 2015 +0900
@@ -1,7 +1,7 @@
 package alice.jungle.transaction;
 
-import fj.data.List;
-import fj.data.TreeMap;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungleTree;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
@@ -10,10 +10,16 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.GetOldTreeError;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
 
 public class NetworkDefaultJungleTree implements JungleTree {
 	private final AtomicReservableReference<TreeContext> repository;
@@ -57,24 +63,70 @@
 		return cs.getRoot();
 	}
 
-	@Override
-	public InterfaceTraverser getTraverser() {
-		TreeContext tc = repository.get();
-		ChangeSet cs = tc.getChangeSet();
-		return new InterfaceTraverser(getRootNode(), cs.getIndex(), getTreeEditor());
-	}
+  @Override
+  public long revision() {
+    TreeContext tc = repository.get();
+    ChangeSet cs = tc.getChangeSet();
+    return cs.revision();
+  }
+
+  @Override
+  public Either<Error, JungleTree> getOldTree(long revision) {
+    TreeContext tc = repository.get();
+    ChangeSet cs = tc.getChangeSet();
+
+    for (; cs.revision() != revision;) {
+      cs = cs.prev();
+      if (cs == null)
+        return DefaultEither.newA(GetOldTreeError.OLD_TREE_NOT_FOUND);
+    }
+
+    TreeNode root = cs.getRoot();
+
+    TreeContext oldTc = new DefaultTreeContext(root, cs);
+    String oldTreeUuid = uuid + revision;
+    JungleTree oldTree = new DefaultJungleTree(oldTc, oldTreeUuid, writer, editor);
+    return DefaultEither.newB(oldTree);
+  }
 
-	@Override
-	public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+  @Override
+  public ParentIndex getParentIndex() {
+    TreeContext tc = repository.get();
+    ChangeSet cs = tc.getChangeSet();
+    return cs.getParentIndex();
+  }
+
+  @Override
+  public Index getIndex() {
+    TreeContext tc = repository.get();
+    ChangeSet cs = tc.getChangeSet();
+    return cs.getIndex();
+  }
+  
 
-	@Override
-	public IndexJungleTreeEditor getIndexTreeEditor() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+  @Override
+  public InterfaceTraverser getTraverser(boolean useIndex) {
+    AtomicReservableReference<TreeContext>.Reservation reservation = repository.getReservation();
+    IndexManager indexManager = new IndexManager(reservation);
+    Index index = getIndex();
+    ParentIndex parentIndex = getParentIndex();
+    return new InterfaceTraverser(getRootNode(), index, parentIndex, indexManager, useIndex);
+  }
+  
+
+  @Override
+  public Either<Error, TreeNode> getNodeOfPath(NodePath path) {
+    TreeNode node = repository.get().getTreeNode();
+    for (int num : path) {
+      if (num == -1)
+        continue;
+      Either<Error, TreeNode> either = node.getChildren().at(num);
+      if (either.isA())
+        return either;
+      node = either.b();
+    }
+    return DefaultEither.newB(node);
+  }
 
 
 }
--- a/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java	Thu Jan 15 09:23:23 2015 +0900
@@ -133,7 +133,7 @@
 	@Override
 	public Either<Error,JungleTreeEditor> success()
 	{
-		Either<Error,TransactionManager> either = txManager.commit(root,log,null);
+		Either<Error,TransactionManager> either = txManager.commit(root,log);
 		if(either.isA()){
 			return DefaultEither.newA(either.a());
 		}
@@ -151,24 +151,16 @@
 		return DefaultEither.newB(newTreeEditor);
 	}
 
-	@Override
-	public String getID()
+	private String getID()
 	{
 		return txManager.getUUID();
 	}
 
-	@Override
-	public String getRevision()
+	private String getRevision()
 	{
 		return Long.toString(txManager.getRevision());
 	}
 
-	@Override
-	public TreeNode getRoot()
-	{
-		return root;
-	}
-	
 	public String getTreeName() {
 		return treeName;
 	}
--- a/src/main/java/alice/jungle/transaction/NetworkTransactionManager.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/alice/jungle/transaction/NetworkTransactionManager.java	Thu Jan 15 09:23:23 2015 +0900
@@ -2,13 +2,10 @@
 
 import java.util.Iterator;
 
-import fj.data.List;
-import fj.data.TreeMap;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
@@ -18,80 +15,87 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TransactionManager;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager;
+import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
+
+public class NetworkTransactionManager implements TransactionManager {
+
+  private final AtomicReservableReference<TreeContext> repository;
+  private final TreeContext tip;
+  private final ChangeListWriter writer;
+  private final String uuid;
+  private final String treeName;
 
-public class NetworkTransactionManager implements TransactionManager
-{
+  public NetworkTransactionManager(String _treeName, ChangeListWriter _writer, TreeContext _tip,
+      AtomicReservableReference<TreeContext> _repository, String _uuid) {
+    repository = _repository;
+    tip = _tip;
+    writer = _writer;
+    uuid = _uuid;
+    treeName = _treeName;
+  }
+
+  @Override
+  public Either<Error, TransactionManager> commit(TreeNode _newRoot, final TreeOperationLog _log) {
+    ChangeSet cs = tip.getChangeSet();
+    long currentRevision = cs.revision();
+    long nextRevision = currentRevision + 1;
+
+    ChangeList list = new ChangeList() {
+      @Override
+      public Iterator<TreeOperation> iterator() {
+        return _log.iterator();
+      }
+
+      @Override
+      public String uuid() {
+        return uuid;
+      }
 
-	private final AtomicReservableReference<TreeContext> repository;
-	private final TreeContext tip;
-	private final ChangeListWriter writer;
-	private final String uuid;	
-	private final String treeName;	
-	
-	public NetworkTransactionManager(String _treeName, ChangeListWriter _writer,TreeContext _tip,
-			AtomicReservableReference<TreeContext> _repository,String _uuid)
-	{
-		repository = _repository;
-		tip = _tip;
-		writer = _writer;
-		uuid = _uuid;
-		treeName = _treeName;
-	}
-	
-	@Override
-	public Either<Error, TransactionManager> commit(TreeNode _newRoot,final TreeOperationLog _log,TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index) {
-		ChangeSet cs = tip.getChangeSet();
-		long currentRevision = cs.revision();
-		long nextRevision = currentRevision + 1;
-		
-		ChangeList list = new ChangeList() {
-			@Override
-			public Iterator<TreeOperation> iterator(){
-				return _log.iterator();
-			}
-			@Override
-			public String uuid() {
-				return uuid;
-			}
-			@Override
-			public String getTreeName() {
-				return treeName;
-			}
-		};
-		
-		TreeNode root = _newRoot;
-		DefaultChangeSet newCs = new DefaultChangeSet(root, cs, list, uuid, treeName, nextRevision, null);
-		DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs);
-		
-		@SuppressWarnings("rawtypes")
-		Reservation reservation = repository.makeReservation(tip, newContext);
-		if(reservation == null) {
-			return DefaultEither.newA((Error)new DefaultError());
-		}
-		Result r = writer.write(list);
-		if(r != Result.SUCCESS) {
-			return DefaultEither.newA((Error)new DefaultError());
-		}
-		reservation.confirm();
-		TransactionManager txManager = new NetworkTransactionManager(treeName, writer, newContext, repository, uuid);
-		return DefaultEither.newB(txManager);
-	}
+      @Override
+      public String getTreeName() {
+        return treeName;
+      }
+    };
+
+    IndexManager indexManager = new IndexManager(repository.getReservation());
+    InterfaceTraverser traverser = new InterfaceTraverser(_newRoot, indexManager, true);
+    traverser.createIndex();
+    Index index = traverser.getIndex();
+    ParentIndex parentIndex = traverser.getParentIndex();
+    DefaultChangeSet newCs = new DefaultChangeSet(_newRoot, cs, list, uuid, treeName, nextRevision, index.getIndex(), parentIndex.getParentIndex());
+
+    DefaultTreeContext newContext = new DefaultTreeContext(_newRoot, newCs);
 
-	@Override
-	public long getRevision() 
-	{
-		ChangeSet cs = tip.getChangeSet();
-		return cs.revision();
-	}
+    @SuppressWarnings("rawtypes")
+    Reservation reservation = repository.makeReservation(tip, newContext);
+    if (reservation == null) {
+      return DefaultEither.newA((Error) new DefaultError());
+    }
+    Result r = writer.write(list);
+    if (r != Result.SUCCESS) {
+      return DefaultEither.newA((Error) new DefaultError());
+    }
+    reservation.confirm();
+    TransactionManager txManager = new NetworkTransactionManager(treeName, writer, newContext, repository, uuid);
+    return DefaultEither.newB(txManager);
+  }
 
-	@Override
-	public String getUUID() {
-		return uuid;
-	}
+  @Override
+  public long getRevision() {
+    ChangeSet cs = tip.getChangeSet();
+    return cs.revision();
+  }
+
+  @Override
+  public String getUUID() {
+    return uuid;
+  }
 
 }
--- a/src/main/java/app/bbs/DistributeApp.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/app/bbs/DistributeApp.java	Thu Jan 15 09:23:23 2015 +0900
@@ -1,5 +1,6 @@
 package app.bbs;
 
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.TreeMapOrd;
 import alice.jungle.remote.RemoteConfig;
 import alice.topology.node.TopologyNode;
 import app.bbs.codesegment.StartBBSCodeSegment;
@@ -8,6 +9,7 @@
     public static void main(String[] args) throws Exception {
         RemoteConfig conf = new RemoteConfig(args);
         if (conf.getManagerHostName() == null) {
+          System.out.println(System.getProperty("java.version"));
             // String localHostName ="localhost";
             // HostMessage host = new HostMessage(localHostName, conf.localPort);
             StartBBSCodeSegment cs1 = new StartBBSCodeSegment(args, conf.bbsPort);
--- a/src/main/java/app/bbs/NetworkBulletinBoard.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/app/bbs/NetworkBulletinBoard.java	Thu Jan 15 09:23:23 2015 +0900
@@ -1,7 +1,6 @@
 package app.bbs;
 
 
-import app.bbs.thinks.getAttributeImp;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard;
 
@@ -13,11 +12,8 @@
 	public Iterable<BoardMessage> getFolder(String _boardName, String nodeNum);
 	public void createFolder(String boardName, String author, String msg,String key, String _nodeNum);
 	public void createAttribute(String boardName, String uuid, String author, String msg, String key);
-	public getAttributeImp getAttribute(String _bname, String nodeNum);
 	public void editAttribute(String boardName, String path, String id, String message);
 	public void deleteAttribute(String _board, String _path , String id);
 	public void deleteNode(String _board, String _path, String id);
-	public void editMatrixMessage(String boardName, String path, String author,
-			String msg, String key);
-	public String searchJungle(String requestName, String permmitName);
+
 }
--- a/src/main/java/app/bbs/NetworkJungleBulletinBoard.java	Fri Oct 17 15:16:56 2014 +0900
+++ b/src/main/java/app/bbs/NetworkJungleBulletinBoard.java	Thu Jan 15 09:23:23 2015 +0900
@@ -3,17 +3,12 @@
 import java.io.File;
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.Iterator;
 import java.util.concurrent.atomic.AtomicInteger;
-
-import fj.data.List;
-import fj.data.TreeMap;
 import alice.jungle.core.NetworkDefaultJungle;
 import alice.jungle.persistent.AliceJournal;
 import alice.jungle.persistent.NetworkJournal;
 import alice.jungle.persistent.PersistentJournal;
 import alice.jungle.transaction.JungleUpdater;
-import app.bbs.thinks.getAttributeImp;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
@@ -21,25 +16,20 @@
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode;
 import junit.framework.Assert;
 
 public class NetworkJungleBulletinBoard implements NetworkBulletinBoard {
@@ -207,12 +197,6 @@
 			public LoggingNode wrap(TreeNode node, OperationLog op) {
 				return new LoggingNode(node, op);
 			}
-			@Override
-			public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-				// TODO Auto-generated method stub
-				return null;
-			}
-
 		};
 
 		either = editor.edit(root.add(0), e);
@@ -280,12 +264,6 @@
 					return new LoggingNode(node, op);
 				}
 
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
 			};
 			path = path.add(size);
 			either = editor.edit(path, e);
@@ -336,13 +314,6 @@
 				public LoggingNode wrap(TreeNode node, OperationLog op) {
 					return new LoggingNode(node, op);
 				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
 			};
 			path = path.add(size);
 			either = editor.edit(path, e);
@@ -389,13 +360,6 @@
 				public LoggingNode wrap(TreeNode node, OperationLog op) {
 					return new LoggingNode(node, op);
 				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -445,13 +409,6 @@
 				public LoggingNode wrap(TreeNode node, OperationLog op) {
 					return new LoggingNode(node, op);
 				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -494,13 +451,6 @@
 				public LoggingNode wrap(TreeNode node, OperationLog op) {
 					return new LoggingNode(node, op);
 				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -584,13 +534,6 @@
 				public LoggingNode wrap(TreeNode node, OperationLog op) {
 					return new LoggingNode(node, op);
 				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -628,12 +571,6 @@
 				public LoggingNode wrap(TreeNode node, OperationLog op) {
 					return new LoggingNode(node, op);
 				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
 			};
 			either = editor.edit(path, e);
 			if (either.isA()) {
@@ -704,36 +641,6 @@
 		return new IterableConverter<BoardMessage, TreeNode>(chs, converter);
 	}
 
-	public getAttributeImp getAttribute(String _boardName, String _nodeNum) {
-
-		DefaultNodePath path = new DefaultNodePath();
-		try {
-			for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
-				if (!_nodeNum.substring(count, count + 1).equals("/"))
-					path = path.add(Integer.parseInt(_nodeNum.substring(count,
-							count + 1)));
-			}
-		} catch (Exception _e) {
-		}
-		requestCounter.incrementAndGet();
-		JungleTree tree = jungle.getTreeByName(_boardName);
-		TreeNode node = tree.getRootNode();
-
-		DefaultTraverser traverser = new DefaultTraverser();
-		// TraversableNodeWrapper<Node> traversable = new
-		// TraversableNodeWrapper<Node>(node);
-		DefaultEvaluator evaluator = new DefaultEvaluator(path);
-		Either<Error, Traversal> ret = traverser.traverse(node,
-				evaluator);
-		if (ret.isA()) {
-			Assert.fail();
-		}
-
-		Traversal traversal = ret.b();
-		TreeNode target = traversal.destination();
-		return new getAttributeImp(target);
-	}
-
 
 	
 	public boolean compare(TreeNode compareNode, String compareAttribute) {
@@ -791,11 +698,4 @@
 		str = str.replaceAll("'", "&#39;");
 		return str;
 	}
-
-	@Override
-	public String searchJungle(String requestName, String permmitName) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
 }
--- a/src/main/java/app/bbs/codesegment/StartmaTrixBBSCodeSegment.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,145 +0,0 @@
-package app.bbs.codesegment;
-
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-
-import javax.servlet.Servlet;
-
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.thread.ThreadPool;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.CreateBoardMessageServlet;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.CreateBoardServlet;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.EditMessageServlet;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.EditMessageUseGetServlet;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.ShowBoardsServlet;
-
-
-
-import alice.codesegment.CodeSegment;
-import alice.datasegment.CommandType;
-import alice.datasegment.Receiver;
-import app.bbs.NetworkBulletinBoard;
-import app.bbs.NetworkJungleBulletinBoard;
-import app.bbs.RequestNumCheckServlet;
-import app.bbs.ShowMessageWithTimeStampServlet;
-import app.bbs.thinks.CreateNode;
-import app.bbs.thinks.EditAttributeServlet;
-import app.bbs.thinks.EditNodeName;
-import app.bbs.thinks.NetworkMatrixJungleBulletinBoard;
-import app.bbs.thinks.ShowBoardsServletMatrix;
-import app.bbs.thinks.ShowMatrix;
-import app.bbs.thinks.ShowMessageWithTimeStampServletMatrix;
-import app.bbs.thinks.createAttributeMatrix;
-import app.bbs.thinks.deleteAttributeServlet;
-import app.bbs.thinks.deleteNodeServlet;
-import app.bbs.thinks.permission;
-
-public class StartmaTrixBBSCodeSegment extends CodeSegment {
-
-    int bbsPort = 8080;
-    Receiver host = ids.create(CommandType.PEEK);
-    private Pattern pattern = Pattern.compile("^(node|cli)([0-9]+)$");
-    private String[] args;
-    boolean persistentFlag = false;
-
-    public StartmaTrixBBSCodeSegment(String[] _args, int p) {
-        args = _args;
-        bbsPort = p;
-        host.setKey("host");	
-    }
-
-    public StartmaTrixBBSCodeSegment() {
-        args = null;
-        host.setKey("host");	
-    }
-
-    @Override
-    public void run() {
-        String name = host.asString();
-        Matcher matcher = pattern.matcher(name);
-        matcher.find();
-        //		String type = matcher.group(1);
-        for(String arg: args) {
-            if(arg.equals("-persistent")){
-                persistentFlag = true;
-            }
-        }
-        NetworkBulletinBoard cassaBBS = null;
-        if(persistentFlag) {
-            System.out.println("log loading...");
-            cassaBBS = NetworkMatrixJungleBulletinBoard.NewPersistentJungle(name);
-            cassaBBS.init();
-        } else {
-            cassaBBS = new NetworkJungleBulletinBoard(name);
-            cassaBBS.init();
-        }
-
-        System.out.println("StartBBSCodeSegment");
-        System.out.println("name : "+ name);
-        /* Jetty registration */
-        String createBoardMessagePath = "/createBoardMessage";
-        String createFolderPath = "/createFolder";
-        String createBoardPath = "/createBoard";
-        String editMessagePath = "/editMessage";
-        String showBoardMessagePath = "/showBoardMessage";
-        String showMatrixPath = "/showMatrix";
-        String createAttributePath = "/createAttribute";
-        String editAttributePath = "/editAttribute";
-        String deleteAttributePath = "/deleteAttribute";
-        String deleteNodePath = "/deleteNode";
-        String editNodePath = "/editNode";
-        String permissionPath = "/permission";
-        Server serv = new Server(bbsPort);
-        ThreadPool thp = serv.getThreadPool();
-        Servlet createBoardMessage = new CreateBoardMessageServlet(cassaBBS);
-        Servlet createFolder = new CreateNode(cassaBBS);
-        Servlet createBoard = new CreateBoardServlet(cassaBBS);
-        Servlet editNode = new EditNodeName(cassaBBS);
-        Servlet createAttribute = new createAttributeMatrix(cassaBBS);
-        Servlet editAttribute = new EditAttributeServlet(cassaBBS);
-        Servlet deleteAttribute = new deleteAttributeServlet(cassaBBS);
-        Servlet deleteNode = new deleteNodeServlet(cassaBBS);
-        Servlet editBoardMessage = new EditMessageServlet(cassaBBS);
-        Servlet index = new ShowBoardsServletMatrix(cassaBBS,createBoardPath,showMatrixPath);
-        //    	Servlet board = new ShowBoardMessageServlet(cassaBBS,createBoardMessagePath,editMessagePath);
-        Servlet board = new ShowMessageWithTimeStampServletMatrix(cassaBBS,createBoardMessagePath,editMessagePath,showMatrixPath, thp);
-        Servlet matrix = new ShowMatrix(cassaBBS,createFolderPath,editNodePath, showMatrixPath, createAttributePath, editAttributePath,deleteAttributePath,deleteNodePath,thp);
-        Servlet per = new permission(cassaBBS,permissionPath,thp);
-        ServletHandler context = new ServletHandler();
-        context.addServletWithMapping(new ServletHolder(editBoardMessage),editMessagePath);
-        
-        context.addServletWithMapping(new ServletHolder(createBoardMessage),createBoardMessagePath);
-        context.addServletWithMapping(new ServletHolder(createFolder),createFolderPath);
-        context.addServletWithMapping(new ServletHolder(createBoard),createBoardPath);
-        context.addServletWithMapping(new ServletHolder(editNode),editNodePath);
-        context.addServletWithMapping(new ServletHolder(createAttribute),createAttributePath);
-        context.addServletWithMapping(new ServletHolder(index),"/");
-        context.addServletWithMapping(new ServletHolder(deleteAttribute),deleteAttributePath);
-        context.addServletWithMapping(new ServletHolder(deleteNode),deleteNodePath);
-        context.addServletWithMapping(new ServletHolder(editAttribute),editAttributePath);
-        context.addServletWithMapping(new ServletHolder(board),showBoardMessagePath);
-        context.addServletWithMapping(new ServletHolder(matrix),showMatrixPath);
-        context.addServletWithMapping(new ServletHolder(per),permissionPath);
-        /* 
-         * For write benchmark 
-         */
-        String editMessageUseGetPath = "/editMessageUseGet";
-        Servlet editMessageUseGet = new EditMessageUseGetServlet(cassaBBS);
-        context.addServletWithMapping(new ServletHolder(editMessageUseGet), editMessageUseGetPath);
-        String requestNumCheckPath = "/requestNum";
-        Servlet requestNumCheckServlet = new RequestNumCheckServlet(cassaBBS);
-        context.addServletWithMapping(new ServletHolder(requestNumCheckServlet), requestNumCheckPath);
-
-        serv.setHandler(context);
-        try {
-            serv.start();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        new LogUpdateCodeSegment();
-    }
-
-}
--- a/src/main/java/app/bbs/thinks/CreateNode.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-
-import app.bbs.NetworkBulletinBoard;
-
-public class CreateNode extends HttpServlet {
-	private final NetworkBulletinBoard bbs;
-	private static final String PARAM_BOARD_NAME = "bname";
-	private static final String PARAM_BOARD_AUTHOR = "author";
-	private static final String PARAM_NODE_NAME = "name";
-	private static final String PARAM_BOARD_EDITKEY = "key";
-	private static final String PARAM_BOARD_PATH = "path";
-	private static final long serialVersionUID = 1L;
-
-	public CreateNode(NetworkBulletinBoard _bbs) {
-		bbs = _bbs;
-	}
-
-	public void doPost(HttpServletRequest _req, HttpServletResponse _res) {
-		String boardName = (_req.getParameter(PARAM_BOARD_NAME));
-		String author = (_req.getParameter(PARAM_BOARD_AUTHOR));//not use
-		String nodeName = (_req.getParameter(PARAM_NODE_NAME));
-		String key = (_req.getParameter(PARAM_BOARD_EDITKEY));//not use
-		String nodeNum = (_req.getParameter(PARAM_BOARD_PATH));
-
-		try {
-			bbs.createFolder(boardName, author, nodeName, key, nodeNum);
-			PrintWriter pw = _res.getWriter();
-			pw.write("successfully written");
-		} catch (Exception _e) {
-			_res.setStatus(500);
-		}
-	}
-}
--- a/src/main/java/app/bbs/thinks/EditAttributeServlet.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-
-import app.bbs.NetworkBulletinBoard;
-
-public class EditAttributeServlet extends HttpServlet
-{
-	private final NetworkBulletinBoard bbs;
-	private static final String PARAM_BOARD_NAME = "bname";
-	private static final String PARAM_NODE_PATH = "path";
-	private static final String PARAM_BOARD_MESSAGE= "msg";
-	//private static final String PARAM_BOARD_EDITKEY = "key";
-	private static final String PARAM_NODE_ID = "id";
-	private static final long serialVersionUID = 1L;
-	
-	public EditAttributeServlet(NetworkBulletinBoard _bbs)
-	{
-		bbs = _bbs;
-	}
-	
-	public void doGet(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String bname = (_req.getParameter(PARAM_BOARD_NAME));
-		String path = (_req.getParameter(PARAM_NODE_PATH));
-		String id = (_req.getParameter(PARAM_NODE_ID));
-		
-		
-		try{
-			_res.setCharacterEncoding("UTF-8");
-			PrintWriter pw = _res.getWriter();
-			pw.write("<html><body><h1>edit message</h1>");
-			pw.write("<form method='POST'\n");
-			pw.write("<p><input type='hidden' name='path' value='"+path+"'/>" +
-					"<input type='hidden' name='id' value='"+id+"'/>" +
-					"<input type='hidden' name='bname' value='"+bname+"'</p>\n");
-			pw.write("<p>Message<br/> <input type='textarea' name='msg'/> </p>\n");
-			pw.write("<p><input type='submit' value='submit'/></p>\n");
-			pw.write("</body></html>");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-
-	public void doPost(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String boardName = (_req.getParameter(PARAM_BOARD_NAME));
-		String msg = (_req.getParameter(PARAM_BOARD_MESSAGE));
-		String path = (_req.getParameter(PARAM_NODE_PATH));
-		String id = (_req.getParameter(PARAM_NODE_ID));
-		
-		try{
-			bbs.editAttribute(boardName, path,id, msg);
-			PrintWriter pw = _res.getWriter();
-			pw.write("successfully written");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-}
--- a/src/main/java/app/bbs/thinks/EditNodeName.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang.StringEscapeUtils;
-
-import app.bbs.NetworkBulletinBoard;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard;
-
-public class EditNodeName extends HttpServlet
-{
-	private final NetworkBulletinBoard bbs;
-	private static final String PARAM_BOARD_NAME = "bname";
-	private static final String PARAM_NODE_PATH = "path";
-	private static final String PARAM_BOARD_AUTHOR = "author";
-	private static final String PARAM_BOARD_MESSAGE= "msg";
-	private static final String PARAM_BOARD_EDITKEY = "key";
-	
-	private static final long serialVersionUID = 1L;
-	
-	public EditNodeName(NetworkBulletinBoard _bbs)
-	{
-		bbs = _bbs;
-	}
-	
-	public void doGet(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String bname = (_req.getParameter(PARAM_BOARD_NAME));
-		String path = (_req.getParameter(PARAM_NODE_PATH));
-		
-		
-		try{
-			_res.setCharacterEncoding("UTF-8");
-			PrintWriter pw = _res.getWriter();
-			pw.write("<html><body><h1>edit message</h1>");
-			pw.write("<form method='POST'\n");
-			pw.write("<p><input type='hidden' name='author'/>" +
-					"<input type='hidden' name='key' value='"+path+"'/>" +
-					"<input type='hidden' name='bname' value='"+bname+"'</p>\n");
-			pw.write("<p>Message<br/> <input type='textarea' name='msg'/> </p>\n");
-			pw.write("<p><input type='submit' value='submit'/></p>\n");
-			pw.write("</body></html>");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-
-	public void doPost(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String boardName = (_req.getParameter(PARAM_BOARD_NAME));
-		String author = (_req.getParameter(PARAM_BOARD_AUTHOR));
-		String msg = (_req.getParameter(PARAM_BOARD_MESSAGE));
-		String key = (_req.getParameter(PARAM_BOARD_EDITKEY));
-		String path = (_req.getParameter(PARAM_NODE_PATH));
-		
-		try{
-			bbs.editMessage(boardName, path, author, msg, key);
-			PrintWriter pw = _res.getWriter();
-			pw.write("successfully written");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-}
--- a/src/main/java/app/bbs/thinks/MatrixApp.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-package app.bbs.thinks;
-
-import alice.jungle.remote.RemoteConfig;
-import alice.topology.node.TopologyNode;
-import app.bbs.codesegment.StartBBSCodeSegment;
-import app.bbs.codesegment.StartmaTrixBBSCodeSegment;
-
-public class MatrixApp {
-    public static void main(String[] args) throws Exception {
-        RemoteConfig conf = new RemoteConfig(args);
-        if (conf.getManagerHostName() == null) {
-            // String localHostName ="localhost";
-            // HostMessage host = new HostMessage(localHostName, conf.localPort);
-            StartmaTrixBBSCodeSegment cs1 = new StartmaTrixBBSCodeSegment(args, conf.bbsPort);
-            cs1.ods.put("host", "node0");
-        } else {
-            new TopologyNode(conf, new StartBBSCodeSegment(args, conf.bbsPort));
-        }
-    }
-}
--- a/src/main/java/app/bbs/thinks/NetworkMatrixJungleBulletinBoard.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,848 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Iterator;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import fj.data.List;
-import fj.data.TreeMap;
-import alice.jungle.core.NetworkDefaultJungle;
-import alice.jungle.persistent.AliceJournal;
-import alice.jungle.persistent.NetworkJournal;
-import alice.jungle.persistent.PersistentJournal;
-import alice.jungle.transaction.JungleUpdater;
-import app.bbs.BulletinBoardJungleManager;
-import app.bbs.NetworkBulletinBoard;
-import app.bbs.thinks.getAttributeImp;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode;
-import junit.framework.Assert;
-
-public class NetworkMatrixJungleBulletinBoard implements NetworkBulletinBoard {
-	private final Jungle jungle;
-	private final NetworkJournal journal;
-	private final String LOG_DIR;
-	private Boolean persistentFlag;
-	private AtomicInteger requestCounter;
-	private long renewTime;
-
-	private NetworkMatrixJungleBulletinBoard(String _uuid, NetworkJournal _journal) {
-		journal = _journal;
-		jungle = new NetworkDefaultJungle(journal, _uuid,
-				new DefaultTreeEditor(new DefaultTraverser()));
-		BulletinBoardJungleManager.setJungle(jungle);
-		persistentFlag = false;
-		requestCounter = BulletinBoardJungleManager.getRequestCounter();
-		LOG_DIR = "./log";
-		renewTime = 0;
-	}
-
-	public NetworkMatrixJungleBulletinBoard(String _uuid) {
-		this(_uuid, new AliceJournal());
-		jungle.createNewTree("boards");
-	}
-
-	public static NetworkBulletinBoard NewPersistentJungle(String _uuid) {
-		NetworkMatrixJungleBulletinBoard board = new NetworkMatrixJungleBulletinBoard(
-				_uuid, new PersistentJournal());
-		board.persistentFlag = true;
-		return board;
-	}
-
-	public void init() {
-		if (!persistentFlag) {
-			return;
-		}
-		checkAndCreateLogDirectory();
-		try {
-			commitLogRecover();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void checkAndCreateLogDirectory() {
-		File logFile = new File(LOG_DIR);
-		if (!logFile.exists()) {
-			logFile.mkdir();
-			return;
-		}
-		if (logFile.isFile()) {
-			logFile.delete();
-			logFile.mkdir();
-		}
-	}
-
-	public void commitLogRecover() throws IOException {
-		File[] logFiles = new File(LOG_DIR).listFiles();
-		for (File logFile : logFiles) {
-			commitLogRecover(logFile);
-			logFile.delete();
-		}
-		if (jungle.getTreeByName("boards") == null) {
-			jungle.createNewTree("boards");
-		}
-	}
-
-	private void commitLogRecover(File logFile) throws IOException {
-		journal.setInputFile(logFile);
-		ChangeListReader reader = journal.getReader();
-		if (reader == null)
-			return;
-		for (ChangeList chList : reader) {
-			String treeName = chList.getTreeName();
-			JungleTree tree = jungle.getTreeByName(treeName);
-			if (tree == null) {
-				tree = jungle.createNewTree(treeName);
-			}
-			JungleTreeEditor editor = tree.getLocalTreeEditor();
-			Either<Error, JungleTreeEditor> either = JungleUpdater.edit(editor,
-					chList);
-			editor = either.b();
-			if (either.isA()) {
-				throw new IOException("Failed commit log recovery");
-			}
-			editor.success();
-		}
-	}
-
-	public Iterable<String> getBoards() {
-		JungleTree tree = jungle.getTreeByName("boards");
-		TreeNode node = tree.getRootNode();
-		Children chs = node.getChildren();
-
-		IterableConverter.Converter<String, TreeNode> converter = new IterableConverter.Converter<String, TreeNode>() {
-			public String conv(TreeNode _b) {
-				ByteBuffer e = _b.getAttributes().get("name");
-				System.out.println(new String(e.array()));
-				return new String(e.array());
-			}
-		};
-
-		return new IterableConverter<String, TreeNode>(chs, converter);
-	}
-
-	public long getRenewTime(String _boardName) {
-		return renewTime;
-	}
-
-	public void createBoards(final String _name, final String _author, final String _initMessage, final String _editKey) {
-		requestCounter.incrementAndGet();
-		if (null == jungle.createNewTree(_name)) {
-			throw new IllegalStateException();
-		}
-
-		JungleTree tree = jungle.getTreeByName("boards");
-		JungleTreeEditor editor = tree.getTreeEditor();
-		DefaultNodePath root = new DefaultNodePath();
-		Either<Error, JungleTreeEditor> either = editor.addNewChildAt(root, 0);
-		if (either.isA()) {
-			throw new IllegalStateException();
-		}
-		editor = either.b();
-
-		either = editor.putAttribute(root.add(0), "name",
-				ByteBuffer.wrap(_name.getBytes()));
-		if (either.isA()) {
-			throw new IllegalStateException();
-		}
-		editor = either.b();
-		final long timestamp = System.currentTimeMillis();
-		ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-		either = editor.putAttribute(root.add(0), "timestamp", tBuffer);
-		if (either.isA()) {
-			throw new IllegalStateException();
-		}
-		either = either.b().success();
-		if (either.isA()) {
-			throw new IllegalStateException();
-		}
-
-		tree = jungle.getTreeByName(_name);
-		editor = tree.getTreeEditor();
-		either = editor.addNewChildAt(root, 0);
-		if (either.isA()) {
-			throw new IllegalStateException();
-		}
-		editor = either.b();
-
-		NodeEditor e = new NodeEditor() {
-			ByteBuffer tBuffer2 = ByteBuffer.allocate(16);
-
-			public Either<Error,LoggingNode> edit(TreeNode node) {
-				LoggingNode logNode = wrap(node , new DefaultOperationLog());
-				logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
-				logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_initMessage.getBytes())).b();
-				logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
-				tBuffer2.putLong(timestamp);
-				logNode = logNode.getAttributes().put("timestamp", tBuffer2).b();
-				return DefaultEither.newB(logNode);
-			}
-			@Override
-			public LoggingNode wrap(TreeNode node, OperationLog op) {
-				return new LoggingNode(node, op);
-			}
-			@Override
-			public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-				// TODO Auto-generated method stub
-				return null;
-			}
-
-		};
-
-		either = editor.edit(root.add(0), e);
-		if (either.isA()) {
-			throw new IllegalStateException();
-		}
-		either.b().success();
-
-	}
-
-	public void createFolder(final String _board, final String _author, final String _message, final String _editKey, String _nodeNum) {
-		JungleTree tree = jungle.getTreeByName(_board);
-		if (tree == null) {
-			throw new IllegalStateException();
-		}
-
-		DefaultNodePath path = new DefaultNodePath();
-		try {
-			for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
-				if (!_nodeNum.substring(count, count + 1).equals("/"))
-					path = path.add(Integer.parseInt(_nodeNum.substring(count,
-							count + 1)));
-			}
-		} catch (Exception _e) {
-		}
-		requestCounter.incrementAndGet();
-		Either<Error, JungleTreeEditor> either;
-		final long timestamp = System.currentTimeMillis();
-		final ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-
-		do {
-			TreeNode node = tree.getRootNode();
-			DefaultTraverser traverser = new DefaultTraverser();
-			// TraversableNodeWrapper<Node> traversable = new
-			// TraversableNodeWrapper<Node>(node);
-			DefaultEvaluator evaluator = new DefaultEvaluator(path);
-			Either<Error, Traversal> ret = traverser.traverse(node,
-					evaluator);
-			if (ret.isA()) {
-				Assert.fail();
-			}
-
-			Traversal traversal = ret.b();
-			TreeNode target = traversal.destination();
-			int size = target.getChildren().size();
-			JungleTreeEditor editor = tree.getTreeEditor();
-			either = editor.addNewChildAt(path, size);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-
-			NodeEditor e = new NodeEditor() {
-
-				public Either<Error,LoggingNode> edit(TreeNode node) {
-					LoggingNode logNode = wrap(node , new DefaultOperationLog());
-					logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
-					logNode = logNode.getAttributes().put("timestamp", tBuffer).b();
-					return DefaultEither.newB(logNode);
-				}
-
-				@Override
-				public LoggingNode wrap(TreeNode node, OperationLog op) {
-					return new LoggingNode(node, op);
-				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
-			};
-			path = path.add(size);
-			either = editor.edit(path, e);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-			either = editor.success();
-		} while (either.isA());
-
-	}
-
-	public void createBoardMessage(final String _board, final String _author, final String _message, final String _editKey) {
-		requestCounter.incrementAndGet();
-		JungleTree tree = jungle.getTreeByName(_board);
-		if (tree == null) {
-			throw new IllegalStateException();
-		}
-
-		Either<Error, JungleTreeEditor> either;
-		final long timestamp = System.currentTimeMillis();
-		final ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-		do {
-
-			TreeNode node = tree.getRootNode();
-			int size = node.getChildren().size();
-			DefaultNodePath path = new DefaultNodePath();
-
-			JungleTreeEditor editor = tree.getTreeEditor();
-			either = editor.addNewChildAt(path, size);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-
-			NodeEditor e = new NodeEditor() {
-				public Either<Error,LoggingNode> edit(TreeNode node) {
-					LoggingNode logNode = wrap(node , new DefaultOperationLog());
-					logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
-					logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
-					logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
-					logNode = logNode.getAttributes().put("timestamp", tBuffer).b();
-					return DefaultEither.newB(logNode);
-				}
-
-				@Override
-				public LoggingNode wrap(TreeNode node, OperationLog op) {
-					return new LoggingNode(node, op);
-				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
-			};
-			path = path.add(size);
-			either = editor.edit(path, e);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-			either = editor.success();
-		} while (either.isA());
-
-	}
-
-	public void editMessage(String _board, String _nodeNum,final String _author, final String _message, final String _editKey) {
-		requestCounter.incrementAndGet();
-		final long timestamp = System.currentTimeMillis();
-		final ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-		JungleTree tree = jungle.getTreeByName(_board);
-		Either<Error, JungleTreeEditor> either = null;
-
-		do {
-			DefaultNodePath path = new DefaultNodePath();
-			try {
-				for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
-					if (!_nodeNum.substring(count, count + 1).equals("/"))
-						path = path.add(Integer.parseInt(_nodeNum.substring(count, count + 1)));
-				}
-			} catch (Exception _e) {
-			}
-			JungleTreeEditor editor = tree.getTreeEditor();
-			NodeEditor e = new NodeEditor() {
-				public Either<Error,LoggingNode> edit(TreeNode node) {
-					LoggingNode logNode = wrap(node , new DefaultOperationLog());
-					System.out.println(new String(node.getAttributes().get("mes").array()));
-					logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
-					logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
-					logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
-					logNode = logNode.getAttributes().put("timestamp", tBuffer).b();
-					System.out.println(new String(node.getAttributes().get("mes").array()));
-					return DefaultEither.newB(logNode);
-				}
-
-				@Override
-				public LoggingNode wrap(TreeNode node, OperationLog op) {
-					return new LoggingNode(node, op);
-				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
-			};
-			either = editor.edit(path, e);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-			either = editor.success();
-		} while (either.isA());
-		renewTime = timestamp;
-	}
-
-	public void createAttribute(String _board, String _uuid, final String _author, final String _message, final String _editKey) {
-		requestCounter.incrementAndGet();
-		final long timestamp = System.currentTimeMillis();
-		final ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-		JungleTree tree = jungle.getTreeByName(_board);
-		Either<Error, JungleTreeEditor> either = null;
-		DefaultNodePath path = new DefaultNodePath();
-		do {
-			try {
-				for (int count = 0; _uuid.substring(count, count + 1) != null; count++) {
-					if (!_uuid.substring(count, count + 1).equals("/"))
-						path = path.add(Integer.parseInt(_uuid.substring(count,
-								count + 1)));
-				}
-			} catch (Exception _e) {
-			}
-
-			JungleTreeEditor editor = tree.getTreeEditor();
-			NodeEditor e = new NodeEditor() {
-				String str;
-
-				public Either<Error,LoggingNode> edit(TreeNode node) {
-					LoggingNode logNode = wrap(node , new DefaultOperationLog());
-					str = "0";
-					int count = 0;
-					for (; logNode.getAttributes().get("mes" + String.valueOf(count)) != null; count++) {
-					}
-					str = String.valueOf(count);
-					logNode = logNode.getAttributes().put("mes" + str,ByteBuffer.wrap(_message.getBytes())).b();
-					logNode = logNode.getAttributes().put("timestamp" + str, tBuffer).b();
-					return DefaultEither.newB(logNode);
-				}
-
-				@Override
-				public LoggingNode wrap(TreeNode node, OperationLog op) {
-					return new LoggingNode(node, op);
-				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
-			};
-			either = editor.edit(path, e);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-			either = editor.success();
-		} while (either.isA());
-	}
-
-	public void editAttribute(String boardName, String _path, final String id, final String _message) {
-		requestCounter.incrementAndGet();
-		final long timestamp = System.currentTimeMillis();
-		final ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-		JungleTree tree = jungle.getTreeByName(boardName);
-		Either<Error, JungleTreeEditor> either = null;
-		DefaultNodePath path = new DefaultNodePath();
-		do {
-			try {
-				for (int count = 0; _path.substring(count, count + 1) != null; count++) {
-					if (!_path.substring(count, count + 1).equals("/"))
-						path = path.add(Integer.parseInt(_path.substring(count,
-								count + 1)));
-				}
-			} catch (Exception _e) {
-			}
-
-			JungleTreeEditor editor = tree.getTreeEditor();
-			NodeEditor e = new NodeEditor() {
-				public Either<Error,LoggingNode> edit(TreeNode node) {
-					LoggingNode logNode = wrap(node , new DefaultOperationLog());
-					// EnableNodeWrapper<T> node = _e.getWrap();
-					logNode = logNode.getAttributes().put("mes" + id,ByteBuffer.wrap(_message.getBytes())).b();
-					logNode = logNode.getAttributes().put("timestamp" + id, tBuffer).b();
-					return DefaultEither.newB(logNode);
-				}
-
-				@Override
-				public LoggingNode wrap(TreeNode node, OperationLog op) {
-					return new LoggingNode(node, op);
-				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
-			};
-			either = editor.edit(path, e);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-			either = editor.success();
-		} while (either.isA());
-	}
-
-	public void deleteNode(String _board, String _path, String _id) {
-		requestCounter.incrementAndGet();
-		int id = Integer.parseInt(_id);
-		final long timestamp = System.currentTimeMillis();
-		final ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-		JungleTree tree = jungle.getTreeByName(_board);
-		Either<Error, JungleTreeEditor> either = null;
-		DefaultNodePath path = new DefaultNodePath();
-		do {
-			try {
-				for (int count = 0; _path.substring(count, count + 1) != null; count++) {
-					if (!_path.substring(count, count + 1).equals("/"))
-						path = path.add(Integer.parseInt(_path.substring(count,count + 1)));
-				}
-			} catch (Exception _e) {
-			}
-
-			JungleTreeEditor editor = tree.getTreeEditor();
-
-			either = editor.deleteChildAt(path, id);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-			either = editor.success();
-		} while (either.isA());
-
-	}
-
-	public void deleteAttribute(String _board, String _path, final String id) {
-		requestCounter.incrementAndGet();
-		final long timestamp = System.currentTimeMillis();
-		final ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-		JungleTree tree = jungle.getTreeByName(_board);
-		Either<Error, JungleTreeEditor> either = null;
-		DefaultNodePath path = new DefaultNodePath();
-		do {
-			try {
-				for (int count = 0; _path.substring(count, count + 1) != null; count++) {
-					if (!_path.substring(count, count + 1).equals("/"))
-						path = path.add(Integer.parseInt(_path.substring(count,
-								count + 1)));
-				}
-			} catch (Exception _e) {
-				System.out.println("屑");
-			}
-
-			JungleTreeEditor editor = tree.getTreeEditor();
-			NodeEditor e = new NodeEditor() {
-				public Either<Error,LoggingNode> edit(TreeNode node) {
-					LoggingNode logNode = wrap(node , new DefaultOperationLog());
-					logNode = logNode.getAttributes().delete("mes" + id).b();
-					logNode = logNode.getAttributes().delete("timestamp" + id).b();
-					int count = Integer.parseInt(id);
-					for (; logNode.getAttributes().get("mes" + String.valueOf(count + 1)) != null;) {
-						logNode = logNode.getAttributes().put("mes" + count,node.getAttributes().get("mes"+ String.valueOf(count + 1))).b();
-						logNode = logNode.getAttributes().put("timestamp" + count, tBuffer).b();
-						count++;
-					}
-					if (count != Integer.parseInt(id)) {
-						logNode = logNode.getAttributes().delete("timestamp" + count).b();
-						logNode = logNode.getAttributes().delete("mes" + count).b();
-					}
-
-					return DefaultEither.newB(logNode);
-				}
-
-				@Override
-				public LoggingNode wrap(TreeNode node, OperationLog op) {
-					return new LoggingNode(node, op);
-				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-
-			};
-			either = editor.edit(path, e);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-			either = editor.success();
-		} while (either.isA());
-	}
-
-	public void editMatrixMessage(String _board, String _uuid,
-			final String _author, final String _message, final String _editKey) {
-		requestCounter.incrementAndGet();
-		final long timestamp = System.currentTimeMillis();
-		final ByteBuffer tBuffer = ByteBuffer.allocate(16);
-		tBuffer.putLong(timestamp);
-		JungleTree tree = jungle.getTreeByName(_board);
-		Either<Error, JungleTreeEditor> either = null;
-		do {
-			DefaultNodePath path = new DefaultNodePath();
-			path = path.add(Integer.parseInt(_uuid));
-
-			JungleTreeEditor editor = tree.getTreeEditor();
-			NodeEditor e = new NodeEditor() {
-				public Either<Error,LoggingNode> edit(TreeNode node) {
-					LoggingNode logNode = wrap(node , new DefaultOperationLog());
-					logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b();
-					logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b();
-					logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b();
-					logNode = logNode.getAttributes().put("timestamp", tBuffer).b();
-					return DefaultEither.newB(logNode);
-				}
-
-				@Override
-				public LoggingNode wrap(TreeNode node, OperationLog op) {
-					return new LoggingNode(node, op);
-				}
-
-				@Override
-				public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
-					// TODO Auto-generated method stub
-					return null;
-				}
-			};
-			either = editor.edit(path, e);
-			if (either.isA()) {
-				throw new IllegalStateException();
-			}
-			editor = either.b();
-			either = editor.success();
-		} while (either.isA());
-		renewTime = timestamp;
-	}
-
-	public Iterable<BoardMessage> getMessages(String _boardName) {
-		requestCounter.incrementAndGet();
-		JungleTree tree = jungle.getTreeByName(_boardName);
-		TreeNode node = tree.getRootNode();
-		Children chs = node.getChildren();
-		final AtomicInteger counter = new AtomicInteger(0);
-		IterableConverter.Converter<BoardMessage, TreeNode> converter = new IterableConverter.Converter<BoardMessage, TreeNode>() {
-			public BoardMessage conv(TreeNode _b) {
-				String uuid = Integer.toString(counter.get());
-				String author = new String(_b.getAttributes().get("author").array());
-				String message = new String(_b.getAttributes().get("mes").array());
-				counter.incrementAndGet();
-				return new BoardMessageImpl(author, message, uuid);
-			}
-		};
-		return new IterableConverter<BoardMessage, TreeNode>(chs, converter);
-	}
-
-	public Iterable<BoardMessage> getFolder(String _boardName, String _nodeNum) {
-
-		DefaultNodePath path = new DefaultNodePath();
-		try {
-			for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
-				if (!_nodeNum.substring(count, count + 1).equals("/"))
-					path = path.add(Integer.parseInt(_nodeNum.substring(count,count + 1)));
-			}
-		} catch (Exception _e) {
-		}
-		requestCounter.incrementAndGet();
-		JungleTree tree = jungle.getTreeByName(_boardName);
-		TreeNode node = tree.getRootNode();
-
-		DefaultTraverser traverser = new DefaultTraverser();
-		// TraversableNodeWrapper<Node> traversable = new
-		// TraversableNodeWrapper<Node>(node);
-		DefaultEvaluator evaluator = new DefaultEvaluator(path);
-		Either<Error, Traversal> ret = traverser.traverse(node,
-				evaluator);
-		if (ret.isA()) {
-			Assert.fail();
-		}
-
-		Traversal traversal = ret.b();
-		TreeNode target = traversal.destination();
-		Children chs = target.getChildren();
-
-		final AtomicInteger counter = new AtomicInteger(0);
-		IterableConverter.Converter<BoardMessage, TreeNode> converter = new IterableConverter.Converter<BoardMessage, TreeNode>() {
-			public BoardMessage conv(TreeNode _b) {
-				String uuid = Integer.toString(counter.get());
-				String message = new String(_b.getAttributes().get("mes")
-						.array());
-				counter.incrementAndGet();
-				return new BoardMessageImpl(null, message, uuid);
-			}
-		};
-		return new IterableConverter<BoardMessage, TreeNode>(chs, converter);
-	}
-
-	public getAttributeImp getAttribute(String _boardName, String _nodeNum) {
-
-		DefaultNodePath path = new DefaultNodePath();
-		try {
-			for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) {
-				if (!_nodeNum.substring(count, count + 1).equals("/"))
-					path = path.add(Integer.parseInt(_nodeNum.substring(count,
-							count + 1)));
-			}
-		} catch (Exception _e) {
-		}
-		requestCounter.incrementAndGet();
-		JungleTree tree = jungle.getTreeByName(_boardName);
-		TreeNode node = tree.getRootNode();
-
-		DefaultTraverser traverser = new DefaultTraverser();
-		// TraversableNodeWrapper<Node> traversable = new
-		// TraversableNodeWrapper<Node>(node);
-		DefaultEvaluator evaluator = new DefaultEvaluator(path);
-		Either<Error, Traversal> ret = traverser.traverse(node,
-				evaluator);
-		if (ret.isA()) {
-			Assert.fail();
-		}
-
-		Traversal traversal = ret.b();
-		TreeNode target = traversal.destination();
-		return new getAttributeImp(target);
-	}
-
-	public TreeNode search(JungleTree tree ,String searchAttribute,String key){
-		// 
-		InterfaceTraverser ifTraverser = tree.getTraverser();
-		Iterator<Pair<TreeNode, NodePath>> searchNode = ifTraverser.find(
-		        (TreeNode node) -> {
-		            ByteBuffer attribute = node.getAttributes().get(key);
-		            if(attribute != null){
-		                byte[] byteAttribute = attribute.array();
-		                String str = new String(byteAttribute);
-		                System.out.println(str);
-		                return str.equals(searchAttribute);
-		            }
-		            return false;
-		        }
-		        ,key,searchAttribute);
-		
-		if (!searchNode.hasNext()) 
-			return null;
-		return searchNode.next().left();
-		
-	}
-	
-	public boolean compare(TreeNode compareNode, String compareAttribute) {
-		String labName = compareNode.getAttributes().getString("mes");
-		if (labName.equals(compareAttribute))
-			return true;
-
-		int loopCount = 0;
-		for (loopCount = 0 ;compareNode.getAttributes().getString("mes" + loopCount) != null; loopCount++ ) {
-			labName = compareNode.getAttributes().getString("mes" + loopCount);
-			if (labName.equals(compareAttribute))
-				return true;
-		}
-		
-		return false;
-	}
-	public String searchJungle(String requestName , String approvalName) {
-		JungleTree tree = jungle.getTreeByName("人物");
-
-		
-		TreeNode searchNode = search(tree , "河野研","mes");
-		
-		if (searchNode == null)
-			return "申請者がデータに無い人物です";
-		
-		if (!compare(searchNode, "河野研"))
-			return "河野研以外に所属している人は、この申請をすることが出来ません";
-		
-		
-		searchNode = search(tree , approvalName,"mes");
-		if (searchNode == null)
-			return "承認者がデータに無い人物です";
-		
-		if (!compare(searchNode, "上位申請権限"))
-			return "権限がありません(この申請の承認は上位申請者である必要があります";
-		
-		String position = searchNode.getAttributes().getString("mes1");
-		
-		JungleTree grantTree = jungle.getTreeByName("役職");
-		searchNode = search(grantTree , position,"mes");
-		
-		if (!compare(searchNode, "准教授権限") || !!compare(searchNode, "教授権限"))
-			return "権限がありません(この申請の承認は助教授か、教授である必要があります";
-		
-		return "申請が受理されました";	
-	}
-	
-	
-	public int getRequestNum() {
-		return requestCounter.get();
-	}
-
-	private static class BoardMessageImpl implements BoardMessage {
-		private final String author;
-		private final String message;
-		private final String uuid;
-
-		public BoardMessageImpl(String _author, String _message, String _uuid) {
-			author = _author;
-			message = _message;
-			uuid = _uuid;
-		}
-
-		public String getAuthor() {
-			return author;
-		}
-
-		public String getMessage() {
-			return message;
-		}
-
-		public String getUUID() {
-			return uuid;
-		}
-
-	}
-
-	public String sanitize(String str) {
-		if (str == null) {
-			return str;
-		}
-		str = str.replaceAll("&", "&amp;");
-		str = str.replaceAll("<", "&lt;");
-		str = str.replaceAll(">", "&gt;");
-		str = str.replaceAll("\"", "&quot;");
-		str = str.replaceAll("'", "&#39;");
-		return str;
-	}
-
-}
--- a/src/main/java/app/bbs/thinks/ShowBoardsServletMatrix.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard;
-
-public class ShowBoardsServletMatrix extends HttpServlet
-{
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final BulletinBoard bbs;
-	private final String createBoardPath;
-	private final String showBoardMessagePath;
-
-	public ShowBoardsServletMatrix(BulletinBoard _bbs, String _createBoardPath,String _showBoardMessagePath)
-	{
-		bbs = _bbs;
-		createBoardPath = _createBoardPath;
-		showBoardMessagePath = _showBoardMessagePath;
-	}
-	
-	public void doGet(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		try{
-			_res.setCharacterEncoding("UTF-8");
-			printBoard(_res.getWriter());
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-		
-	}
-	
-	private void printBoard(PrintWriter _pw) throws Exception
-	{
-		_pw.write("<html><body>\n");
-		_pw.write("<h1>BBS</h1>\n");
-		_pw.write("<form action='"+createBoardPath+"' method='POST'\n");
-		_pw.write("<p>Create new board.</p>");
-		_pw.write("<p>BoardName : <input type='text' name='bname'/></p>\n");
-		_pw.write("<p>Author : <input type='text' name='author'/> EditKey : <input type='text' name='key'/></p>\n");
-		_pw.write("<p>Message<br/> <input type='textarea' name='msg'/> </p>\n");
-		_pw.write("<p><input type='submit' value='submit'/></p><hr/>\n");
-		
-		_pw.write("<h2>list of boards</h2>");
-		for(String board : bbs.getBoards()){
-			_pw.write("<p><a href='"+showBoardMessagePath+"?bname=" + bbs.sanitize(board) + "'>"+ bbs.sanitize(board) + "</a></p>");
-		}
-		
-		_pw.write("</body></html>");
-		_pw.flush();
-	}
-}
--- a/src/main/java/app/bbs/thinks/ShowMatrix.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.eclipse.jetty.util.thread.ThreadPool;
-
-import app.bbs.NetworkBulletinBoard;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;
-
-public class ShowMatrix extends HttpServlet {
-	/**
-	 * edit Node Path is rename editNodePath
-	 **/
-	private static final long serialVersionUID = 1L;
-	private final NetworkBulletinBoard bbs;
-	private final String createBoardMessagePath;
-	private final String editNodePath;
-	private final String showMatrixPath;
-	private final String createAttributePath;
-	private final String editAttributePath;
-	private final String deleteAttributePath;
-	private final String deleteNodePath;
-	private static final String PARAM_BOARD_NAME = "bname";
-	private static final String PARAM_NODE_PATH = "uuid";
-	private static final String PARAM_NODE_NAME = "nodeName";
-
-	public ShowMatrix(NetworkBulletinBoard _bbs,
-			String _createBoardMessagePath, String _editNodePath,
-			String _showMatrixPath, String _createAttributePath,
-			String _editAttributePath, String _deleteAttributePath,
-			String _deleteNodePath, ThreadPool thp) {
-		bbs = _bbs;
-		deleteAttributePath = _deleteAttributePath;
-		deleteNodePath = _deleteNodePath;
-		createAttributePath = _createAttributePath;
-		editAttributePath = _editAttributePath;
-		showMatrixPath = _showMatrixPath;
-		createBoardMessagePath = _createBoardMessagePath;
-		editNodePath = _editNodePath;
-	}
-
-	public void doGet(HttpServletRequest _req, HttpServletResponse _res) {
-
-		final String bname = _req.getParameter(PARAM_BOARD_NAME);
-		String path = _req.getParameter(PARAM_NODE_PATH);
-		String nodeName = _req.getParameter(PARAM_NODE_NAME);
-		try {
-			_res.setCharacterEncoding("UTF-8");
-			printBoard(bname, path, nodeName, _res.getWriter());
-		} catch (Exception _e) {
-			_res.setStatus(500);
-		}
-	}
-
-	private void printBoard(String _bname, String path, String nodeName,
-			PrintWriter _pw) throws Exception {
-		_pw.write("<html><body>\n");
-
-		if (nodeName == null)
-			nodeName = "rootNode";
-		if (path == null)
-			path = "";
-		
-		_pw.write("<h1>" + bbs.sanitize(nodeName) + " Path = " + path + "</h1>\n");
-
-		_pw.write("<form action='" + createBoardMessagePath
-				+ "' method='POST'>\n");
-		_pw.write("<p><input type='hidden' name='bname' value='" + bbs.sanitize(_bname)
-				+ "'/> </p>\n");
-		_pw.write("<p>Folder Name<br/> <input type='textarea' name='name'/> </p>\n");
-		_pw.write("<input type='hidden' name='path' value='" + path + "'/>");
-		_pw.write("<p><input type='submit' value='submit'/></p>\n");
-		_pw.write("</form>");
-
-		_pw.write("<p><br>add Attribute</p>");
-		_pw.write("<form action='" + createAttributePath + "' method='POST'\n");
-		_pw.write("<p><input type='hidden' name='bname' value='" + bbs.sanitize(_bname)
-				+ "'</p>\n");
-		_pw.write("<p>attributeName<br/> <input type='textarea' name='msg'/> </p>\n");
-		_pw.write("<input type='hidden' name='path' value='" + path + "'/>");
-		_pw.write("<p><input type='submit' value='submit'/></p>\n");
-		_pw.write("</form>");
-		_pw.write("<hr/>");
-		_pw.write("<p>Folder</p>");
-
-		for (BoardMessage msg : bbs.getFolder(_bname, path)) {
-			_pw.write("<small><a href=" + showMatrixPath + "?bname=" + bbs.sanitize(_bname)
-					+ "&uuid=" + path + "/" + msg.getUUID() + "&nodeName="
-					+ bbs.sanitize(msg.getMessage()) + ">" + bbs.sanitize(msg.getMessage())
-					+ "</a></small>");
-			_pw.write("   ");
-			_pw.write("<small><a href='" + editNodePath + "?bname=" + bbs.sanitize(_bname)
-					+ "&path=" + path + "/" + msg.getUUID()
-					+ "'>edit</a></small>");
-			_pw.write("   ");
-			_pw.write("<small><a href='" + deleteNodePath + "?bname=" + bbs.sanitize(_bname)
-					+ "&path=" + path + "&id=" + msg.getUUID()
-					+ "'>delete</a><br><br></small>");
-		}
-
-		_pw.write("<br><hr/><p>Value</p>");
-		getAttributeImp attribute = (bbs.getAttribute(_bname, path));
-		for (int count = 0; attribute.getMessage(count) != null; count++) {
-			_pw.write("<p><b>" + count + " :  </b>");
-			_pw.write("<a href='" + editAttributePath + "?bname=" + bbs.sanitize(_bname)
-					+ "&path=" + path + "&id=" + count + "'>"
-					+ bbs.sanitize(attribute.getMessage(count)) + "</a>");
-			_pw.write("<a href='" + deleteAttributePath + "?bname=" + bbs.sanitize(_bname)
-					+ "&path=" + path + "&id=" + count + "'>" + "   delete"
-					+ "</a></p>");
-		}
-		_pw.write("</body></html>");
-		_pw.flush();
-	}
-}
\ No newline at end of file
--- a/src/main/java/app/bbs/thinks/ShowMessageWithTimeStampServletMatrix.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.eclipse.jetty.util.thread.ThreadPool;
-
-import app.bbs.NetworkBulletinBoard;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;
-
-public class ShowMessageWithTimeStampServletMatrix extends HttpServlet {
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final NetworkBulletinBoard bbs;
-	private final String createBoardMessagePath;
-	private final String editMessagePath;
-	private final String showMatrixPath;
-
-	private static final String PARAM_BOARD_NAME = "bname";
-
-	public ShowMessageWithTimeStampServletMatrix(NetworkBulletinBoard _bbs,
-			String _createBoardMessagePath, String _editMessagePath, String _showMatrixPath,
-			ThreadPool thp) {
-		bbs = _bbs;
-		showMatrixPath = _showMatrixPath;
-		createBoardMessagePath = _createBoardMessagePath;
-		editMessagePath = _editMessagePath;
-	}
-
-	public void doGet(HttpServletRequest _req, HttpServletResponse _res) {
-		final String bname = (_req.getParameter(PARAM_BOARD_NAME));
-		try {
-			_res.setCharacterEncoding("UTF-8");
-			printBoard(bname, _res.getWriter());
-		} catch (Exception _e) {
-			_res.setStatus(500);
-		}
-	}
-
-	private void printBoard(String _bname, PrintWriter _pw) throws Exception {
-		_pw.write("<html><body>\n");
-		_pw.write("<h1>" + bbs.sanitize(_bname) + "</h1>\n");
-		_pw.write("<p>Latest renew time : " + bbs.getRenewTime(_bname)
-				+ "</p>\n");
-		;
-
-		_pw.write("<form action='" + createBoardMessagePath + "' method='POST'\n");
-		_pw.write("<p>Author : <input type='text' name='author'/> <input type='hidden' name='bname' value='" +bbs.sanitize( _bname) + "'/> EditKey : <input type='textarea' name='key'/></p>\n");
-		_pw.write("<p>Message<br/> <input type='textarea' name='msg'/> </p>\n");
-		_pw.write("<p><input type='submit' value='submit'/></p>\n");
-		_pw.write("<small><a href=" + showMatrixPath + "?bname=" + bbs.sanitize(_bname) + "&uuid= >MatrixMode"+"</a></small><br>");
-		
-		for (BoardMessage msg : bbs.getMessages(_bname)) {//フォルダの表示
-			_pw.write("<hr/>");
-			_pw.write("<p> Author <b>" + bbs.sanitize(msg.getAuthor()) + "</b></p>");
-			_pw.write("<small><a href=" + editMessagePath + "?bname=" + bbs.sanitize(_bname)
-					+ "&uuid=" + msg.getUUID() + ">"+ bbs.sanitize(msg.getMessage()) +"</a></small><br>");
-		}
-
-		_pw.write("</body></html>");
-		_pw.flush();
-	}
-}
--- a/src/main/java/app/bbs/thinks/createAttributeMatrix.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import app.bbs.NetworkBulletinBoard;
-
-public class createAttributeMatrix extends HttpServlet
-{
-	private final NetworkBulletinBoard bbs;
-	private static final String PARAM_BOARD_NAME = "bname";
-	private static final String PARAM_NODE_PATH = "path";
-	private static final String PARAM_BOARD_AUTHOR = "author";
-	private static final String PARAM_BOARD_MESSAGE= "msg";
-	private static final String PARAM_BOARD_EDITKEY = "key";
-	
-	private static final long serialVersionUID = 1L;
-	
-	public createAttributeMatrix(NetworkBulletinBoard _bbs)
-	{
-		bbs = _bbs;
-	}
-	
-
-
-	public void doPost(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String boardName = (_req.getParameter(PARAM_BOARD_NAME));
-		String author = (_req.getParameter(PARAM_BOARD_AUTHOR));//not use
-		String msg = (_req.getParameter(PARAM_BOARD_MESSAGE));
-		String key = (_req.getParameter(PARAM_BOARD_EDITKEY)); // not use
-		String uuid = (_req.getParameter(PARAM_NODE_PATH)); 
-		try{
-			bbs.createAttribute(boardName, uuid, author, msg, key);
-			PrintWriter pw = _res.getWriter();
-			pw.write("successfully written");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-}
--- a/src/main/java/app/bbs/thinks/deleteAttributeServlet.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import app.bbs.NetworkBulletinBoard;
-
-public class deleteAttributeServlet extends HttpServlet
-{
-	private final NetworkBulletinBoard bbs;
-	private static final String PARAM_BOARD_NAME = "bname";
-	private static final String PARAM_NODE_PATH = "path";
-	//private static final String PARAM_BOARD_MESSAGE= "msg";
-	//private static final String PARAM_BOARD_EDITKEY = "key";
-	private static final String PARAM_NODE_ID = "id";
-	private static final long serialVersionUID = 1L;
-	
-	public deleteAttributeServlet(NetworkBulletinBoard _bbs)
-	{
-		bbs = _bbs;
-	}
-	
-	public void doGet(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String bname = (_req.getParameter(PARAM_BOARD_NAME));
-		String path = (_req.getParameter(PARAM_NODE_PATH));
-		String id = (_req.getParameter(PARAM_NODE_ID));
-		
-		
-		try{
-			_res.setCharacterEncoding("UTF-8");
-			PrintWriter pw = _res.getWriter();
-			pw.write("<html><body><h1>delete Attribute ?</h1>");
-			pw.write("<form method='POST'\n");
-			pw.write("<p><input type='hidden' name='path' value='"+path+"'/>" +
-					"<input type='hidden' name='id' value='"+id+"'/>" +
-					"<input type='hidden' name='bname' value='"+bname+"'</p>\n");
-			pw.write("<p><input type='submit' value='submit'/></p>\n");
-			pw.write("</body></html>");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-
-	public void doPost(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String boardName = (_req.getParameter(PARAM_BOARD_NAME));
-		String path = (_req.getParameter(PARAM_NODE_PATH));
-		String id = (_req.getParameter(PARAM_NODE_ID));
-		
-		try{
-			bbs.deleteAttribute(boardName, path,id);
-			PrintWriter pw = _res.getWriter();
-			pw.write("successfully written");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-}
--- a/src/main/java/app/bbs/thinks/deleteNodeServlet.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-package app.bbs.thinks;
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import app.bbs.NetworkBulletinBoard;
-
-public class deleteNodeServlet extends HttpServlet
-{
-	private final NetworkBulletinBoard bbs;
-	private static final String PARAM_BOARD_NAME = "bname";
-	private static final String PARAM_BOARD_PATH = "path";
-	private static final String PARAM_NODE_ID = "id";
-
-	private static final long serialVersionUID = 1L;
-	
-	public deleteNodeServlet(NetworkBulletinBoard _bbs)
-	{
-		bbs = _bbs;
-	}
-	
-	public void doGet(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String bname = (_req.getParameter(PARAM_BOARD_NAME));
-		String path = (_req.getParameter(PARAM_BOARD_PATH ));
-		String id = (_req.getParameter(PARAM_NODE_ID));
-		
-		try{
-			_res.setCharacterEncoding("UTF-8");
-			PrintWriter pw = _res.getWriter();
-			pw.write("<html><body><h1>delete message ?</h1>");
-			pw.write("<form method='POST'\n");
-			pw.write("<p><input type='hidden' name='path' value='" + path + "'/>" +
-					"<input type='hidden' name='id' value='" + id +"'/>" +
-					"<input type='hidden' name='bname' value='" + bname + "'</p>\n");
-			pw.write("<p><input type='submit' value='submit'/></p>\n");
-			pw.write("</body></html>");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-
-	public void doPost(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String boardName = (_req.getParameter(PARAM_BOARD_NAME));
-		String path = (_req.getParameter(PARAM_BOARD_PATH));
-		String id = (_req.getParameter(PARAM_NODE_ID));
-		try{
-			bbs.deleteNode(boardName, path, id);
-			PrintWriter pw = _res.getWriter();
-			pw.write("successfully written");
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-}
--- a/src/main/java/app/bbs/thinks/getAttributeImp.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-package app.bbs.thinks;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
-
-
-
-
-public class getAttributeImp
-{
-	private final TreeNode node;
-	
-	public getAttributeImp(TreeNode _node)
-	{
-		node = _node;
-	}
-
-	public String getUUID(int num) {
-		// TODO Auto-generated method stub
-		return String.valueOf(num);
-	}
-
-	public String getMessage(int num) {
-		// TODO Auto-generated method stub
-		return new String(node.getAttributes().get("mes" + String.valueOf(num)).array());
-	}
-	
-}
-
--- a/src/main/java/app/bbs/thinks/permission.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-package app.bbs.thinks;
-
-import java.io.PrintWriter;
-
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.eclipse.jetty.util.thread.ThreadPool;
-
-import app.bbs.NetworkBulletinBoard;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage;
-
-import org.eclipse.jetty.util.thread.ThreadPool;
-
-import app.bbs.NetworkBulletinBoard;
-
-public class permission extends HttpServlet{
-	private static final long serialVersionUID = 1L;
-	private final NetworkBulletinBoard bbs;
-	private static final String REQUEST_NAME = "name1";
-	private static final String PERMMIT_NAME = "name2";
-
-	public permission(NetworkBulletinBoard _bbs,
-			String permissionPath,  ThreadPool thp) {
-		bbs = _bbs;
-
-	}
-
-	public void doGet(HttpServletRequest _req, HttpServletResponse _res) {
-
-		try {
-			_res.setCharacterEncoding("UTF-8");
-			PrintWriter _pw = _res.getWriter();
-			_pw.write("<html><body><h1>承認フォーム</h1>");
-			_pw.write("<form method='POST'\n");
-			_pw.write("<p>申請者名<br/> <input type='textarea' name='name1'/> </p>\n");
-			_pw.write("<p>承認者名<br/> <input type='textarea' name='name2'/> </p>\n");
-			_pw.write("<p><input type='submit' value='submit'/></p>\n");
-			_pw.write("</body></html>");
-			_pw.flush();
-			_res.setCharacterEncoding("UTF-8");
-		} catch (Exception _e) {
-			_res.setStatus(500);
-		}
-	}
-
-	public void doPost(HttpServletRequest _req,HttpServletResponse _res)
-	{
-		String requestName = _req.getParameter(REQUEST_NAME);
-		String permmitName = _req.getParameter(PERMMIT_NAME);
-
-		try{
-			_res.setCharacterEncoding("UTF-8");
-			PrintWriter pw = _res.getWriter();
-			pw.write(bbs.searchJungle(requestName,permmitName));
-			pw.flush();
-		}catch(Exception _e){
-			_res.setStatus(500);
-		}
-	}
-
-}
--- a/src/test/java/alice/jungle/log/example/FindMatrixTest.java	Fri Oct 17 15:16:56 2014 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-package alice.jungle.log.example;
-
-
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Iterator;
-
-import org.junit.Test;
-
-import fj.Ord;
-import fj.data.List;
-import fj.data.TreeMap;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
-import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.Query;
-import junit.framework.TestCase;
-import alice.jungle.operations.NetworkNodePath;
-import alice.jungle.persistent.PersistentJournal;
-import alice.jungle.persistent.PersistentJungle;
-import alice.jungle.transaction.JungleUpdater;
-import app.bbs.NetworkBulletinBoard;
-import app.bbs.NetworkJungleBulletinBoard;
-
-public class FindMatrixTest extends TestCase {
-	
-	@Test
-	public static void main(String[] args) throws IOException {
-	    PersistentJournal journal = new PersistentJournal();
-		journal.setOutputFile(new File("./log/1.log"));
-		Jungle jungle = new PersistentJungle(journal, "uuid", new DefaultTreeEditor(new DefaultTraverser()));
-		
-		String treeName = treeLoad(jungle);
-		
-		JungleTree tree = jungle.getTreeByName(treeName);
-		InterfaceTraverser ifTraverser = tree.getTraverser();
-		
-		Iterator<Pair<TreeNode, NodePath>> searchNode = ifTraverser.find(
-		        (TreeNode node) -> {
-		            String attribute = node.getAttributes().getString("mes");
-		            if(attribute != null){
-		                System.out.println(attribute);
-		                return attribute.equals("比嘉健太");
-		            }
-		            return false;
-		        }
-		        ,"mes","比嘉健太");
-		
-		TreeNode node = searchNode.next().left();
-		byte[] nodeAttibute = node.getAttributes().get("mes").array();
-		System.out.println(new String(nodeAttibute));
-	}
-
-    public static String treeLoad(Jungle jungle) throws FileNotFoundException {
-        String treeName = null;
-		
-		for (ChangeList chList : getChangeList()) {
-			treeName = chList.getTreeName();
-			JungleTree tree = jungle.getTreeByName(treeName);
-			if(tree == null) {
-				tree = jungle.createNewTree(treeName);
-			}
-			JungleTreeEditor editor2 = tree.getTreeEditor();
-			Either<Error, JungleTreeEditor> either2 = JungleUpdater.edit(editor2, chList);
-			assertFalse(either2.isA());
-			editor2 = either2.b();
-			editor2.success();
-		}
-        return treeName;
-    }
-
-    public static ChangeListReader getChangeList() throws FileNotFoundException {
-        PersistentJournal journal1 = new PersistentJournal();
-		journal1.setInputFile(new File("./log/1410802370082.log"));
-		ChangeListReader reader = journal1.getReader();
-        return reader;
-    }
-}