annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java @ 132:ba5370090393

index commit Prototype
author one
date Sun, 19 Oct 2014 09:15:38 +0900
parents 1c3c3300716c
children f46a6e0e4594
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle;
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
2
132
ba5370090393 index commit Prototype
one
parents: 131
diff changeset
3 import java.util.concurrent.atomic.AtomicReference;
ba5370090393 index commit Prototype
one
parents: 131
diff changeset
4
127
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
5 import org.omg.CORBA.TCKind;
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
6
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
7 import fj.data.List;
100
9a7b7af838e0 add index TreeNodeEditor
one
parents: 86
diff changeset
8 import fj.data.TreeMap;
127
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 48
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 48
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
127
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference;
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor;
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTransactionManager;
117
74723b26ad96 add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
one
parents: 111
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor;
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 48
diff changeset
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
100
9a7b7af838e0 add index TreeNodeEditor
one
parents: 86
diff changeset
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
23
82
a4e2f1d45fdc Merge with e97a59269bf586777ca30668c96fc8e927277501
one
parents: 81 73
diff changeset
24
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 82
diff changeset
25 public class DefaultJungleTree implements JungleTree
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
26 {
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 82
diff changeset
27 private final AtomicReservableReference<TreeContext> repository;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
28 private final String uuid;
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
29 private final ChangeListWriter writer;
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 48
diff changeset
30 private final TreeEditor editor;
103
bed3afd5c2e2 add Index but Not use
one
parents: 101
diff changeset
31
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
32 public DefaultJungleTree(TreeContext tc,String uuid,ChangeListWriter writer,TreeEditor editor)
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
33 {
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
34 this.repository = new AtomicReservableReference<TreeContext>(tc);
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
35 this.uuid = uuid;
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
36 this.writer = writer;
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
37 this.editor = editor;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
38 }
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
39
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
40 @Override
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 48
diff changeset
41 public JungleTreeEditor getTreeEditor()
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
42 {
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 82
diff changeset
43 TreeContext tc = repository.get();
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 82
diff changeset
44 DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid);
81
715a9fbf02fc remove <T> many source
one
parents: 77
diff changeset
45 TreeNode root = tc.getTreeNode();
103
bed3afd5c2e2 add Index but Not use
one
parents: 101
diff changeset
46 return new DefaultJungleTreeEditor(root,txManager,editor);
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
47 }
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
48
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
49 @Override
126
f81ec544a155 add index push but bad compete
one
parents: 124
diff changeset
50 public IndexJungleTreeEditor getIndexTreeEditor()
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
51 {
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
52 TreeContext tc = repository.get();
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
53 DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid);
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
54 TreeNode root = tc.getTreeNode();
117
74723b26ad96 add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
one
parents: 111
diff changeset
55 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = getIndex();
74723b26ad96 add IndexJungleTreeEditr and remove DefaultJungleIndexTreeEditor
one
parents: 111
diff changeset
56 return new IndexJungleTreeEditor(root,txManager,editor,newIndex);
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
57 }
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
58
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
59
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
60 @Override
61
dcaaecaed9ee Modified getLocalTreeEditor
one
parents: 54
diff changeset
61 public JungleTreeEditor getLocalTreeEditor()
dcaaecaed9ee Modified getLocalTreeEditor
one
parents: 54
diff changeset
62 {
dcaaecaed9ee Modified getLocalTreeEditor
one
parents: 54
diff changeset
63 return getTreeEditor();
dcaaecaed9ee Modified getLocalTreeEditor
one
parents: 54
diff changeset
64 }
dcaaecaed9ee Modified getLocalTreeEditor
one
parents: 54
diff changeset
65
dcaaecaed9ee Modified getLocalTreeEditor
one
parents: 54
diff changeset
66 @Override
81
715a9fbf02fc remove <T> many source
one
parents: 77
diff changeset
67 public TreeNode getRootNode()
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
68 {
86
fb1dc448ac8c delete <T extends TreeNode>
one
parents: 82
diff changeset
69 TreeContext tc = repository.get();
81
715a9fbf02fc remove <T> many source
one
parents: 77
diff changeset
70 ChangeSet cs = tc.getChangeSet();
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 48
diff changeset
71 return cs.getRoot();
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
72 }
100
9a7b7af838e0 add index TreeNodeEditor
one
parents: 86
diff changeset
73
9a7b7af838e0 add index TreeNodeEditor
one
parents: 86
diff changeset
74 @Override
9a7b7af838e0 add index TreeNodeEditor
one
parents: 86
diff changeset
75 public InterfaceTraverser getTraverser() {
132
ba5370090393 index commit Prototype
one
parents: 131
diff changeset
76 AtomicReservableReference<TreeContext>.Reservation reservation = repository.getReservation();
ba5370090393 index commit Prototype
one
parents: 131
diff changeset
77 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index = getIndex();
124
75ba2f2d6ea3 searchQueryTest add index
one
parents: 117
diff changeset
78 if (index != null)
132
ba5370090393 index commit Prototype
one
parents: 131
diff changeset
79 return new InterfaceTraverser(getRootNode(), index, reservation);
ba5370090393 index commit Prototype
one
parents: 131
diff changeset
80 return new InterfaceTraverser(getRootNode(),reservation);
101
c297f0015d9e create Update query
one
parents: 100
diff changeset
81 }
c297f0015d9e create Update query
one
parents: 100
diff changeset
82
c297f0015d9e create Update query
one
parents: 100
diff changeset
83 @Override
111
5df5505e1c1e change Index type
one
parents: 110
diff changeset
84 public TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> getIndex() {
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
85 TreeContext tc = repository.get();
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
86 ChangeSet cs = tc.getChangeSet();
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
87 return cs.getIndex();
100
9a7b7af838e0 add index TreeNodeEditor
one
parents: 86
diff changeset
88 }
127
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
89
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
90 @Override
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
91 public int getLogSize(){
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
92 TreeContext tc = repository.get();
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
93 ChangeSet cs = tc.getChangeSet();
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
94 ChangeList cl = cs.getChangeList();
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
95 return cl.getLogSize();
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
96 }
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
97
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
98 @Override
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
99 public Iterable<TreeOperation> getLog() {
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
100 TreeContext tc = repository.get();
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
101 ChangeSet cs = tc.getChangeSet();
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
102 return cs.getOperations();
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
103 }
b2c1fd513feb push index thread add read log
one
parents: 126
diff changeset
104
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents:
diff changeset
105 }