annotate src/jungle/test/core/practice/LogReadCodeSegment.java @ 66:29127ac788a6

move some files
author one
date Tue, 20 Aug 2013 17:38:09 +0900
parents 686057add8a4
children 87ec5dd0dc27
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
1 package jungle.test.core.practice;
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
2
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
3 import java.io.IOException;
29
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
4 import java.nio.ByteBuffer;
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
5
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
29
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
30
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
29
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
66
29127ac788a6 move some files
one
parents: 47
diff changeset
17 import jungle.app.bbs.JungleManager;
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
18 import alice.codesegment.CodeSegment;
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
19 import alice.datasegment.CommandType;
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
20 import alice.datasegment.Receiver;
31
190f6a3bdab2 rename some packages
one
parents: 30
diff changeset
21 import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer;
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
22
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
23 public class LogReadCodeSegment extends CodeSegment {
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
24
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
25 Receiver arg1 = ids.create(CommandType.TAKE);
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
26
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
27 public LogReadCodeSegment() {
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
28 arg1.setKey("log");
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
29 }
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
30
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
31 public void run() {
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
32 System.out.println("--LogReadCodeSegment--");
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
33
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
34 DefaultTreeOperationLogContainer container = arg1.asClass(DefaultTreeOperationLogContainer.class);
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
35 DefaultTreeOperationLog log = null;
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
36 try {
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
37 log = container.convert();
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
38 } catch (IOException e) {
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
39 e.printStackTrace();
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
40 }
47
686057add8a4 confirmed LogUpdateCodeSegment
one
parents: 39
diff changeset
41 Jungle jungle = JungleManager.getJungle();
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
42 JungleTree tree = jungle.getTreeByName("tree");
29
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
43 JungleTreeEditor editor = tree.getTreeEditor();
30
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
44 Either<Error, JungleTreeEditor> either = edit(editor, log);
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
45 if (either.isA()) {
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
46 throw new IllegalStateException();
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
47 }
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
48 editor = either.b();
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
49 editor.success();
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
50 new PrintChildrenAttribute("key1");
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
51 ods.update("key1", "key1");
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
52 }
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
53
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
54 private Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log) {
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
55 JungleTreeEditor editor = _editor;
29
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
56 Either<Error, JungleTreeEditor> either = null;
30
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
57 for (TreeOperation op : _log) {
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
58 either = _edit(editor, op);
29
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
59 if(either.isA()) {
30
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
60 return either;
29
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
61 }
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
62 editor = either.b();
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
63 }
30
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
64 return either;
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
65 }
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
66
30
8593c2525aa7 add NeworkTransactionManager
one
parents: 29
diff changeset
67 private Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor,
29
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
68 TreeOperation op) {
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
69 NodePath path = op.getNodePath();
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
70 NodeOperation nodeOp = op.getNodeOperation();
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
71 Command c = nodeOp.getCommand();
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
72 String str = "";
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
73 String key = "";
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
74 switch (c) {
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
75 case PUT_ATTRIBUTE:
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
76 key = nodeOp.getKey();
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
77 ByteBuffer value = nodeOp.getValue();
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
78 if (value.limit() < 100) {
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
79 str = String.format("key:%s,value:%s", key,
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
80 new String(value.array()));
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
81 } else {
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
82 str = String.format("key:%s,value:%d", key, value.limit());
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
83 }
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
84 return editor.putAttribute(path, key, value);
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
85 case DELETE_ATTRIBUTE:
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
86 key = nodeOp.getKey();
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
87 str = String.format("key:%s", nodeOp.getKey());
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
88 return editor.deleteAttribute(path, key);
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
89 case APPEND_CHILD:
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
90 str = String.format("pos:%d", nodeOp.getPosition());
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
91 return editor.addNewChildAt(path, 0);
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
92 case DELETE_CHILD:
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
93 str = String.format("pos:%d", nodeOp.getPosition());
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
94 return editor.deleteChildAt(path, 0);
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
95 }
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
96 return null;
16ea4835f36e modified LogReadCodeSegment
one
parents: 28
diff changeset
97 }
28
e968224ad0ce add jungle.test.core.practice
one
parents:
diff changeset
98 }