annotate src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/logger/LoggingChildren.java @ 308:201cc75a9984

change Red Black Tree Edit Path Extends
author tatsuki
date Thu, 26 Jan 2017 15:23:25 +0900
parents 1a5f3d3f3437
children 5b9a3bc593a7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
263
tatsuki
parents: 249
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.jungle.store.logger;
21
848f73545c4d add LoggingNode , LoggingAttributes , LoggingChildren , Logger
Shoshi TAMAKI
parents:
diff changeset
2
92
14ce7a0dedca Logging Node and Editor
one
parents: 78
diff changeset
3
209
e5275a599048 reverseList → List
tatsuki
parents: 153
diff changeset
4 import jp.ac.u_ryukyu.ie.cr.jungle.core.Children;
292
20fac8350822 add RedBlackJungleTree
tatsuki
parents: 266
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.*;
265
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
209
e5275a599048 reverseList → List
tatsuki
parents: 153
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither;
e5275a599048 reverseList → List
tatsuki
parents: 153
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
266
c62462c28807 separate edit → traverse edit clone
tatsuki
parents: 265
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error.Error;
21
848f73545c4d add LoggingNode , LoggingAttributes , LoggingChildren , Logger
Shoshi TAMAKI
parents:
diff changeset
10
292
20fac8350822 add RedBlackJungleTree
tatsuki
parents: 266
diff changeset
11 import java.nio.ByteBuffer;
20fac8350822 add RedBlackJungleTree
tatsuki
parents: 266
diff changeset
12
295
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
13 public class LoggingChildren {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
14 private final TreeNode wrap;
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
15 private final OperationLog log;
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
16
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
17 public LoggingChildren(TreeNode _wrap, OperationLog _log) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
18 wrap = _wrap;
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
19 log = _log;
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
20 }
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
21
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
22 public int size() {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
23 Children children = wrap.getChildren();
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
24 return children.size();
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
25 }
21
848f73545c4d add LoggingNode , LoggingAttributes , LoggingChildren , Logger
Shoshi TAMAKI
parents:
diff changeset
26
295
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
27 public Either<Error, LoggingNode> edit(NodeOperation _op) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
28 Either<Error, TreeNode> either = _op.invoke(wrap);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
29 if (either.isA()) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
30 return DefaultEither.newA(either.a());
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
31 }
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
32
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
33 TreeNode newWrap = either.b();
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
34 OperationLog newLog = log.add(_op);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
35 LoggingNode newLoggingNode = new LoggingNode(newWrap, newLog);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
36 return DefaultEither.newB(newLoggingNode);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
37 }
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
38
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
39 public Either<Error, LoggingNode> addNewChildAt(final int _pos) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
40 NodeOperation addNewChildAt = new AppendChildAtOperation(_pos);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
41 return edit(addNewChildAt);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
42 }
21
848f73545c4d add LoggingNode , LoggingAttributes , LoggingChildren , Logger
Shoshi TAMAKI
parents:
diff changeset
43
292
20fac8350822 add RedBlackJungleTree
tatsuki
parents: 266
diff changeset
44
295
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
45 public Either<Error, LoggingNode> addNewChildAndPutAttribute(int pos, String key, ByteBuffer value) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
46 NodeOperation addnewChildAndPutAttribute = new AddNewChildAndPutAttribute(pos, key, value);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
47 return edit(addnewChildAndPutAttribute);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
48 }
292
20fac8350822 add RedBlackJungleTree
tatsuki
parents: 266
diff changeset
49
295
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
50 public Either<Error, LoggingNode> deleteChildAt(final int pos) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
51 NodeOperation deleteChildAt = new DeleteChildAtOperation(pos);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
52 return edit(deleteChildAt);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
53 }
41
ed6737db637a added tests
Shoshi TAMAKI
parents: 37
diff changeset
54
249
803ab4479b7e add filtering key iterator
tatsuki
parents: 213
diff changeset
55
295
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
56 public Either<Error, LoggingNode> redBlackTreeDeleteChildAt(String key, ByteBuffer value) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
57 NodeOperation deleteChildAt = new RedBlackTreeDeleteChildAtOperation(key, value);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
58 return edit(deleteChildAt);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
59
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
60 }
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
61
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
62 public Either<Error, LoggingNode> moveChild(String move, int childNum) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
63 NodeOperation moveChild = new ChildMoveOperation(move, childNum);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
64 return edit(moveChild);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
65 }
249
803ab4479b7e add filtering key iterator
tatsuki
parents: 213
diff changeset
66
295
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
67 public Either<Error, LoggingNode> at(int _pos) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
68 Children children = wrap.getChildren();
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
69 Either<Error, TreeNode> either = children.at(_pos);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
70 if (either.isA()) {
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
71 return DefaultEither.newA(either.a());
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
72 }
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
73
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
74 TreeNode node = either.b();
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
75 LoggingNode logNode = new LoggingNode(node);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
76 return DefaultEither.newB(logNode);
1a5f3d3f3437 add RedBlackTree delete un fix
tatsuki
parents: 292
diff changeset
77 }
308
201cc75a9984 change Red Black Tree Edit Path Extends
tatsuki
parents: 295
diff changeset
78
21
848f73545c4d add LoggingNode , LoggingAttributes , LoggingChildren , Logger
Shoshi TAMAKI
parents:
diff changeset
79 }