annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java @ 112:98e256d9fd57

treeAttribute add get String but has error
author one
date Mon, 15 Sep 2014 16:31:53 +0900
parents f9a0e7069811
children 74723b26ad96
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
Shoshi TAMAKI
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
Shoshi TAMAKI
parents:
diff changeset
2
28
Shoshi TAMAKI
parents: 27
diff changeset
3 import fj.data.List;
12
df42dca47c3e rename and commit
Shoshi TAMAKI
parents: 10
diff changeset
4 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
10
Shoshi TAMAKI
parents:
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
14
596a714e6a89 added documents
Shoshi TAMAKI
parents: 13
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
28
Shoshi TAMAKI
parents: 27
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
Shoshi TAMAKI
parents: 27
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Direction;
23
Shoshi TAMAKI
parents: 22
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
14
596a714e6a89 added documents
Shoshi TAMAKI
parents: 13
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser;
23
Shoshi TAMAKI
parents: 22
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
Shoshi TAMAKI
parents: 22
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
Shoshi TAMAKI
parents: 22
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
103
bed3afd5c2e2 add Index but Not use
one
parents: 96
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Logging;
10
Shoshi TAMAKI
parents:
diff changeset
15
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 38
diff changeset
16 public class DefaultTreeEditor implements TreeEditor
10
Shoshi TAMAKI
parents:
diff changeset
17 {
35
Shoshi TAMAKI
parents: 32
diff changeset
18 private final Traverser traverser;
10
Shoshi TAMAKI
parents:
diff changeset
19
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
20 public DefaultTreeEditor(Traverser traverser)
10
Shoshi TAMAKI
parents:
diff changeset
21 {
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
22 this.traverser = traverser;
35
Shoshi TAMAKI
parents: 32
diff changeset
23 }
Shoshi TAMAKI
parents: 32
diff changeset
24
10
Shoshi TAMAKI
parents:
diff changeset
25 @Override
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
26 public Either<Error,Logging> edit(TreeNode root,NodePath path,NodeEditor editor)
12
df42dca47c3e rename and commit
Shoshi TAMAKI
parents: 10
diff changeset
27 {
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
28 DefaultEvaluator e = new DefaultEvaluator(path);
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
29 Either<Error, Traversal> either = traverser.traverse(root,e);
18
8d4cbd5a6525 added Operation
Shoshi TAMAKI
parents: 16
diff changeset
30
28
Shoshi TAMAKI
parents: 27
diff changeset
31 if(either.isA()){
Shoshi TAMAKI
parents: 27
diff changeset
32 return DefaultEither.newA(either.a());
16
35c661de095d added Parameter ... etc..
Shoshi TAMAKI
parents: 14
diff changeset
33 }
14
596a714e6a89 added documents
Shoshi TAMAKI
parents: 13
diff changeset
34
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 81
diff changeset
35 Traversal t = either.b();
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
36 Either<Error,Logging> ret = clone(t,editor);
28
Shoshi TAMAKI
parents: 27
diff changeset
37
Shoshi TAMAKI
parents: 27
diff changeset
38 return ret;
12
df42dca47c3e rename and commit
Shoshi TAMAKI
parents: 10
diff changeset
39 }
16
35c661de095d added Parameter ... etc..
Shoshi TAMAKI
parents: 14
diff changeset
40
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
41 private Either<Error,Logging> clone(Traversal t,NodeEditor editor)
25
Shoshi TAMAKI
parents: 23
diff changeset
42 {
29
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
43 // copying nodes from bottom to root
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
44
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 81
diff changeset
45 List<Direction<TreeNode>> path = List.nil();
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
46 for(Direction<TreeNode> direction : t){
28
Shoshi TAMAKI
parents: 27
diff changeset
47 path = path.cons(direction);
25
Shoshi TAMAKI
parents: 23
diff changeset
48 }
28
Shoshi TAMAKI
parents: 27
diff changeset
49
Shoshi TAMAKI
parents: 27
diff changeset
50 // target
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 81
diff changeset
51 Direction<TreeNode> targetDirection = path.head();
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 81
diff changeset
52 TreeNode target = targetDirection.getTarget();
78
540a27dde42f Delete EnableNode and EnableNodeWrapper
one
parents: 76
diff changeset
53 //EditableNodeWrapper<T> wrapper = new EditableNodeWrapper<T>(target);
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
54 Either<Error,Logging> either = editor.edit(target);
31
418088ca2b30 added Generics parameters to EditableNode framework
Shoshi TAMAKI
parents: 29
diff changeset
55 if(either.isA()){
418088ca2b30 added Generics parameters to EditableNode framework
Shoshi TAMAKI
parents: 29
diff changeset
56 return DefaultEither.newA(either.a());
418088ca2b30 added Generics parameters to EditableNode framework
Shoshi TAMAKI
parents: 29
diff changeset
57 }
418088ca2b30 added Generics parameters to EditableNode framework
Shoshi TAMAKI
parents: 29
diff changeset
58
103
bed3afd5c2e2 add Index but Not use
one
parents: 96
diff changeset
59 Logging newWrap = either.b();
28
Shoshi TAMAKI
parents: 27
diff changeset
60
29
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
61 // top
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
62 int pos = targetDirection.getPosition();
96
bd82c20a6da0 LoggingNode repair
one
parents: 93
diff changeset
63 TreeNode child = newWrap.getWrap();
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 81
diff changeset
64 for(Direction<TreeNode> parentDirection : path.tail()){
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 81
diff changeset
65 TreeNodeChildren chs = parentDirection.getTarget().getChildren();
76
2fc0b0313dc0 Move to Bullet in Board
one
parents: 68
diff changeset
66
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
67 Either<Error,TreeNode> ret = chs.replaceNode(pos,child);
31
418088ca2b30 added Generics parameters to EditableNode framework
Shoshi TAMAKI
parents: 29
diff changeset
68 if(ret.isA()){
418088ca2b30 added Generics parameters to EditableNode framework
Shoshi TAMAKI
parents: 29
diff changeset
69 return DefaultEither.newA(ret.a());
29
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
70 }
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
71
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
72 TreeNode newParent = ret.b();
29
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
73 child = newParent;
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
74 pos = parentDirection.getPosition();
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
75 }
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
76
81
715a9fbf02fc remove <T> many source
one
parents: 78
diff changeset
77 TreeNode newRoot = child;
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
78 Logging logNode = editor.wrap(newRoot,newWrap.getOperationLog());
103
bed3afd5c2e2 add Index but Not use
one
parents: 96
diff changeset
79 return DefaultEither.newB(logNode);
29
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
80 }
13
Shoshi TAMAKI
parents: 12
diff changeset
81 }