0
|
1 package example;
|
|
2
|
|
3 import java.nio.ByteBuffer;
|
|
4
|
|
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
|
|
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;
|
1
|
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
|
0
|
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
|
|
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
|
|
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
|
|
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
|
|
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
|
|
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
|
|
16 import junit.framework.Assert;
|
|
17
|
|
18
|
|
19 public class SimpleJungle {
|
|
20
|
|
21 public static final String key = "name";
|
|
22 public static final String valueString = "kanagawa";
|
|
23 public static final ByteBuffer value = ByteBuffer.wrap(valueString.getBytes());
|
|
24
|
|
25 public static void main(String[] args) {
|
|
26 Jungle j = new DefaultJungle(null,"hogehoge",new DefaultTreeEditor(new DefaultTraverser()));
|
3
|
27 j.createNewTree("tree");//木を作った
|
|
28 JungleTree tree = j.getTreeByName("tree");//名前を取得
|
|
29 JungleTreeEditor editor1 = tree.getTreeEditor();//editorの取得
|
|
30 DefaultNodePath root = new DefaultNodePath();//パスの取得
|
0
|
31
|
3
|
32 //eitherに値を入れる
|
0
|
33 Either<Error,JungleTreeEditor> either = editor1.putAttribute(root,key,value);
|
3
|
34 if(either.isA()){//失敗した場合Aが出てくる
|
0
|
35 Assert.fail();
|
|
36 }
|
|
37 editor1 = either.b();
|
|
38 editor1.success();
|
3
|
39 //ここで初めてSUCCESS
|
0
|
40
|
|
41 Node node = tree.getRootNode();
|
|
42 ByteBuffer v = node.getAttributes().get(key);
|
|
43 System.out.println(new String(v.array()));
|
|
44
|
3
|
45 editor1 = tree.getTreeEditor();//Treeのeditorを作成
|
|
46 either = editor1.addNewChildAt(root,0);//新しく入れるところへのパス
|
|
47 if(either.isA()){//ちゃんとパスを指定できたかチェック
|
1
|
48 Assert.fail();
|
|
49 }
|
3
|
50 editor1 = either.b();//成功した場合パスを入れる
|
2
|
51 DefaultNodePath childPath = root.add(0);
|
3
|
52 //そしてここで子ノードに値を入れる
|
|
53 for(int count = 0 ; count < 1000 ; count++){
|
|
54 either = editor1.putAttribute(childPath,key,value);
|
|
55 if(either.isA()){
|
2
|
56 Assert.fail();
|
3
|
57 }
|
|
58 editor1 = either.b();
|
|
59 either = editor1.success();
|
1
|
60 }
|
2
|
61
|
|
62
|
1
|
63 node = tree.getRootNode();
|
|
64 Children<Node> children = node.getChildren();
|
|
65 Either<Error,Node> either2 = children.at(0);
|
|
66 if(either2.isA()){
|
|
67 Assert.fail();
|
|
68 }
|
|
69 Node childNode = either2.b();
|
|
70 ByteBuffer v2 = childNode.getAttributes().get(key);
|
|
71 System.out.println(new String(v2.array()));
|
0
|
72 }
|
|
73 }
|