annotate src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 10:ccb74917f06a

add concurrentRoleIdsTest and method
author one
date Sat, 25 Oct 2014 10:52:50 +0900
parents 28f383f677ff
children 67305f53aad0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
1 package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
2
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
3 import java.util.Iterator;
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
4 import java.util.regex.Matcher;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
5 import java.util.regex.Pattern;
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
6
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
7 import fj.data.List;
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
16
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
17 public class JuGrix {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
18
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
19 JungleTree personTree;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
20 JungleTree organizationTree;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
21 public JuGrix(){
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
22 try{
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
23 loadXml reader = new loadXml();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
24 personTree = reader.loadTestData("Person.xml");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
25 organizationTree = reader.loadTestData("Organization.xml");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
26 } catch (Exception e) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
27 e.printStackTrace();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
28 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
29 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
30 public boolean isActive(String id){
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
31
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
32 InterfaceTraverser ifTraverser = personTree.getTraverser();
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
33 Iterator<Pair<TreeNode,NodePath>> pairIterator = ifTraverser.find(
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
34 (TreeNode node) -> {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
35 String personId = node.getAttributes().getString("id");
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
36 if (personId == null)
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
37 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
38 if (personId.equals(id))
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
39 return true;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
40 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
41 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
42 ,"id",id);
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
43
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
44 if (pairIterator.hasNext())
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
45 return true;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
46 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
47
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
48 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
49
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
50 public Iterator<String> personIds(String id){
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
51
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
52 List<String> names = personIdsSearch(id);
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
53 return names.iterator();
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
54 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
55
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
56 public Iterator<String> personIds(List<String> ids){
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
57
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
58 List<String> personIds = List.nil();
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
59
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
60 for (String id : ids) {
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
61 personIds = personIds.append(personIdsSearch(id));
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
62 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
63 return personIds.iterator();
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
64 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
65
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
66 private List<String> personIdsSearch(String id) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
67 InterfaceTraverser ifTraverser = personTree.getTraverser();
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
68 Iterator<Pair<TreeNode,NodePath>> pairPersonIterator = ifTraverser.find(
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
69 (TreeNode node) -> {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
70 String personId = node.getAttributes().getString("element");
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
71 if (personId == null)
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
72 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
73 if (personId.equals("Person"))
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
74 return true;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
75 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
76 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
77 ,"element","Person");
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
78
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
79 List<String> names = List.nil();
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
80 for (;pairPersonIterator.hasNext();) {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
81
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
82 Pair<TreeNode, NodePath> pairPerson = pairPersonIterator.next();
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
83 Iterator<Pair<TreeNode,NodePath>> pairIdIterator = ifTraverser.find(
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
84 (TreeNode node) -> {
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
85 String personId = node.getAttributes().getString("text");
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
86 if (personId == null)
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
87 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
88 if (personId.equals(id))
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
89 return true;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
90 return false;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
91 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
92 ,pairPerson.left(),"text",id);
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
93 if (pairIdIterator.hasNext())
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
94 names = names.cons(pairPerson.left().getAttributes().getString("id"));
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
95
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
96 }
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
97 return names;
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
98 }
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
99
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
100 public Iterator<String> roleIds(String id) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
101 Pattern personPattern = Pattern.compile("p:");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
102 Matcher personMacher = personPattern.matcher(id);
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
103 if (personMacher.find()) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
104 return searchRoleIds(personTree, id, "Person");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
105 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
106
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
107 Pattern organizationPattern = Pattern.compile("o:");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
108 Matcher organizationMacher = organizationPattern.matcher(id);
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
109 if (organizationMacher.find()) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
110 return searchRoleIds(organizationTree, id, "Organization");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
111 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
112
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
113 return null;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
114 }
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
115
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
116 public Iterator<String> searchRoleIds(JungleTree tree, String id, String element){
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
117
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
118 InterfaceTraverser ifTraverser = tree.getTraverser();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
119 Iterator<Pair<TreeNode,NodePath>> searchTargetIterator = ifTraverser.find(
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
120 (TreeNode node) -> {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
121 String nodeElement = node.getAttributes().getString("element");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
122 if (nodeElement == null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
123 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
124 if (!nodeElement.equals(element))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
125 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
126 String nodeId = node.getAttributes().getString("id");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
127 if (nodeId == null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
128 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
129 if (nodeId.equals(id))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
130 return true;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
131 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
132 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
133 ,"id",id);
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
134
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
135 List<String> ids = List.nil();
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
136
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
137 for (;searchTargetIterator.hasNext();) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
138
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
139 Pair<TreeNode, NodePath> searchTargetPair = searchTargetIterator.next();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
140 Iterator<Pair<TreeNode,NodePath>> pairIdIterator = ifTraverser.find(
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
141 (TreeNode node) -> {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
142 String nodeElement = node.getAttributes().getString("element");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
143 if (nodeElement == null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
144 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
145 if (!nodeElement.equals("roleRefId"))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
146 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
147 String nodeId = node.getAttributes().getString("text");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
148 if (nodeId != null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
149 return true;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
150 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
151 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
152 ,searchTargetPair.left());
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
153
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
154
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
155 for (;pairIdIterator.hasNext();){
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
156 Pair<TreeNode, NodePath> idNodePath = pairIdIterator.next();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
157 String attribute = idNodePath.left().getAttributes().getString("text");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
158
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
159 Iterator<String> checkList = ids.iterator();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
160 for (;checkList.hasNext();) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
161 if(checkList.next().equals(attribute))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
162 attribute = null;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
163 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
164
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
165 if (attribute != null) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
166 ids = ids.cons(attribute);
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
167 System.out.println("-------------------------" + attribute + "-------------------------");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
168 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
169 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
170 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
171 return ids.iterator();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
172 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
173
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
174
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
175 public Iterator<String> competentRoleId(String personId) {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
176
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
177 InterfaceTraverser ifTraverser = personTree.getTraverser();
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
178 Iterator<Pair<TreeNode,NodePath>> pairPersonIterator = ifTraverser.find(
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
179 (TreeNode node) -> {
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
180 String nodeElement = node.getAttributes().getString("element");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
181 if (nodeElement == null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
182 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
183 if (!nodeElement.equals("Person"))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
184 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
185 String nodeId = node.getAttributes().getString("id");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
186 if (nodeId == null)
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
187 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
188 if (nodeId.equals(personId))
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
189 return true;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
190 return false;
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
191 }
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
192 ,"element","Person");
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
193
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
194 if (!pairPersonIterator.hasNext())
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
195 return new NullIterator();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
196 TreeNode person = pairPersonIterator.next().left();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
197
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
198 Iterator<Pair<TreeNode,NodePath>> targetPairIterator = ifTraverser.find(
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
199 (TreeNode node) -> {
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
200 String nodeElement = node.getAttributes().getString("element");
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
201 if (nodeElement == null)
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
202 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
203 if (!nodeElement.equals("priority"))
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
204 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
205 String priority = node.getAttributes().getString("text");
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
206 if (priority == null)
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
207 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
208 if (priority.equals("0"))
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
209 return true;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
210 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
211 }
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
212 ,person);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
213
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
214
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
215 List<String> idList = List.nil();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
216 for (;targetPairIterator.hasNext();) {
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
217 NodePath searchPath = targetPairIterator.next().right();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
218 Pair<Integer, NodePath> searchPair = searchPath.last();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
219 NodePath targetPath = searchPair.right().add(searchPair.left() + 1);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
220 TreeNode targetNode = getTarget(person, targetPath);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
221 String id = targetNode.getAttributes().getString("text");
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
222 idList = idList.cons(id);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
223 }
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
224
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
225 return idList.iterator();
8
378bfec11a8d add roleIdsTest and method
one
parents: 7
diff changeset
226 }
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
227
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
228
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
229 public Iterator<String> concurrentRoleIds(String personId) {
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
230
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
231 InterfaceTraverser ifTraverser = personTree.getTraverser();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
232 Iterator<Pair<TreeNode,NodePath>> pairPersonIterator = ifTraverser.find(
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
233 (TreeNode node) -> {
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
234 String nodeElement = node.getAttributes().getString("element");
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
235 if (nodeElement == null)
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
236 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
237 if (!nodeElement.equals("Person"))
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
238 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
239 String nodeId = node.getAttributes().getString("id");
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
240 if (nodeId == null)
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
241 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
242 if (nodeId.equals(personId))
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
243 return true;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
244 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
245 }
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
246 ,"element","Person");
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
247
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
248 if (!pairPersonIterator.hasNext())
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
249 return new NullIterator();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
250 TreeNode person = pairPersonIterator.next().left();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
251
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
252 Iterator<Pair<TreeNode,NodePath>> targetPairIterator = ifTraverser.find(
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
253 (TreeNode node) -> {
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
254 String nodeElement = node.getAttributes().getString("element");
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
255 if (nodeElement == null)
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
256 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
257 if (!nodeElement.equals("priority"))
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
258 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
259 String priority = node.getAttributes().getString("text");
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
260 if (priority == null)
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
261 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
262 if (!priority.equals("0"))
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
263 return true;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
264 return false;
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
265 }
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
266 ,person);
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
267
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
268
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
269 List<String> idList = List.nil();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
270 for (;targetPairIterator.hasNext();) {
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
271 NodePath searchPath = targetPairIterator.next().right();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
272 Pair<Integer, NodePath> searchPair = searchPath.last();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
273 NodePath targetPath = searchPair.right().add(searchPair.left() + 1);
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
274 TreeNode targetNode = getTarget(person, targetPath);
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
275 String id = targetNode.getAttributes().getString("text");
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
276 idList = idList.cons(id);
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
277 }
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
278
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
279 return idList.iterator();
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
280 }
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
281
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
282 public TreeNode getTarget(TreeNode node , NodePath path){
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
283 TreeNode target;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
284 Pair<Integer, NodePath> pathNode = path.pop();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
285 int num = pathNode.left();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
286 NodePath newPath = pathNode.right();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
287 if (num == -1 && newPath.size() != 0)
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
288 return getTarget(node, newPath);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
289
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
290 Either<Error, TreeNode> either = node.getChildren().at(num);
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
291 if (either.isA())
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
292 return node;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
293
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
294 TreeNode child = either.b();
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
295 if (pathNode.right().size() == 0)
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
296 return child;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
297
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
298 target = getTarget(child,pathNode.right());
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
299 return target;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
300 }
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
301
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
302 class NullIterator implements Iterator<String>{
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
303
9
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
304 @Override
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
305 public boolean hasNext() {
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
306 return false;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
307 }
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
308
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
309 @Override
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
310 public String next() {
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
311 return null;
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
312 }
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
313
28f383f677ff add competentRoledTest and method
one
parents: 8
diff changeset
314 }
10
ccb74917f06a add concurrentRoleIdsTest and method
one
parents: 9
diff changeset
315
7
47eb9ee2a1db add PersonIdsTest and Method
one
parents:
diff changeset
316 }