Mercurial > hg > Members > tatsuki > bbs
diff src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/network/NetworkJungleBulletinBoard.java @ 4:5acde010c6db
add jungle browsing system
author | tatsuki |
---|---|
date | Tue, 28 Jun 2016 19:45:55 +0900 |
parents | f3d30646c863 |
children |
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/network/NetworkJungleBulletinBoard.java Mon Jun 27 05:25:48 2016 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/network/NetworkJungleBulletinBoard.java Tue Jun 28 19:45:55 2016 +0900 @@ -17,6 +17,7 @@ import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.logger.LoggingNode; import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.logger.OperationLog; import jp.ac.u_ryukyu.ie.cr.jungle.store.trasnformer.NodeEditor; +import jp.ac.u_ryukyu.ie.cr.jungle.transaction.DefaultTreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultEvaluator; import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traversal; @@ -656,34 +657,28 @@ return str; } - @Override - public GetAttributeImp getAttribute(String _bname, String _path, String revisionStr) { - DefaultNodePath path = new DefaultNodePath(); - String[] nums = _path.split(","); - for (String num : nums) { - if (!num.equals("-1")) - path = path.add(Integer.parseInt(num)); - } - + public GetAttributeImp getAttribute(String _bname, String nodePath,String revisionStr) { + Long revision = Long.parseLong(revisionStr); + DefaultNodePath path = createNodePath(nodePath); JungleTree tree = jungle.getTreeByName(_bname); - TreeNode node; - if (revisionStr.equals("-1")) { - node = tree.getRootNode(); - } else { - Long revision = Long.parseLong(revisionStr); - JungleTree oldTree = tree.getOldTree(revision).b(); - node = oldTree.getRootNode(); - } + 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); + } - DefaultTraverser traverser = new DefaultTraverser(); - DefaultEvaluator evaluator = new DefaultEvaluator(path); - Either<Error, Traversal> ret = traverser.traverse(node, evaluator); - if (ret.isA()) { - Assert.fail(); + 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; + } - Traversal traversal = ret.b(); - TreeNode target = traversal.destination(); - return new GetAttributeImp(target); - } }