comparison src/jungle/test/codesegment/practice/TestPutAttributeCodeSegment.java @ 18:2f1132767af2

implemented TestPutATtributeCodeSegment
author one
date Fri, 28 Jun 2013 19:32:52 +0900
parents c767e7af4d88
children 08e283ede7c9
comparison
equal deleted inserted replaced
17:c767e7af4d88 18:2f1132767af2
1 package jungle.test.codesegment.practice; 1 package jungle.test.codesegment.practice;
2
3 import java.io.IOException;
4 import java.nio.ByteBuffer;
5
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation;
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
20 import jungle.test.datasegment.store.operations.DefaultTreeOperationContainer;
21 import jungle.test.datasegment.store.operations.DefaultTreeOperationLogContainer;
22 import jungle.test.transaction.NetworkDefaultJungleTreeEditor;
2 23
3 import org.msgpack.type.Value; 24 import org.msgpack.type.Value;
4 25
5 import alice.codesegment.CodeSegment; 26 import alice.codesegment.CodeSegment;
6 import alice.datasegment.CommandType; 27 import alice.datasegment.CommandType;
14 arg1.setKey("log"); 35 arg1.setKey("log");
15 } 36 }
16 37
17 38
18 public void run() { 39 public void run() {
40
41
19 System.out.println("type = " + arg1.type); 42 System.out.println("type = " + arg1.type);
20 System.out.println("index = " + arg1.index); 43 System.out.println("index = " + arg1.index);
21 System.out.println("data = " + arg1.getVal()); 44 System.out.println("data = " + arg1.getVal());
22 System.out.println(((Value)arg1.getVal()).getType()); 45 System.out.println(((Value)arg1.getVal()).getType());
23 46
47 DefaultTreeOperationContainer convertedOpContainer = arg1.asClass(DefaultTreeOperationContainer.class);
48 TreeOperation convertedOp = null;
49 try {
50 convertedOp = convertedOpContainer.convert();
51 } catch (IOException e) {
52 e.printStackTrace();
53 }
24 54
25 55 Jungle jungle = new JungleManager().getJungle();
56 JungleTree tree = jungle.getTreeByName("tree");
57 NetworkDefaultJungleTreeEditor editor = (NetworkDefaultJungleTreeEditor) tree.getTreeEditor();
58 edit(editor, convertedOp);
59 editor.success();
26 60
27 61
28 } 62 }
29 63
64 public DefaultTreeOperation getSampleOperation() {
65 /* Create TreeOperation */
66 String key = "hoge";
67 ByteBuffer b = ByteBuffer.wrap("messagepack value".getBytes());
68 PutAttributeOperation op = new PutAttributeOperation(key, b);
69 DefaultNodePath p = new DefaultNodePath();
70 p = p.add(1);
71 DefaultTreeOperation treeOp = new DefaultTreeOperation(p, op);
72 return treeOp;
73 }
74
75 public void edit(JungleTreeEditor editor, TreeOperation op) {
76 NodePath path = op.getNodePath();
77 NodeOperation nodeOp = op.getNodeOperation();
78 Command c = nodeOp.getCommand();
79 String str = "";
80 String key = "";
81 switch (c) {
82 case PUT_ATTRIBUTE:
83 key = nodeOp.getKey();
84 ByteBuffer value = nodeOp.getValue();
85 if (value.limit() < 100) {
86 str = String.format("key:%s,value:%s", key,
87 new String(value.array()));
88 } else {
89 str = String.format("key:%s,value:%d", key, value.limit());
90 }
91 editor.putAttribute(path, key, value);
92 break;
93 case DELETE_ATTRIBUTE:
94 key = nodeOp.getKey();
95 str = String.format("key:%s", nodeOp.getKey());
96 editor.deleteAttribute(path, key);
97 break;
98 case APPEND_CHILD:
99 str = String.format("pos:%d", nodeOp.getPosition());
100 editor.addNewChildAt(path, 0);
101 break;
102 case DELETE_CHILD:
103 str = String.format("pos:%d", nodeOp.getPosition());
104 editor.deleteChildAt(path, 0);
105 break;
106 }
107 System.out.println(String.format("[%s:%s]", c, str));
108 System.out.println("path:");
109 for (int i: path ) {
110 System.out.println(i);
111 }
112 }
30 } 113 }