annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java @ 78:540a27dde42f

Delete EnableNode and EnableNodeWrapper but not repair test program
author one
date Sun, 31 Aug 2014 00:44:35 +0900
parents 2fc0b0313dc0
children 715a9fbf02fc
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;
10
Shoshi TAMAKI
parents:
diff changeset
14
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 38
diff changeset
15 public class DefaultTreeEditor implements TreeEditor
10
Shoshi TAMAKI
parents:
diff changeset
16 {
35
Shoshi TAMAKI
parents: 32
diff changeset
17 private final Traverser traverser;
10
Shoshi TAMAKI
parents:
diff changeset
18
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 38
diff changeset
19 public DefaultTreeEditor(Traverser _traverser)
10
Shoshi TAMAKI
parents:
diff changeset
20 {
35
Shoshi TAMAKI
parents: 32
diff changeset
21 traverser = _traverser;
Shoshi TAMAKI
parents: 32
diff changeset
22 }
Shoshi TAMAKI
parents: 32
diff changeset
23
10
Shoshi TAMAKI
parents:
diff changeset
24 @Override
52
Shoshi TAMAKI
parents: 49
diff changeset
25 public <T extends TreeNode<T>> Either<Error,T> edit(T _root,NodePath _path,NodeEditor _editor)
12
df42dca47c3e rename and commit
Shoshi TAMAKI
parents: 10
diff changeset
26 {
35
Shoshi TAMAKI
parents: 32
diff changeset
27 DefaultEvaluator e = new DefaultEvaluator(_path);
68
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
28 //TraversableNodeWrapper<T> wrap = new TraversableNodeWrapper<T>(_root);
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
29 Either<Error, Traversal<T>> 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
68
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
35 Traversal<T> t = either.b();
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 38
diff changeset
36 Either<Error,T> 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
68
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
41 private <T extends TreeNode<T>> Either<Error,T> clone(Traversal<T> _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
68
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
45 List<Direction<T>> path = List.nil();
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
46 for(Direction<T> 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
68
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
51 Direction<T> targetDirection = path.head();
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
52 T target = targetDirection.getTarget();
78
540a27dde42f Delete EnableNode and EnableNodeWrapper
one
parents: 76
diff changeset
53 //EditableNodeWrapper<T> wrapper = new EditableNodeWrapper<T>(target);
540a27dde42f Delete EnableNode and EnableNodeWrapper
one
parents: 76
diff changeset
54 Either<Error,T> 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
78
540a27dde42f Delete EnableNode and EnableNodeWrapper
one
parents: 76
diff changeset
59 T newNode = 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();
37
35e327577b58 added transaction
Shoshi TAMAKI
parents: 35
diff changeset
63 T child = newNode;
68
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
64 for(Direction<T> parentDirection : path.tail()){
240a385bf79d delete traversalNodewrapper but not change test source(error)
one
parents: 52
diff changeset
65 TreeNodeChildren<T> chs = parentDirection.getTarget().getChildren();
76
2fc0b0313dc0 Move to Bullet in Board
one
parents: 68
diff changeset
66
37
35e327577b58 added transaction
Shoshi TAMAKI
parents: 35
diff changeset
67 Either<Error,T> 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
37
35e327577b58 added transaction
Shoshi TAMAKI
parents: 35
diff changeset
72 T 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
37
35e327577b58 added transaction
Shoshi TAMAKI
parents: 35
diff changeset
77 T newRoot = child;
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 38
diff changeset
78 return DefaultEither.newB(newRoot);
29
53090dc21231 added Commitment
Shoshi TAMAKI
parents: 28
diff changeset
79 }
13
Shoshi TAMAKI
parents: 12
diff changeset
80 }