Mercurial > hg > Members > tatsuki > JungleXMLReader
comparison 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 |
comparison
equal
deleted
inserted
replaced
9:28f383f677ff | 10:ccb74917f06a |
---|---|
223 } | 223 } |
224 | 224 |
225 return idList.iterator(); | 225 return idList.iterator(); |
226 } | 226 } |
227 | 227 |
228 | |
229 public Iterator<String> concurrentRoleIds(String personId) { | |
230 | |
231 InterfaceTraverser ifTraverser = personTree.getTraverser(); | |
232 Iterator<Pair<TreeNode,NodePath>> pairPersonIterator = ifTraverser.find( | |
233 (TreeNode node) -> { | |
234 String nodeElement = node.getAttributes().getString("element"); | |
235 if (nodeElement == null) | |
236 return false; | |
237 if (!nodeElement.equals("Person")) | |
238 return false; | |
239 String nodeId = node.getAttributes().getString("id"); | |
240 if (nodeId == null) | |
241 return false; | |
242 if (nodeId.equals(personId)) | |
243 return true; | |
244 return false; | |
245 } | |
246 ,"element","Person"); | |
247 | |
248 if (!pairPersonIterator.hasNext()) | |
249 return new NullIterator(); | |
250 TreeNode person = pairPersonIterator.next().left(); | |
251 | |
252 Iterator<Pair<TreeNode,NodePath>> targetPairIterator = ifTraverser.find( | |
253 (TreeNode node) -> { | |
254 String nodeElement = node.getAttributes().getString("element"); | |
255 if (nodeElement == null) | |
256 return false; | |
257 if (!nodeElement.equals("priority")) | |
258 return false; | |
259 String priority = node.getAttributes().getString("text"); | |
260 if (priority == null) | |
261 return false; | |
262 if (!priority.equals("0")) | |
263 return true; | |
264 return false; | |
265 } | |
266 ,person); | |
267 | |
268 | |
269 List<String> idList = List.nil(); | |
270 for (;targetPairIterator.hasNext();) { | |
271 NodePath searchPath = targetPairIterator.next().right(); | |
272 Pair<Integer, NodePath> searchPair = searchPath.last(); | |
273 NodePath targetPath = searchPair.right().add(searchPair.left() + 1); | |
274 TreeNode targetNode = getTarget(person, targetPath); | |
275 String id = targetNode.getAttributes().getString("text"); | |
276 idList = idList.cons(id); | |
277 } | |
278 | |
279 return idList.iterator(); | |
280 } | |
281 | |
228 public TreeNode getTarget(TreeNode node , NodePath path){ | 282 public TreeNode getTarget(TreeNode node , NodePath path){ |
229 TreeNode target; | 283 TreeNode target; |
230 Pair<Integer, NodePath> pathNode = path.pop(); | 284 Pair<Integer, NodePath> pathNode = path.pop(); |
231 int num = pathNode.left(); | 285 int num = pathNode.left(); |
232 NodePath newPath = pathNode.right(); | 286 NodePath newPath = pathNode.right(); |
242 return child; | 296 return child; |
243 | 297 |
244 target = getTarget(child,pathNode.right()); | 298 target = getTarget(child,pathNode.right()); |
245 return target; | 299 return target; |
246 } | 300 } |
301 | |
247 class NullIterator implements Iterator<String>{ | 302 class NullIterator implements Iterator<String>{ |
248 | 303 |
249 @Override | 304 @Override |
250 public boolean hasNext() { | 305 public boolean hasNext() { |
251 return false; | 306 return false; |
255 public String next() { | 310 public String next() { |
256 return null; | 311 return null; |
257 } | 312 } |
258 | 313 |
259 } | 314 } |
315 | |
260 } | 316 } |