Mercurial > hg > Members > tatsuki > JungleXMLReader
view src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 7:47eb9ee2a1db
add PersonIdsTest and Method
add isActive Test and Method
author | one |
---|---|
date | Sat, 25 Oct 2014 07:48:02 +0900 |
parents | |
children | 378bfec11a8d |
line wrap: on
line source
package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; import java.util.Iterator; import fj.data.List; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; public class JuGrix { public boolean isActive(JungleTree tree, String id){ InterfaceTraverser ifTraverser = tree.getTraverser(); Iterator<Pair<TreeNode,NodePath>> pairIterator = ifTraverser.find( (TreeNode node) -> { String personId = node.getAttributes().getString("id"); if (personId == null) return false; if (personId.equals(id)) return true; return false; } ,"id",id); if (pairIterator.hasNext()) return true; return false; } public Iterator<String> personIds(JungleTree tree , String id){ List<String> names = personIdsSearch(tree, id); return names.iterator(); } public Iterator<String> personIds(JungleTree tree , List<String> ids){ List<String> personIds = List.nil(); for (String id : ids) { personIds = personIds.append(personIdsSearch(tree, id)); } return personIds.iterator(); } private List<String> personIdsSearch(JungleTree tree, String id) { InterfaceTraverser ifTraverser = tree.getTraverser(); Iterator<Pair<TreeNode,NodePath>> pairPersonIterator = ifTraverser.find( (TreeNode node) -> { String personId = node.getAttributes().getString("element"); if (personId == null) return false; if (personId.equals("Person")) return true; return false; } ,"element","Person"); List<String> names = List.nil(); for (;pairPersonIterator.hasNext();) { Pair<TreeNode, NodePath> pairPerson = pairPersonIterator.next(); Iterator<Pair<TreeNode,NodePath>> pairIdIterator = ifTraverser.find( (TreeNode node) -> { String personId = node.getAttributes().getString("text"); if (personId == null) return false; if (personId.equals(id)) return true; return false; } ,pairPerson.left(),"text",id); if (pairIdIterator.hasNext()) names = names.cons(pairPerson.left().getAttributes().getString("id")); } return names; } }