comparison src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/ParentIndex.java @ 158:89ed172137ab

fj Index fix?
author one
date Sun, 07 Dec 2014 19:01:08 +0900
parents 20af7f25ef32
children 6615db346bf5
comparison
equal deleted inserted replaced
154:b8cef4b640a3 158:89ed172137ab
9 import fj.data.Option; 9 import fj.data.Option;
10 import fj.data.TreeMap; 10 import fj.data.TreeMap;
11 11
12 public class ParentIndex { 12 public class ParentIndex {
13 13
14 private final TreeMap<TreeNode, TreeNode> parentIndex; 14 private TreeMap<TreeNode, TreeNode> parentIndex;
15 15
16 public ParentIndex() { 16 public ParentIndex() {
17 parentIndex = TreeMap.empty(TreeMapOrd.treeNodeOrd); 17 parentIndex = TreeMap.empty(TreeMapOrd.treeNodeOrd);
18 } 18 }
19 19
22 } 22 }
23 23
24 public boolean isEmpty(){ 24 public boolean isEmpty(){
25 return parentIndex.isEmpty(); 25 return parentIndex.isEmpty();
26 } 26 }
27
27 public ParentIndex(ParentIndex parentIndex) { 28 public ParentIndex(ParentIndex parentIndex) {
28 this.parentIndex = parentIndex.getParentIndex(); 29 this.parentIndex = parentIndex.getParentIndex();
29 } 30 }
30 31
31 public TreeMap<TreeNode, TreeNode> getParentIndex() { 32 public TreeMap<TreeNode, TreeNode> getParentIndex() {
39 return null; 40 return null;
40 } 41 }
41 42
42 public ParentIndex set(TreeNode parent) { 43 public ParentIndex set(TreeNode parent) {
43 Iterator<TreeNode> childrenIterator = parent.getChildren().iterator(); 44 Iterator<TreeNode> childrenIterator = parent.getChildren().iterator();
44 TreeMap<TreeNode, TreeNode> newParentIndex = parentIndex;
45 for (; childrenIterator.hasNext();) { 45 for (; childrenIterator.hasNext();) {
46 TreeNode child = childrenIterator.next(); 46 TreeNode child = childrenIterator.next();
47 newParentIndex = newParentIndex.set(child, parent); 47 parentIndex = parentIndex.set(child, parent);
48 } 48 }
49 return new ParentIndex(newParentIndex); 49 return this;
50 } 50 }
51 51
52 public ParentIndex delete(TreeNode child) { 52 public ParentIndex delete(TreeNode child) {
53 TreeMap<TreeNode, TreeNode> newParentIndex = parentIndex.delete(child); 53 parentIndex = parentIndex.delete(child);
54 return new ParentIndex(newParentIndex); 54 return this;
55 } 55 }
56 56
57 public ParentIndex deleteAllChildren(TreeNode parentNode) { 57 public ParentIndex deleteAllChildren(TreeNode parentNode) {
58 TreeNodeChildren children = parentNode.getChildren(); 58 TreeNodeChildren children = parentNode.getChildren();
59 Iterator<TreeNode> childrenIterator = children.iterator(); 59 Iterator<TreeNode> childrenIterator = children.iterator();
60 TreeMap<TreeNode, TreeNode> newParentIndex = parentIndex;
61 for (; childrenIterator.hasNext();) { 60 for (; childrenIterator.hasNext();) {
62 TreeNode child = childrenIterator.next(); 61 TreeNode child = childrenIterator.next();
63 newParentIndex = newParentIndex.delete(child); 62 parentIndex = parentIndex.delete(child);
64 } 63 }
65 return new ParentIndex(newParentIndex); 64 return this;
66 } 65 }
67 66
68 public ParentIndex addAllChildren(TreeNode parentNode) { 67 public ParentIndex addAllChildren(TreeNode parentNode) {
69 TreeNodeChildren children = parentNode.getChildren(); 68 TreeNodeChildren children = parentNode.getChildren();
70 Iterator<TreeNode> childrenIterator = children.iterator(); 69 Iterator<TreeNode> childrenIterator = children.iterator();
71 TreeMap<TreeNode, TreeNode> newParentIndex = parentIndex;
72 for (; childrenIterator.hasNext();) { 70 for (; childrenIterator.hasNext();) {
73 TreeNode child = childrenIterator.next(); 71 TreeNode child = childrenIterator.next();
74 newParentIndex = newParentIndex.set(child, parentNode); 72 parentIndex = parentIndex.set(child, parentNode);
75 } 73 }
76 return new ParentIndex(newParentIndex); 74 return this;
77 } 75 }
78 76
79 } 77 }