annotate src/jungle/test/bbs/JungleManager.java @ 56:ccfe9b5e8f11

bug LogUpdateCodeSegment
author one
date Sun, 14 Jul 2013 21:26:49 +0900
parents bf3dc481cc9b
children 8a532ca5df80
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
39
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
1 package jungle.test.bbs;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
2
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
3 import java.nio.ByteBuffer;
15
bf4a7f899c4e add some files
one
parents:
diff changeset
4
31
190f6a3bdab2 rename some packages
one
parents: 27
diff changeset
5 import alice.jungle.core.NetworkDefaultJungle;
20
506388c02b4b fix using edit method
one
parents: 18
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
15
bf4a7f899c4e add some files
one
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
bf4a7f899c4e add some files
one
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
39
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
56
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
15
bf4a7f899c4e add some files
one
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
39
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
15
bf4a7f899c4e add some files
one
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
39
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
15
bf4a7f899c4e add some files
one
parents:
diff changeset
20
bf4a7f899c4e add some files
one
parents:
diff changeset
21 public class JungleManager {
45
bf3dc481cc9b modified JungleManager to singleton
one
parents: 43
diff changeset
22 private static JungleManager jm = new JungleManager();
43
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
23 private Jungle jungle;
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
24
45
bf3dc481cc9b modified JungleManager to singleton
one
parents: 43
diff changeset
25 private JungleManager() {
15
bf4a7f899c4e add some files
one
parents:
diff changeset
26
bf4a7f899c4e add some files
one
parents:
diff changeset
27 }
bf4a7f899c4e add some files
one
parents:
diff changeset
28
45
bf3dc481cc9b modified JungleManager to singleton
one
parents: 43
diff changeset
29 public static void setJungle(Jungle _j) {
bf3dc481cc9b modified JungleManager to singleton
one
parents: 43
diff changeset
30 jm.jungle = _j;
15
bf4a7f899c4e add some files
one
parents:
diff changeset
31 }
bf4a7f899c4e add some files
one
parents:
diff changeset
32
43
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
33 public static Jungle getJungle() {
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
34 return jm.jungle;
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
35 }
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
36
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
37 public static JungleTree createNewTree(String name) {
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
38 return jm.jungle.createNewTree(name);
15
bf4a7f899c4e add some files
one
parents:
diff changeset
39 }
bf4a7f899c4e add some files
one
parents:
diff changeset
40
bf4a7f899c4e add some files
one
parents:
diff changeset
41
43
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
42 public static Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log) {
39
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
43 JungleTreeEditor editor = _editor;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
44 Either<Error, JungleTreeEditor> either = null;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
45 for (TreeOperation op : _log) {
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
46 either = _edit(editor, op);
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
47 if(either.isA()) {
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
48 return either;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
49 }
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
50 editor = either.b();
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
51 }
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
52 return either;
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
53 }
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
54
43
12d87bb4b84d modified LogUpdateCodeSegment
one
parents: 42
diff changeset
55 private static Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor,
39
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
56 TreeOperation op) {
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
57 NodePath path = op.getNodePath();
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
58 NodeOperation nodeOp = op.getNodeOperation();
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
59 Command c = nodeOp.getCommand();
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
60 String key = "";
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
61 switch (c) {
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
62 case PUT_ATTRIBUTE:
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
63 key = nodeOp.getKey();
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
64 ByteBuffer value = nodeOp.getValue();
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
65 return editor.putAttribute(path, key, value);
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
66 case DELETE_ATTRIBUTE:
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
67 key = nodeOp.getKey();
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
68 return editor.deleteAttribute(path, key);
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
69 case APPEND_CHILD:
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
70 return editor.addNewChildAt(path, 0);
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
71 case DELETE_CHILD:
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
72 return editor.deleteChildAt(path, 0);
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
73 }
10359a815068 add alice.jungle.codesegment.remote
one
parents: 31
diff changeset
74 return null;
56
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
75 }
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
76
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
77
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
78 public static Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log, int pos) {
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
79 System.out.println("--path editor--");
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
80 JungleTreeEditor editor = _editor;
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
81 Either<Error, JungleTreeEditor> either = null;
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
82 for (TreeOperation op : _log) {
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
83 either = _edit(editor, op, pos);
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
84 if(either.isA()) {
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
85 return either;
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
86 }
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
87 editor = either.b();
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
88 }
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
89 return either;
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
90 }
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
91
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
92 private static Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor,
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
93 TreeOperation op, int pos) {
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
94 DefaultNodePath path = new DefaultNodePath();
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
95 NodeOperation nodeOp = op.getNodeOperation();
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
96 Command c = nodeOp.getCommand();
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
97 String key = "";
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
98 switch (c) {
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
99 case PUT_ATTRIBUTE:
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
100 path = path.add(pos);
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
101 key = nodeOp.getKey();
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
102 ByteBuffer value = nodeOp.getValue();
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
103 return editor.putAttribute(path, key, value);
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
104 case DELETE_ATTRIBUTE:
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
105 key = nodeOp.getKey();
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
106 return editor.deleteAttribute(path, key);
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
107 case APPEND_CHILD:
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
108 return editor.addNewChildAt(path, pos);
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
109 case DELETE_CHILD:
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
110 return editor.deleteChildAt(path, 0);
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
111 }
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
112 return null;
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
113 }
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
114
ccfe9b5e8f11 bug LogUpdateCodeSegment
one
parents: 45
diff changeset
115
15
bf4a7f899c4e add some files
one
parents:
diff changeset
116 }