Mercurial > hg > Database > jungle-network
comparison src/jungle/test/bbs/JungleManager.java @ 39:10359a815068
add alice.jungle.codesegment.remote
author | one |
---|---|
date | Tue, 09 Jul 2013 15:10:06 +0900 |
parents | src/jungle/test/codesegment/operation/JungleManager.java@190f6a3bdab2 |
children | 4419ac56cbfd |
comparison
equal
deleted
inserted
replaced
38:d8ee57a1c2c6 | 39:10359a815068 |
---|---|
1 package jungle.test.bbs; | |
2 | |
3 import java.nio.ByteBuffer; | |
4 | |
5 import alice.jungle.core.NetworkDefaultJungle; | |
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; | |
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | |
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | |
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command; | |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | |
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.NodeOperation; | |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
19 | |
20 public class JungleManager { | |
21 static Jungle jungle = new NetworkDefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser())); | |
22 | |
23 public JungleManager() { | |
24 | |
25 } | |
26 | |
27 public Jungle getJungle() { | |
28 return jungle; | |
29 } | |
30 | |
31 public JungleTree createNewTree(String name) { | |
32 return jungle.createNewTree(name); | |
33 } | |
34 | |
35 | |
36 public Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log) { | |
37 JungleTreeEditor editor = _editor; | |
38 Either<Error, JungleTreeEditor> either = null; | |
39 for (TreeOperation op : _log) { | |
40 either = _edit(editor, op); | |
41 if(either.isA()) { | |
42 return either; | |
43 } | |
44 editor = either.b(); | |
45 } | |
46 return either; | |
47 } | |
48 | |
49 private Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor, | |
50 TreeOperation op) { | |
51 NodePath path = op.getNodePath(); | |
52 NodeOperation nodeOp = op.getNodeOperation(); | |
53 Command c = nodeOp.getCommand(); | |
54 String key = ""; | |
55 switch (c) { | |
56 case PUT_ATTRIBUTE: | |
57 key = nodeOp.getKey(); | |
58 ByteBuffer value = nodeOp.getValue(); | |
59 return editor.putAttribute(path, key, value); | |
60 case DELETE_ATTRIBUTE: | |
61 key = nodeOp.getKey(); | |
62 return editor.deleteAttribute(path, key); | |
63 case APPEND_CHILD: | |
64 return editor.addNewChildAt(path, 0); | |
65 case DELETE_CHILD: | |
66 return editor.deleteChildAt(path, 0); | |
67 } | |
68 return null; | |
69 } | |
70 } |