annotate src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java @ 172:809f813d1083

minner change
author one
date Tue, 10 Feb 2015 11:28:39 +0900
parents 3cd075a445bf
children f26535302c96
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;
166
6615db346bf5 miner change
one
parents: 158
diff changeset
8 import fj.Ord;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
9 import fj.data.Option;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
10 import fj.data.TreeMap;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
11
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
12 public class ParentIndex {
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
13
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
14 private TreeMap<TreeNode, TreeNode> parentIndex;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
15
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
16 public ParentIndex() {
172
809f813d1083 minner change
one
parents: 169
diff changeset
17 System.out.println(System.getProperty("java.version"));
809f813d1083 minner change
one
parents: 169
diff changeset
18 parentIndex = TreeMap.empty(TreeMapOrd.treeNodeOrd);
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
19 }
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
20
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
21 public ParentIndex(TreeMap<TreeNode, TreeNode> parentIndex) {
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
22 this.parentIndex = parentIndex;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
23 }
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
24
20af7f25ef32 miner change
one
parents: 151
diff changeset
25 public boolean isEmpty(){
20af7f25ef32 miner change
one
parents: 151
diff changeset
26 return parentIndex.isEmpty();
20af7f25ef32 miner change
one
parents: 151
diff changeset
27 }
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
28
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
29 public ParentIndex(ParentIndex parentIndex) {
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
30 this.parentIndex = parentIndex.getParentIndex();
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
31 }
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
32
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
33 public TreeMap<TreeNode, TreeNode> getParentIndex() {
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
34 return parentIndex;
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
35 }
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
36
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
37 public TreeNode get(TreeNode child) {
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
38 Option<TreeNode> parentOp = parentIndex.get(child);
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
39 if (parentOp.isSome())
20af7f25ef32 miner change
one
parents: 151
diff changeset
40 return parentOp.some();
20af7f25ef32 miner change
one
parents: 151
diff changeset
41 return null;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
42 }
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
43
169
3cd075a445bf create parent index order o(n^2) → log(n)
one
parents: 166
diff changeset
44 public ParentIndex set(TreeNode parent ,TreeNode child) {
3cd075a445bf create parent index order o(n^2) → log(n)
one
parents: 166
diff changeset
45 parentIndex = parentIndex.set(child, parent);
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
46 return this;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
47 }
153
20af7f25ef32 miner change
one
parents: 151
diff changeset
48
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
49 public ParentIndex delete(TreeNode child) {
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
50 parentIndex = parentIndex.delete(child);
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
51 return this;
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
52 }
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
53
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
54 public ParentIndex deleteAllChildren(TreeNode parentNode) {
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
55 TreeNodeChildren children = parentNode.getChildren();
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
56 Iterator<TreeNode> childrenIterator = children.iterator();
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
57 for (; childrenIterator.hasNext();) {
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
58 TreeNode child = childrenIterator.next();
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
59 parentIndex = parentIndex.delete(child);
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
60 }
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
61 return this;
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
62 }
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
63
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
64 public ParentIndex addAllChildren(TreeNode parentNode) {
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
65 TreeNodeChildren children = parentNode.getChildren();
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
66 Iterator<TreeNode> childrenIterator = children.iterator();
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
67 for (; childrenIterator.hasNext();) {
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
68 TreeNode child = childrenIterator.next();
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
69 parentIndex = parentIndex.set(child, parentNode);
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
70 }
158
89ed172137ab fj Index fix?
one
parents: 153
diff changeset
71 return this;
151
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
72 }
d9fbddf77bf6 add class Index
one
parents: 150
diff changeset
73
150
1432adf6f490 add ParentIndex.java
one
parents:
diff changeset
74 }