annotate src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java @ 183:066d9c5758dc

change TreeContext
author tatsuki
date Mon, 23 Mar 2015 15:44:28 +0900
parents e26462a38ce0
children 868a746996ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
2
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
3 import java.util.Iterator;
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
4
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeChildren;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.TreeMapOrd;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
8 import fj.data.Option;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
9 import fj.data.TreeMap;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
10
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
11 public class ParentIndex {
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
12
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
13 private TreeMap<TreeNode, TreeNode> parentIndex;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
14
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
15 public ParentIndex() {
172
809f813d1083 minner change
one
parents: 169
diff changeset
16 parentIndex = TreeMap.empty(TreeMapOrd.treeNodeOrd);
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
17 }
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
18
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
19 public ParentIndex(TreeMap<TreeNode, TreeNode> parentIndex) {
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
20 this.parentIndex = parentIndex;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
21 }
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
22
20af7f25ef32 miner change
one
parents: 151
diff changeset
23 public boolean isEmpty(){
20af7f25ef32 miner change
one
parents: 151
diff changeset
24 return parentIndex.isEmpty();
20af7f25ef32 miner change
one
parents: 151
diff changeset
25 }
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
26
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
27 public ParentIndex(ParentIndex parentIndex) {
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
28 this.parentIndex = parentIndex.getParentIndex();
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
29 }
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
30
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
31 public TreeMap<TreeNode, TreeNode> getParentIndex() {
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
32 return parentIndex;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
33 }
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
34
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
35 public TreeNode get(TreeNode child) {
183
066d9c5758dc change TreeContext
tatsuki
parents: 175
diff changeset
36 TreeNode parent = parentIndex.getLoop(child);
066d9c5758dc change TreeContext
tatsuki
parents: 175
diff changeset
37 if (parent != null)
066d9c5758dc change TreeContext
tatsuki
parents: 175
diff changeset
38 return parent;
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
39 return null;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
40 }
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
41
169
3cd075a445bf create parent index order o(n^2) → log(n)
one
parents: 166
diff changeset
42 public ParentIndex set(TreeNode parent ,TreeNode child) {
3cd075a445bf create parent index order o(n^2) → log(n)
one
parents: 166
diff changeset
43 parentIndex = parentIndex.set(child, parent);
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
44 return this;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
45 }
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
46
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
47 public ParentIndex delete(TreeNode child) {
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
48 parentIndex = parentIndex.delete(child);
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
49 return this;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
50 }
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
51
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
52 public ParentIndex deleteAllChildren(TreeNode parentNode) {
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
53 TreeNodeChildren children = parentNode.getChildren();
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
54 Iterator<TreeNode> childrenIterator = children.iterator();
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
55 for (; childrenIterator.hasNext();) {
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
56 TreeNode child = childrenIterator.next();
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
57 parentIndex = parentIndex.delete(child);
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
58 }
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
59 return this;
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
60 }
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
61
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
62 public ParentIndex addAllChildren(TreeNode parentNode) {
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
63 TreeNodeChildren children = parentNode.getChildren();
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
64 Iterator<TreeNode> childrenIterator = children.iterator();
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
65 for (; childrenIterator.hasNext();) {
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
66 TreeNode child = childrenIterator.next();
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
67 parentIndex = parentIndex.set(child, parentNode);
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
68 }
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
69 return this;
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
70 }
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
71
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
72 }