127
|
1 package ip.ac.u_ryukyu.ie.cr.tatsuki.jungle.index;
|
|
2
|
|
3 import java.util.Iterator;
|
|
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;
|
|
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.TreeNode;
|
|
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
|
132
|
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor;
|
127
|
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
|
|
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
|
|
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
|
|
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
|
|
19 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexPushThread;
|
|
20 import junit.framework.Assert;
|
|
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
|
|
22
|
|
23 import java.nio.ByteBuffer;
|
|
24
|
132
|
25 import javax.swing.tree.DefaultTreeCellEditor.EditorContainer;
|
|
26
|
127
|
27 import org.junit.Test;
|
|
28 import org.junit.experimental.theories.suppliers.TestedOn;
|
|
29
|
|
30 import fj.data.List;
|
|
31 import fj.data.Option;
|
|
32 import fj.data.TreeMap;
|
|
33
|
|
34 public class IndexCommitTest {
|
|
35
|
|
36 @Test
|
|
37 public void IndexCommitTest() throws InterruptedException {
|
|
38
|
|
39 Jungle jungle = new DefaultJungle(null, "hogehoge",
|
|
40 new DefaultTreeEditor(new DefaultTraverser()));
|
|
41 jungle.createNewTree("tree");
|
|
42 JungleTree tree = jungle.getTreeByName("tree");
|
|
43 createTree(tree);
|
|
44 tree.getRootNode();
|
|
45 InterfaceTraverser ifTraverser = tree.getTraverser();
|
|
46
|
132
|
47 ifTraverser.find((TreeNode node) -> {
|
127
|
48 ByteBuffer attribute = node.getAttributes().get(key);
|
|
49 if (attribute != null) {
|
|
50 byte[] byteAttribute = attribute.array();
|
|
51 String str = new String(byteAttribute);
|
|
52 System.out.println("attribute = " + str);
|
|
53 return str.equals("<-1,0,1>");
|
|
54 }
|
|
55 return false;
|
|
56 }, key, "<-1,0,1>");
|
|
57
|
|
58 //check index
|
|
59 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index = ifTraverser.getIndex();
|
|
60 Option<TreeMap<String, List<Pair<TreeNode, NodePath>>>> opIndex = index.get(key);
|
|
61 Assert.assertTrue(!opIndex.isNone());
|
|
62 TreeMap<String, List<Pair<TreeNode, NodePath>>> innerIndex = opIndex.some();
|
|
63 Assert.assertTrue(!innerIndex.get("<-1,0,0>").isNone());
|
|
64
|
132
|
65 JungleTreeEditor editor = tree.getTreeEditor();
|
|
66 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(new DefaultNodePath(), 0);
|
|
67 editor = either.b();
|
|
68 editor.success();
|
|
69
|
|
70 ifTraverser.commitIndex();
|
127
|
71 JungleTree newTree = jungle.getTreeByName("tree");
|
|
72 InterfaceTraverser newIfTraverser = newTree.getTraverser();
|
|
73 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = newIfTraverser.getIndex();
|
132
|
74 Assert.assertTrue(newIndex.isEmpty());
|
|
75
|
|
76
|
127
|
77
|
|
78 }
|
|
79
|
|
80 public boolean compare(TreeNode compareNode, String compareAttribute) {
|
|
81 String labName = compareNode.getAttributes().getString(key);
|
|
82 if (labName.equals(compareAttribute))
|
|
83 return true;
|
|
84 return false;
|
|
85 }
|
|
86
|
|
87 public static String key = "KEY";
|
|
88 public static DefaultTreeNode factory = new DefaultTreeNode();
|
|
89
|
|
90 public void createTree(JungleTree tree) {
|
|
91 NodePath root = new DefaultNodePath();
|
|
92 createChildren(tree, root, 0);
|
|
93
|
|
94 for (int x = 0; x < 2; x++) {
|
|
95 createChildren(tree, root.add(0), x);
|
|
96 for (int y = 0; y < 2; y++) {
|
|
97 createChildren(tree, root.add(0).add(x), y);
|
|
98 }
|
|
99 }
|
|
100
|
|
101 }
|
|
102
|
|
103 public void createChildren(JungleTree tree, NodePath root, int num) {
|
|
104 JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成
|
|
105 Either<Error, JungleTreeEditor> either = editor
|
|
106 .addNewChildAt(root, num); // 新しく入れるところへのパス
|
|
107 if (either.isA()) {
|
|
108 Assert.fail();
|
|
109 }
|
|
110 editor = either.b();
|
|
111 either = editor.success();
|
|
112 if (either.isA()) {
|
|
113 Assert.fail();
|
|
114 }
|
|
115 NodePath childPath = root.add(num);
|
|
116 editor = tree.getTreeEditor();
|
|
117 NodePath attribute = root.add(num);
|
|
118 System.out.println(attribute.toString());
|
|
119 either = editor.putAttribute(childPath, key,
|
|
120 ByteBuffer.wrap(attribute.toString().getBytes()));
|
|
121 if (either.isA()) {
|
|
122 Assert.fail();
|
|
123 }
|
|
124 editor = either.b();
|
|
125 either = editor.success();
|
|
126 }
|
|
127 }
|