Mercurial > hg > Members > tatsuki > JungleXMLReader
diff src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 20:ae739e8d86a2
ad parentOrganizationsTest and method
author | one |
---|---|
date | Mon, 27 Oct 2014 08:50:16 +0900 |
parents | da872647cbe4 |
children | daf0c3c810f9 |
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java Mon Oct 27 08:18:42 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java Mon Oct 27 08:50:16 2014 +0900 @@ -626,6 +626,69 @@ return ""; } + public Iterator<String> parentOrganizationIds(String orgId, LinkedList<String> filterIds) { + + InterfaceTraverser orgTraverser = organizationTree.getTraverser(); + Iterator<Pair<TreeNode,NodePath>> orgIterator = orgTraverser.find( + (TreeNode node) -> { + String element = node.getAttributes().getString("element"); + if (element == null) + return false; + if (!element.equals("Organization")) + return false; + String nodeId = node.getAttributes().getString("id"); + if (nodeId == null) + return false; + if (nodeId.equals(orgId)) + return true; + return false; + }); + + if (!orgIterator.hasNext()) + return new NullIterator(); + + TreeNode orgNode = orgIterator.next().left(); + + Iterator<Pair<TreeNode,NodePath>> parentOrgIterator = orgTraverser.find( + (TreeNode node) -> { + String element = node.getAttributes().getString("element"); + if (element == null) + return false; + if (element.equals("parentOrganizations")) + return true; + return false; + }, orgNode); + + LinkedList<String> parentIds = new LinkedList<String>(); + + for (;parentOrgIterator.hasNext();) { + TreeNode parentOrgNode = parentOrgIterator.next().left(); + + Iterator<Pair<TreeNode,NodePath>> parentNodeIterator = orgTraverser.find( + (TreeNode node) -> { + String element = node.getAttributes().getString("element"); + if (element == null) + return false; + if (!element.equals("organizationRefId")) + return false; + String parentId = node.getAttributes().getString("text"); + if (parentId != null) + return true; + return false; + }, parentOrgNode); + + for (;parentNodeIterator.hasNext();) { + String parentId = parentNodeIterator.next().left().getAttributes().getString("text"); + if (filter(parentId, filterIds)) + parentIds.add(parentId); + } + + + } + + return parentIds.iterator(); + } +