# HG changeset patch # User one # Date 1409005935 -32400 # Node ID 5dbae471a3b3dd223fa6b330306c439c9ad5d163 # Parent 053c9b52a5b2b88756a3500c384beb2f209695fc Deleting DefaultNode(change to DefaultTreeNodeChildren) (on error) diff -r 053c9b52a5b2 -r 5dbae471a3b3 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 Wed Aug 20 18:10:30 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java Tue Aug 26 07:32:15 2014 +0900 @@ -14,5 +14,4 @@ public Node getAsNode(); - public T createNewNode(); } diff -r 053c9b52a5b2 -r 5dbae471a3b3 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 Wed Aug 20 18:10:30 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Tue Aug 26 07:32:15 2014 +0900 @@ -1,27 +1,38 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction; +import java.nio.ByteBuffer; + +import fj.Ord; +import fj.data.List; +import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; public class DefaultTreeNode implements TreeNode { - private final DefaultNode wrap; + //private final DefaultNode wrap; + public List children; + public TreeMap attrs; + + private static final List NIL_LIST = List.nil(); + private static final TreeMap NIL_MAP = TreeMap.empty(Ord.stringOrd); public DefaultTreeNode() { - this(new DefaultNode()); + this(NIL_LIST,NIL_MAP); } - public DefaultTreeNode(DefaultNode _wrap) + public DefaultTreeNode(List _children,TreeMap _attrs) { - wrap = _wrap; + attrs = _attrs; + children = _children; } @Override public DefaultTreeNodeChildren getChildren() { - return new DefaultTreeNodeChildren(wrap); + return new DefaultTreeNodeChildren(children, attrs); } @Override @@ -30,12 +41,6 @@ return new DefaultTreeNodeAttribute(wrap); } - @Override - public DefaultTreeNode createNewNode() - { - return new DefaultTreeNode(new DefaultNode()); - } - public DefaultNode getWrap() { return wrap; @@ -46,4 +51,9 @@ { return getWrap(); } + + public DefaultNode clone() + { + return new DefaultNode(children,attrs); + } } diff -r 053c9b52a5b2 -r 5dbae471a3b3 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 Wed Aug 20 18:10:30 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java Tue Aug 26 07:32:15 2014 +0900 @@ -2,6 +2,7 @@ import java.nio.ByteBuffer; import java.util.Iterator; + import fj.P2; import fj.data.List; import fj.data.TreeMap; @@ -26,16 +27,18 @@ } - private final DefaultNode node; + public List children; + public TreeMap attrs; - public DefaultTreeNodeChildren(DefaultNode _node) + public DefaultTreeNodeChildren(List _children,TreeMap _attrs) { - node = _node; + children = _children; + attrs = _attrs; } private boolean boundaryCheck(int _pos) { - int size = node.getChildren().size(); + int size = children.length(); if(size < _pos){ return false; } @@ -50,16 +53,13 @@ return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS); } - DefaultChildren children = node.getChildren(); - DefaultAttributes attrs = node.getAttributes(); - List raw = children.getChildrenAsRawList(); - P2,List> split = raw.splitAt(_pos); - List newChildren = split._1().snoc(new DefaultNode()).append(split._2()); - DefaultNode newNode = new DefaultNode(newChildren,attrs.getAttributesAsRawMap()); + P2,List> split = children.splitAt(_pos); + List newChildren = split._1().snoc(new DefaultTreeNode()).append(split._2()); + DefaultTreeNode newNode = new DefaultTreeNode(newChildren,attrs); - return DefaultEither.newB(new DefaultTreeNode(newNode)); + return DefaultEither.newB(newNode); } @Override @@ -68,71 +68,54 @@ if(!boundaryCheck(_pos) || _pos < 0 || size() == 0){ return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS); } - - DefaultChildren chs = node.getChildren(); - List raw = chs.getChildrenAsRawList(); - - P2,List> split = raw.splitAt(_pos); - List newChildren = split._1().append(split._2().tail()); + + P2,List> split = children.splitAt(_pos); + List newChildren = split._1().append(split._2().tail()); - DefaultAttributes attrs = node.getAttributes(); - TreeMap map = attrs.getAttributesAsRawMap(); - DefaultNode newNode = new DefaultNode(newChildren,map); + DefaultTreeNode newNode = new DefaultTreeNode(newChildren,attrs); - return DefaultEither.newB(new DefaultTreeNode(newNode)); + return DefaultEither.newB(newNode); } @Override public int size() { - return node.getChildren().size(); + return children.length(); } @Override public Iterator iterator() { - IterableConverter.Converter converter = new IterableConverter.Converter(){ - @Override - public DefaultTreeNode conv(DefaultNode _b) - { - return new DefaultTreeNode(_b); - } - }; - - List raw = node.getChildren().getChildrenAsRawList(); - return new IterableConverter(raw,converter).iterator(); + return children.iterator(); } @Override public Either replaceNode(int _pos,DefaultTreeNode _replacement) { - int size = node.getChildren().size(); + int size = children.length(); if(!(0 <= _pos && _pos < size)){ return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS); } - DefaultNode replacement = _replacement.getWrap(); + DefaultTreeNode replacement = _replacement; - List rawList = node.getChildren().getChildrenAsRawList(); - P2,List> split = rawList.splitAt(_pos + 1); - List init = split._1().reverse().tail().reverse(); - List newInit = init.snoc(replacement); - List newList = newInit.append(split._2()); - TreeMap rawMap = node.getAttributes().getAttributesAsRawMap(); + P2,List> split = children.splitAt(_pos + 1); + List init = split._1().reverse().tail().reverse(); + List newInit = init.snoc(replacement); + List newList = newInit.append(split._2()); - return DefaultEither.newB(new DefaultTreeNode(new DefaultNode(newList,rawMap))); + return DefaultEither.newB(new DefaultTreeNode(newList,attrs)); } @Override public Either at(int _pos) { - List rawList = node.getChildren().getChildrenAsRawList(); - DefaultNode ch = rawList.index(_pos); - if(ch == null){ + DefaultTreeNode Node = children.index(_pos); + if(Node == null){ return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS); } - return DefaultEither.newB(new DefaultTreeNode(ch)); + return DefaultEither.newB(Node); } @Override @@ -141,15 +124,12 @@ if(!boundaryCheck(_pos) || _pos < 0){ return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS); } - DefaultNode newChild = _newChild.getWrap(); - List raw = node.getChildren().getChildrenAsRawList(); - TreeMap rawMap = node.getAttributes().getAttributesAsRawMap(); - P2,List> split = raw.splitAt(_pos); - List newChildren = split._1().snoc(newChild).append(split._2()); - DefaultNode newNode = new DefaultNode(newChildren,rawMap); + P2,List> split = children.splitAt(_pos); + List newChildren = split._1().snoc(_newChild).append(split._2()); + DefaultTreeNode newNode = new DefaultTreeNode(newChildren,attrs); - return DefaultEither.newB(new DefaultTreeNode(newNode)); + return DefaultEither.newB(newNode); } }