Mercurial > hg > Members > tatsuki > bench > jungle-core
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 } |