annotate src/treecms/memory/OnMemoryMonotonicTree.java @ 26:9cb971a68cc5

added CachedForest.java
author Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
date Mon, 18 Jul 2011 20:22:53 +0900
parents c1e7ec6b3d44
children aecc55e87143
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
shoshi
parents:
diff changeset
1 package treecms.memory;
21
shoshi
parents: 17
diff changeset
2
11
shoshi
parents:
diff changeset
3 import treecms.api.MonotonicTree;
15
misaka
parents: 11
diff changeset
4 import treecms.api.MonotonicTreeNode;
26
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
5 import treecms.api.Node;
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
6 import treecms.tree.id.NodeIDProvider;
11
shoshi
parents:
diff changeset
7
shoshi
parents:
diff changeset
8 public class OnMemoryMonotonicTree implements MonotonicTree
shoshi
parents:
diff changeset
9 {
22
shoshi
parents: 21
diff changeset
10 private final OnMemoryMonotonicTree m_tree;
26
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
11 private volatile OnMemoryMonotonicTreeNode m_root;
21
shoshi
parents: 17
diff changeset
12
26
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
13 private OnMemoryMonotonicTree(NodeIDProvider _provider,OnMemoryMonotonicTree _tree)
11
shoshi
parents:
diff changeset
14 {
22
shoshi
parents: 21
diff changeset
15 m_tree = _tree;
26
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
16 m_root = new OnMemoryMonotonicTreeNode(new OnMemoryNode(_provider.create(),null),null);
21
shoshi
parents: 17
diff changeset
17 }
shoshi
parents: 17
diff changeset
18
26
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
19 public static OnMemoryMonotonicTree createInstance(NodeIDProvider _provider,OnMemoryMonotonicTree _tree)
22
shoshi
parents: 21
diff changeset
20 {
26
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
21 OnMemoryMonotonicTree tree = new OnMemoryMonotonicTree(_provider,_tree);
22
shoshi
parents: 21
diff changeset
22 return tree;
shoshi
parents: 21
diff changeset
23 }
shoshi
parents: 21
diff changeset
24
shoshi
parents: 21
diff changeset
25 public OnMemoryNode get(String _fid)
21
shoshi
parents: 17
diff changeset
26 {
26
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
27 return (OnMemoryNode)search(_fid,m_root.getNode());
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
28 }
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
29
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
30 private Node search(String _fid,Node _node)
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
31 {
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
32 if(_node.getID().getFamilyID().equals(_fid)){
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
33 return _node;
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
34 }
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
35
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
36 for(Node child : _node.getList()){
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
37 Node ret = search(_fid,child);
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
38 if(ret != null){
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
39 return ret;
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
40 }
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
41 }
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
42
9cb971a68cc5 added CachedForest.java
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
43 return null;
22
shoshi
parents: 21
diff changeset
44 }
shoshi
parents: 21
diff changeset
45
11
shoshi
parents:
diff changeset
46 @Override
shoshi
parents:
diff changeset
47 public boolean commit(boolean _force)
shoshi
parents:
diff changeset
48 {
22
shoshi
parents: 21
diff changeset
49 if(m_tree == null){
shoshi
parents: 21
diff changeset
50 return true;
shoshi
parents: 21
diff changeset
51 }
shoshi
parents: 21
diff changeset
52
21
shoshi
parents: 17
diff changeset
53 return true;
11
shoshi
parents:
diff changeset
54 }
shoshi
parents:
diff changeset
55
shoshi
parents:
diff changeset
56 @Override
shoshi
parents:
diff changeset
57 public boolean pull()
shoshi
parents:
diff changeset
58 {
16
shoshi
parents: 15
diff changeset
59 return true;
11
shoshi
parents:
diff changeset
60 }
shoshi
parents:
diff changeset
61
shoshi
parents:
diff changeset
62 @Override
shoshi
parents:
diff changeset
63 public boolean check()
shoshi
parents:
diff changeset
64 {
23
shoshi
parents: 22
diff changeset
65 if(m_tree != null){
shoshi
parents: 22
diff changeset
66
shoshi
parents: 22
diff changeset
67 }
22
shoshi
parents: 21
diff changeset
68 return m_tree.getRoot().getNode().equals(m_root.getNode());
11
shoshi
parents:
diff changeset
69 }
shoshi
parents:
diff changeset
70
shoshi
parents:
diff changeset
71 @Override
15
misaka
parents: 11
diff changeset
72 public void merge()
misaka
parents: 11
diff changeset
73 {
11
shoshi
parents:
diff changeset
74 }
shoshi
parents:
diff changeset
75
shoshi
parents:
diff changeset
76 @Override
15
misaka
parents: 11
diff changeset
77 public MonotonicTreeNode getRoot()
misaka
parents: 11
diff changeset
78 {
21
shoshi
parents: 17
diff changeset
79 return m_root;
11
shoshi
parents:
diff changeset
80 }
shoshi
parents:
diff changeset
81 }