annotate src/jungle/test/alice/DoubleJungleManager.java @ 58:4851344e120e

fix bug LogUpdateCodeSegment and ChildLogCheckCodeSegment
author one
date Mon, 15 Jul 2013 10:13:34 +0900
parents src/test/alice/jungle/codesegment/DoubleJungleManager.java@686057add8a4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
58
4851344e120e fix bug LogUpdateCodeSegment and ChildLogCheckCodeSegment
one
parents: 47
diff changeset
1 package jungle.test.alice;
35
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
2
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
3 import java.nio.ByteBuffer;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
4
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
5 import alice.jungle.core.NetworkDefaultJungle;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
20
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
21 public class DoubleJungleManager {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
22
47
686057add8a4 confirmed LogUpdateCodeSegment
one
parents: 37
diff changeset
23 static Jungle jungle1 = new NetworkDefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()), "");
686057add8a4 confirmed LogUpdateCodeSegment
one
parents: 37
diff changeset
24 static Jungle jungle2 = new NetworkDefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser()), "");
35
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
25
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
26
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
27 public DoubleJungleManager() {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
28
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
29 }
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
30
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
31 public Jungle getJungle1() {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
32 return jungle1;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
33 }
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
34
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
35 public Jungle getJungle2() {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
36 return jungle2;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
37 }
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
38
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
39
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
40 public Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log) {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
41 JungleTreeEditor editor = _editor;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
42 Either<Error, JungleTreeEditor> either = null;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
43 for (TreeOperation op : _log) {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
44 either = _edit(editor, op);
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
45 if(either.isA()) {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
46 return either;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
47 }
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
48 editor = either.b();
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
49 }
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
50 return either;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
51 }
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
52
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
53 private Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor,
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
54 TreeOperation op) {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
55 NodePath path = op.getNodePath();
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
56 NodeOperation nodeOp = op.getNodeOperation();
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
57 Command c = nodeOp.getCommand();
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
58 String key = "";
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
59 switch (c) {
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
60 case PUT_ATTRIBUTE:
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
61 key = nodeOp.getKey();
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
62 ByteBuffer value = nodeOp.getValue();
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
63 return editor.putAttribute(path, key, value);
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
64 case DELETE_ATTRIBUTE:
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
65 key = nodeOp.getKey();
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
66 return editor.deleteAttribute(path, key);
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
67 case APPEND_CHILD:
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
68 return editor.addNewChildAt(path, 0);
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
69 case DELETE_CHILD:
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
70 return editor.deleteChildAt(path, 0);
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
71 }
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
72 return null;
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
73 }
054dc02c117d add test.alice.jungle.codesegment
one
parents:
diff changeset
74 }