diff src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/local/JungleBulletinBoard.java @ 4:5acde010c6db

add jungle browsing system
author tatsuki
date Tue, 28 Jun 2016 19:45:55 +0900
parents 64a72a7a0491
children 6e91ad317eb0
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/local/JungleBulletinBoard.java	Mon Jun 27 05:25:48 2016 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/local/JungleBulletinBoard.java	Tue Jun 28 19:45:55 2016 +0900
@@ -9,12 +9,10 @@
 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath;
 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode;
-import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultEvaluator;
+import jp.ac.u_ryukyu.ie.cr.jungle.transaction.DefaultTreeNode;
 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
-import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traversal;
 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error;
-import junit.framework.Assert;
 
 import java.nio.ByteBuffer;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -73,7 +71,7 @@
 		editor = editor.putAttribute(root,"author", ByteBuffer.wrap(_author.getBytes())).b();
 		editor = editor.putAttribute(root,"key", ByteBuffer.wrap(_editKey.getBytes())).b();
 		either = editor.putAttribute(root,"mes", ByteBuffer.wrap(_initMessage.getBytes()));
-		
+
 		if (either.isA()) {
 			throw new IllegalStateException();
 		}
@@ -104,7 +102,7 @@
 			editor = editor.putAttribute(path.add(size),"author", ByteBuffer.wrap(_author.getBytes())).b();
 			editor = editor.putAttribute(path.add(size),"key", ByteBuffer.wrap(_editKey.getBytes())).b();
 			either = editor.putAttribute(path.add(size),"mes", ByteBuffer.wrap(_message.getBytes()));
-			
+
 			if (either.isA()) {
 				throw new IllegalStateException();
 			}
@@ -125,7 +123,7 @@
 			editor = editor.putAttribute(path,"author", ByteBuffer.wrap(_author.getBytes())).b();
 			editor = editor.putAttribute(path,"key", ByteBuffer.wrap(_editKey.getBytes())).b();
 			Either<Error, JungleTreeEditor> either = editor.putAttribute(path,"mes", ByteBuffer.wrap(_message.getBytes()));
-			
+
 			if (either.isA()) {
 				throw new IllegalStateException();
 			}
@@ -188,32 +186,27 @@
 		return str;
 	}
 
-  public GetAttributeImp getAttribute(String _bname, String _nodeNum, String revisionStr) {
-
-    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) {
-    }
-    JungleTree tree = jungle.getTreeByName(_bname);
-    System.out.println(tree.revision());
-    Long revision = Long.parseLong(revisionStr);
-    JungleTree oldTree = tree.getOldTree(revision).b();
-    System.out.println(oldTree.revision());
-    TreeNode node = oldTree.getRootNode();
-
-    DefaultTraverser traverser = new DefaultTraverser();
-    DefaultEvaluator evaluator = new DefaultEvaluator(path);
-    Either<Error, Traversal> ret = traverser.traverse(node, evaluator);
-    if (ret.isA()) {
-      Assert.fail();
+    public GetAttributeImp getAttribute(String _bname, String nodePath,String revisionStr) {
+        Long revision = Long.parseLong(revisionStr);
+        DefaultNodePath path = createNodePath(nodePath);
+        JungleTree tree = jungle.getTreeByName(_bname);
+        JungleTree oldTree = tree.getOldTree(revision).b();
+        Either<Error, TreeNode> either = tree.getNodeOfPath(path);
+        if (either.isA())
+            return new GetAttributeImp(new DefaultTreeNode());
+        TreeNode node = either.b();
+        return new GetAttributeImp(node);
     }
 
-    Traversal traversal = ret.b();
-    TreeNode target = traversal.destination();
-    return new GetAttributeImp(target);
-  }
+    private DefaultNodePath createNodePath(String nodePath) {
+        DefaultNodePath path = new DefaultNodePath();
+        try {
+            for (int count = 0; nodePath.substring(count, count + 1) != null; count++) {
+                if (!nodePath.substring(count, count + 1).equals("/"))
+                    path = path.add(Integer.parseInt(nodePath.substring(count, count + 1)));
+            }
+        } catch (Exception _e) {
+        }
+        return path;
+    }
 }