Mercurial > hg > Members > tatsuki > bench > jungle-core
diff src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java @ 71:5dbae471a3b3
Deleting DefaultNode(change to DefaultTreeNodeChildren)
(on error)
author | one |
---|---|
date | Tue, 26 Aug 2014 07:32:15 +0900 |
parents | b136a24f82aa |
children | 3a3622cf2eef |
line wrap: on
line diff
--- 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<DefaultTreeNode> children; + public TreeMap<String,ByteBuffer> attrs; - public DefaultTreeNodeChildren(DefaultNode _node) + public DefaultTreeNodeChildren(List<DefaultTreeNode> _children,TreeMap<String,ByteBuffer> _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<DefaultNode> raw = children.getChildrenAsRawList(); - P2<List<DefaultNode>,List<DefaultNode>> split = raw.splitAt(_pos); - List<DefaultNode> newChildren = split._1().snoc(new DefaultNode()).append(split._2()); - DefaultNode newNode = new DefaultNode(newChildren,attrs.getAttributesAsRawMap()); + P2<List<DefaultTreeNode>,List<DefaultTreeNode>> split = children.splitAt(_pos); + List<DefaultTreeNode> 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<DefaultNode> raw = chs.getChildrenAsRawList(); - - P2<List<DefaultNode>,List<DefaultNode>> split = raw.splitAt(_pos); - List<DefaultNode> newChildren = split._1().append(split._2().tail()); + + P2<List<DefaultTreeNode>,List<DefaultTreeNode>> split = children.splitAt(_pos); + List<DefaultTreeNode> newChildren = split._1().append(split._2().tail()); - DefaultAttributes attrs = node.getAttributes(); - TreeMap<String, ByteBuffer> 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<DefaultTreeNode> iterator() { - IterableConverter.Converter<DefaultTreeNode,DefaultNode> converter = new IterableConverter.Converter<DefaultTreeNode,DefaultNode>(){ - @Override - public DefaultTreeNode conv(DefaultNode _b) - { - return new DefaultTreeNode(_b); - } - }; - - List<DefaultNode> raw = node.getChildren().getChildrenAsRawList(); - return new IterableConverter<DefaultTreeNode,DefaultNode>(raw,converter).iterator(); + return children.iterator(); } @Override public Either<Error,DefaultTreeNode> 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<DefaultNode> rawList = node.getChildren().getChildrenAsRawList(); - P2<List<DefaultNode>,List<DefaultNode>> split = rawList.splitAt(_pos + 1); - List<DefaultNode> init = split._1().reverse().tail().reverse(); - List<DefaultNode> newInit = init.snoc(replacement); - List<DefaultNode> newList = newInit.append(split._2()); - TreeMap<String, ByteBuffer> rawMap = node.getAttributes().getAttributesAsRawMap(); + P2<List<DefaultTreeNode>,List<DefaultTreeNode>> split = children.splitAt(_pos + 1); + List<DefaultTreeNode> init = split._1().reverse().tail().reverse(); + List<DefaultTreeNode> newInit = init.snoc(replacement); + List<DefaultTreeNode> newList = newInit.append(split._2()); - return DefaultEither.newB(new DefaultTreeNode(new DefaultNode(newList,rawMap))); + return DefaultEither.newB(new DefaultTreeNode(newList,attrs)); } @Override public Either<Error,DefaultTreeNode> at(int _pos) { - List<DefaultNode> 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<DefaultNode> raw = node.getChildren().getChildrenAsRawList(); - TreeMap<String, ByteBuffer> rawMap = node.getAttributes().getAttributesAsRawMap(); - P2<List<DefaultNode>,List<DefaultNode>> split = raw.splitAt(_pos); - List<DefaultNode> newChildren = split._1().snoc(newChild).append(split._2()); - DefaultNode newNode = new DefaultNode(newChildren,rawMap); + P2<List<DefaultTreeNode>,List<DefaultTreeNode>> split = children.splitAt(_pos); + List<DefaultTreeNode> newChildren = split._1().snoc(_newChild).append(split._2()); + DefaultTreeNode newNode = new DefaultTreeNode(newChildren,attrs); - return DefaultEither.newB(new DefaultTreeNode(newNode)); + return DefaultEither.newB(newNode); } }