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 }