Mercurial > hg > Members > nobuyasu > jungle-network
comparison src/test/alice/jungle/codesegment/DoubleJungleManager.java @ 35:054dc02c117d
add test.alice.jungle.codesegment
author | one |
---|---|
date | Tue, 02 Jul 2013 17:49:23 +0900 |
parents | |
children | ed4c2e6ab5d1 |
comparison
equal
deleted
inserted
replaced
34:bf696a6334b2 | 35:054dc02c117d |
---|---|
1 package test.alice.jungle.codesegment; | |
2 | |
3 import java.nio.ByteBuffer; | |
4 | |
5 import alice.jungle.core.NetworkDefaultJungle; | |
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command; | |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation; | |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; | |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; | |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | |
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 | |
21 public class DoubleJungleManager { | |
22 | |
23 static Jungle jungle1 = new NetworkDefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); | |
24 static Jungle jungle2 = new NetworkDefaultJungle(null, "hoge", new DefaultTreeEditor(new DefaultTraverser())); | |
25 | |
26 | |
27 public DoubleJungleManager() { | |
28 | |
29 } | |
30 | |
31 public Jungle getJungle1() { | |
32 return jungle1; | |
33 } | |
34 | |
35 public Jungle getJungle2() { | |
36 return jungle2; | |
37 } | |
38 | |
39 | |
40 public Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log) { | |
41 JungleTreeEditor editor = _editor; | |
42 Either<Error, JungleTreeEditor> either = null; | |
43 for (TreeOperation op : _log) { | |
44 either = _edit(editor, op); | |
45 if(either.isA()) { | |
46 return either; | |
47 } | |
48 editor = either.b(); | |
49 } | |
50 return either; | |
51 } | |
52 | |
53 private Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor, | |
54 TreeOperation op) { | |
55 NodePath path = op.getNodePath(); | |
56 NodeOperation nodeOp = op.getNodeOperation(); | |
57 Command c = nodeOp.getCommand(); | |
58 String str = ""; | |
59 String key = ""; | |
60 switch (c) { | |
61 case PUT_ATTRIBUTE: | |
62 key = nodeOp.getKey(); | |
63 ByteBuffer value = nodeOp.getValue(); | |
64 if (value.limit() < 100) { | |
65 str = String.format("key:%s,value:%s", key, | |
66 new String(value.array())); | |
67 } else { | |
68 str = String.format("key:%s,value:%d", key, value.limit()); | |
69 } | |
70 return editor.putAttribute(path, key, value); | |
71 case DELETE_ATTRIBUTE: | |
72 key = nodeOp.getKey(); | |
73 str = String.format("key:%s", nodeOp.getKey()); | |
74 return editor.deleteAttribute(path, key); | |
75 case APPEND_CHILD: | |
76 str = String.format("pos:%d", nodeOp.getPosition()); | |
77 return editor.addNewChildAt(path, 0); | |
78 case DELETE_CHILD: | |
79 str = String.format("pos:%d", nodeOp.getPosition()); | |
80 return editor.deleteChildAt(path, 0); | |
81 } | |
82 return null; | |
83 } | |
84 } |