# HG changeset patch # User one # Date 1410163388 -32400 # Node ID a1e20a440ddd6c5274282ddb1687a02bf9deb84b # Parent bd82c20a6da096d8d8ea7cc2ddba86566c275bad add BruteForceTraverser diff -r bd82c20a6da0 -r a1e20a440ddd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java Sat Sep 06 15:22:46 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java Mon Sep 08 17:03:08 2014 +0900 @@ -12,8 +12,4 @@ public TreeNode createNewNode(); - public OperationLog getLog(); - - public void putLog(OperationLog _log); - } diff -r bd82c20a6da0 -r a1e20a440ddd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Sat Sep 06 15:22:46 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Mon Sep 08 17:03:08 2014 +0900 @@ -21,25 +21,13 @@ public DefaultTreeNode() { - this(NIL_LIST,NIL_MAP,new DefaultOperationLog()); + this(NIL_LIST,NIL_MAP); } public DefaultTreeNode(List _children,TreeMap _attrs) { - this(_children, _attrs, new DefaultOperationLog()); - } - - public DefaultTreeNode(TreeNode _node, OperationLog _log) - { - this(_node.getChildren().getChildrenAsRawList(), _node.getAttributes().getAttributesAsRawMap(), _log); - } - - - - public DefaultTreeNode(List _children,TreeMap _attrs, OperationLog _log){ attrs = _attrs; children = _children; - log = _log; } @Override @@ -74,17 +62,5 @@ { return new DefaultTreeNode(children,attrs); } - - @Override - public OperationLog getLog() { - OperationLog _log = log; - log = new DefaultOperationLog(); - return _log; - } - - @Override - public void putLog(OperationLog _log){ - log = _log; - } } diff -r bd82c20a6da0 -r a1e20a440ddd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java Sat Sep 06 15:22:46 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java Mon Sep 08 17:03:08 2014 +0900 @@ -53,9 +53,7 @@ } TreeMap newMap = attrs.delete(_key); - - OperationLog op = new DefaultOperationLog();; - TreeNode newNode = new DefaultTreeNode(children,newMap,op.add(new DeleteAttributeOperation(_key))); + TreeNode newNode = new DefaultTreeNode(children,newMap); return DefaultEither.newB(newNode); } @@ -71,8 +69,7 @@ //TreeMap raw = attrs.getAttributesAsRawMap(); TreeMap newMap = attrs.set(_key,_value); - TreeNode newNode = new DefaultTreeNode(children,newMap,log.add(new PutAttributeOperation(_key,_value))); - + TreeNode newNode = new DefaultTreeNode(children,newMap); return DefaultEither.newB(newNode); } diff -r bd82c20a6da0 -r a1e20a440ddd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java Sat Sep 06 15:22:46 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java Mon Sep 08 17:03:08 2014 +0900 @@ -61,9 +61,7 @@ P2,List> split = children.splitAt(_pos); List newChildren = split._1().snoc(new DefaultTreeNode()).append(split._2()); - OperationLog op = new DefaultOperationLog(); - TreeNode newNode = new DefaultTreeNode(newChildren,attrs,op.add(new AppendChildAtOperation(_pos))); - + TreeNode newNode = new DefaultTreeNode(newChildren,attrs); return DefaultEither.newB(newNode); } @@ -76,9 +74,7 @@ P2,List> split = children.splitAt(_pos); List newChildren = split._1().append(split._2().tail()); - - OperationLog op = new DefaultOperationLog(); - TreeNode newNode = new DefaultTreeNode(newChildren,attrs,op.add(new DeleteChildAtOperation(_pos))); + TreeNode newNode = new DefaultTreeNode(newChildren,attrs); return DefaultEither.newB(newNode); } diff -r bd82c20a6da0 -r a1e20a440ddd src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/BruteForceTraverser.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/BruteForceTraverser.java Mon Sep 08 17:03:08 2014 +0900 @@ -0,0 +1,56 @@ +package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser; + +import fj.data.List; +import fj.data.TreeMap; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; +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.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; + +public class BruteForceTraverser { + List> pathNodes; + TreeMap nodeIndex; + TreeMap attributeIndex; + + BruteForceTraverser(TreeNode _root){ + pathNodes = this.traverse(_root,new DefaultNodePath(),-1); + } + + public List> traverse(TreeNode _node ,NodePath _path ,int _pos){ + + Children children = _node.getChildren(); + List> list = List.nil(); + int pathCount = _pos; + if(children.size() == 0){ + list = list.cons(new Pair(_path.add(_pos),_node)); + return list; + } + + for(TreeNode child : children){ + list = list.append(traverse(child,_path,pathCount)); + pathCount++; + } + + list = list.cons(new Pair(_path.add(_pos),_node)); + return list; + } + + public List> search(String _key, String _Attribute){ + List> pathNode = List.nil(); + for(Pair searchNode : pathNodes){ + if(searchNode.right().getAttributes().get(_key).equals(_Attribute)) + pathNode = pathNode.cons(searchNode); + } + return pathNode; + } + + public int count(String _key, String _attribute){ + return this.search(_key,_attribute).length(); + } + + public List> distinct(String _key ,String... _attribute){ + return null; + } + +}