# HG changeset patch # User one # Date 1409966327 -32400 # Node ID ef68358ed0e87bc6b214edb218033deac8a15de6 # Parent 14ce7a0dedcac4cd8a7f3c8b3b44a6db38ac6031# Parent 7058e85875a59d1951cc5eeaa049e4788ea96deb Merge with 7058e85875a59d1951cc5eeaa049e4788ea96deb diff -r 14ce7a0dedca -r ef68358ed0e8 document/JungleMindmap.mm --- a/document/JungleMindmap.mm Sat Sep 06 05:03:10 2014 +0900 +++ b/document/JungleMindmap.mm Sat Sep 06 10:18:47 2014 +0900 @@ -1,6 +1,17 @@ - + + + + + + +

+ Jungle +

+ + +
@@ -18,20 +29,80 @@ + + + + - - + + + - + + + + + + + + + + + + + + +

+ oderBy +

+ + +
+ + + + + + + + + + + + + + + +

+ output +

+ + +
+ + + + + + + + + + + + + + + @@ -42,7 +113,7 @@ - + diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultAttributes.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultAttributes.java Sat Sep 06 05:03:10 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultAttributes.java Sat Sep 06 10:18:47 2014 +0900 @@ -1,4 +1,4 @@ -package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl; +/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl; import java.nio.ByteBuffer; @@ -26,7 +26,6 @@ return DefaultEither.newB(newNode); } - */ public TreeMap getAttributesAsRawMap() { @@ -50,5 +49,5 @@ { return null; } - */ } +*/ \ No newline at end of file diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java diff -r 14ce7a0dedca -r ef68358ed0e8 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 05:03:10 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java Sat Sep 06 10:18:47 2014 +0900 @@ -1,6 +1,7 @@ package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.AttributesContainer; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; public interface TreeNode extends AttributesContainer { @@ -10,6 +11,9 @@ public TreeNodeAttributes getAttributes(); public TreeNode createNewNode(); - //public Node getAsNode(); + + public OperationLog getLog(); + + public void putLog(OperationLog _log); } diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/AppendChildAt.java diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteAttribute.java diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteChildAt.java diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/NodeEditor.java diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java diff -r 14ce7a0dedca -r ef68358ed0e8 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java diff -r 14ce7a0dedca -r ef68358ed0e8 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 05:03:10 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Sat Sep 06 10:18:47 2014 +0900 @@ -6,25 +6,40 @@ import fj.data.List; import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; public class DefaultTreeNode implements TreeNode { //private final DefaultNode wrap; - public List children; - public TreeMap attrs; + private List children; + private TreeMap attrs; + private OperationLog log; private static final List NIL_LIST = List.nil(); private static final TreeMap NIL_MAP = TreeMap.empty(Ord.stringOrd); public DefaultTreeNode() { - this(NIL_LIST,NIL_MAP); + this(NIL_LIST,NIL_MAP,new DefaultOperationLog()); } 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 @@ -36,7 +51,7 @@ @Override public DefaultTreeNodeAttribute getAttributes() { - return new DefaultTreeNodeAttribute(children, attrs); + return new DefaultTreeNodeAttribute(children, attrs,log); } @Override @@ -59,6 +74,17 @@ { 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 14ce7a0dedca -r ef68358ed0e8 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 05:03:10 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java Sat Sep 06 10:18:47 2014 +0900 @@ -7,6 +7,10 @@ import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; @@ -16,11 +20,20 @@ { public List children; public TreeMap attrs; + OperationLog log ; public DefaultTreeNodeAttribute(List _children,TreeMap _attrs) { children = _children; attrs = _attrs; + log = new DefaultOperationLog(); + } + + public DefaultTreeNodeAttribute(List _children,TreeMap _attrs,OperationLog _log) + { + children = _children; + attrs = _attrs; + log = _log; } @Override @@ -41,8 +54,8 @@ TreeMap newMap = attrs.delete(_key); - TreeNode newNode = new DefaultTreeNode(children,newMap); - + OperationLog op = new DefaultOperationLog();; + TreeNode newNode = new DefaultTreeNode(children,newMap,op.add(new DeleteAttributeOperation(_key))); return DefaultEither.newB(newNode); } @@ -58,8 +71,7 @@ //TreeMap raw = attrs.getAttributesAsRawMap(); TreeMap newMap = attrs.set(_key,_value); - - TreeNode newNode = new DefaultTreeNode(children,newMap); + TreeNode newNode = new DefaultTreeNode(children,newMap,log.add(new PutAttributeOperation(_key,_value))); return DefaultEither.newB(newNode); } diff -r 14ce7a0dedca -r ef68358ed0e8 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 05:03:10 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java Sat Sep 06 10:18:47 2014 +0900 @@ -8,6 +8,11 @@ import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeChildren; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; @@ -26,7 +31,7 @@ public List children; public TreeMap attrs; - + public DefaultTreeNodeChildren(List _children,TreeMap _attrs) { children = _children; @@ -54,12 +59,11 @@ return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS); } - - P2,List> split = children.splitAt(_pos); List newChildren = split._1().snoc(new DefaultTreeNode()).append(split._2()); - TreeNode newNode = new DefaultTreeNode(newChildren,attrs); - + OperationLog op = new DefaultOperationLog(); + TreeNode newNode = new DefaultTreeNode(newChildren,attrs,op.add(new AppendChildAtOperation(_pos))); + return DefaultEither.newB(newNode); } @@ -73,8 +77,8 @@ P2,List> split = children.splitAt(_pos); List newChildren = split._1().append(split._2().tail()); - - TreeNode newNode = new DefaultTreeNode(newChildren,attrs); + OperationLog op = new DefaultOperationLog(); + TreeNode newNode = new DefaultTreeNode(newChildren,attrs,op.add(new DeleteChildAtOperation(_pos))); return DefaultEither.newB(newNode); } diff -r 14ce7a0dedca -r ef68358ed0e8 src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/impl/node/DefaultAttributesTest.java --- a/src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/impl/node/DefaultAttributesTest.java Sat Sep 06 05:03:10 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/impl/node/DefaultAttributesTest.java Sat Sep 06 10:18:47 2014 +0900 @@ -10,11 +10,9 @@ import fj.data.Option; import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.AttributesTest; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultAttributes; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNodeAttribute; public class DefaultAttributesTest extends AttributesTest {