annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java @ 143:afbe19c98f53

change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>> bag
author one
date Sat, 15 Nov 2014 17:48:07 +0900
parents ef183969bf31
children 0854f9a9e81d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
2
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
3 import java.nio.ByteBuffer;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
4 import java.util.Iterator;
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
5
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
6 import fj.P2;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
7 import fj.data.List;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
8 import fj.data.TreeMap;
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
52
Shoshi TAMAKI
parents: 41
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeChildren;
87
4c6b915302a8 Delete Logging Node Hock
one
parents: 86
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
4c6b915302a8 Delete Logging Node Hock
one
parents: 86
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
4c6b915302a8 Delete Logging Node Hock
one
parents: 86
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation;
4c6b915302a8 Delete Logging Node Hock
one
parents: 86
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
4c6b915302a8 Delete Logging Node Hock
one
parents: 86
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
20
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 85
diff changeset
21 public class DefaultTreeNodeChildren implements TreeNodeChildren
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
22 {
39
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
23 public static void main(String _args[])
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
24 {
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
25 List<Integer> list = List.range(0,5);
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
26 P2<List<Integer>, List<Integer>> split = list.splitAt(0);
39
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
27 System.out.println(split._1().length());
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
28 System.out.println(split._2().length());
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
29
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
30 }
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
31
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
32 public List<TreeNode> children;
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
33 public TreeMap<String,ByteBuffer> attrs;
87
4c6b915302a8 Delete Logging Node Hock
one
parents: 86
diff changeset
34
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
35 public DefaultTreeNodeChildren(List<TreeNode> _children,TreeMap<String,ByteBuffer> _attrs)
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
36 {
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
37 children = _children;
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
38 attrs = _attrs;
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
39 }
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
40
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
41 private boolean boundaryCheck(int _pos)
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
42 {
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
43 int size = children.length();
39
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
44 if(size < _pos){
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
45 return false;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
46 }
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
47
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
48 return true;
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
49 }
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
50
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
51 @Override
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
52 public List<TreeNode> getChildrenAsRawList(){
75
26dfa90016d1 error delete but 2 test program commentout and not action BulletinBoard
one
parents: 74
diff changeset
53 return children;
26dfa90016d1 error delete but 2 test program commentout and not action BulletinBoard
one
parents: 74
diff changeset
54 }
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 142
diff changeset
55
75
26dfa90016d1 error delete but 2 test program commentout and not action BulletinBoard
one
parents: 74
diff changeset
56 @Override
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
57 public Either<Error,TreeNode> addNewChildAt(int _pos)
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
58 {
39
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
59 if(!boundaryCheck(_pos) || _pos < 0){
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
60 return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS);
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
61 }
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
62
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
63 P2<List<TreeNode>,List<TreeNode>> split = children.splitAt(_pos);
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
64 List<TreeNode> newChildren = split._1().snoc(new DefaultTreeNode()).append(split._2());
97
a1e20a440ddd add BruteForceTraverser
one
parents: 87
diff changeset
65 TreeNode newNode = new DefaultTreeNode(newChildren,attrs);
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
66 return DefaultEither.newB(newNode);
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
67 }
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
68
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
69 @Override
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
70 public Either<Error,TreeNode> deleteChildAt(int _pos)
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
71 {
39
7d78bbf4a9cd added some tests
Shoshi TAMAKI
parents: 37
diff changeset
72 if(!boundaryCheck(_pos) || _pos < 0 || size() == 0){
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
73 return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS);
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
74 }
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
75
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
76 P2<List<TreeNode>,List<TreeNode>> split = children.splitAt(_pos);
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
77 List<TreeNode> newChildren = split._1().append(split._2().tail());
97
a1e20a440ddd add BruteForceTraverser
one
parents: 87
diff changeset
78 TreeNode newNode = new DefaultTreeNode(newChildren,attrs);
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
79
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
80 return DefaultEither.newB(newNode);
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
81 }
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
82
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
83 @Override
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
84 public int size()
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
85 {
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
86 return children.length();
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
87 }
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
88
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
89 @Override
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
90 public Iterator<TreeNode> iterator()
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
91 {
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
92 return children.iterator();
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
93 }
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
94
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
95 @Override
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
96 public Either<Error,TreeNode> replaceNode(int _pos,TreeNode _replacement)
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
97 {
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
98 int size = children.length();
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
99 if(!(0 <= _pos && _pos < size)){
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
100 return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS);
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
101 }
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
102 TreeNode replacement = _replacement;
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
103
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
104 P2<List<TreeNode>,List<TreeNode>> split = children.splitAt(_pos + 1);
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
105 List<TreeNode> init = split._1().reverse().tail().reverse();
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
106 List<TreeNode> newInit = init.snoc(replacement);
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
107 List<TreeNode> newList = newInit.append(split._2());
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
108 TreeNode node = new DefaultTreeNode(newList,attrs);
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
109 return DefaultEither.newB(node);
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
110 }
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
111
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
112 @Override
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
113 public Either<Error,TreeNode> at(int _pos)
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
114 {
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 142
diff changeset
115 if(!boundaryCheck(_pos)){
142
ef183969bf31 add get oldTree
one
parents: 97
diff changeset
116 return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS);
ef183969bf31 add get oldTree
one
parents: 97
diff changeset
117 }
ef183969bf31 add get oldTree
one
parents: 97
diff changeset
118
ef183969bf31 add get oldTree
one
parents: 97
diff changeset
119 TreeNode Node = children.index(_pos);
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
120
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
121 return DefaultEither.newB(Node);
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
122 }
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
123
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
124 @Override
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
125 public Either<Error,TreeNode> addNewChildAt(int _pos,TreeNode _newChild)
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
126 {
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
127 if(!boundaryCheck(_pos) || _pos < 0){
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
128 return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS);
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
129 }
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
130
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
131
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
132 P2<List<TreeNode>,List<TreeNode>> split = children.splitAt(_pos);
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
133 List<TreeNode> newChildren = split._1().snoc(_newChild).append(split._2());
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
134 TreeNode newNode = new DefaultTreeNode(newChildren,attrs);
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
135
71
5dbae471a3b3 Deleting DefaultNode(change to DefaultTreeNodeChildren)
one
parents: 57
diff changeset
136 return DefaultEither.newB(newNode);
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 39
diff changeset
137 }
37
35e327577b58 added transaction
Shoshi TAMAKI
parents:
diff changeset
138 }