Mercurial > hg > Members > shoshi > jungle > bbs
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; + } }