Mercurial > hg > Members > tatsuki > JungleXMLReader
diff src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 21:daf0c3c810f9
add deepParentOrganizationIdsTest and Method
author | one |
---|---|
date | Mon, 27 Oct 2014 09:16:22 +0900 |
parents | ae739e8d86a2 |
children | b6b5e3f48988 |
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java Mon Oct 27 08:50:16 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java Mon Oct 27 09:16:22 2014 +0900 @@ -627,6 +627,9 @@ } public Iterator<String> parentOrganizationIds(String orgId, LinkedList<String> filterIds) { + return _parentOrganizationIds(orgId, filterIds).iterator(); + } + public LinkedList<String> _parentOrganizationIds(String orgId, LinkedList<String> filterIds) { InterfaceTraverser orgTraverser = organizationTree.getTraverser(); Iterator<Pair<TreeNode,NodePath>> orgIterator = orgTraverser.find( @@ -645,7 +648,7 @@ }); if (!orgIterator.hasNext()) - return new NullIterator(); + return new LinkedList<String>(); TreeNode orgNode = orgIterator.next().left(); @@ -686,7 +689,28 @@ } - return parentIds.iterator(); + return parentIds; + } + + public Iterator<String> deepParentOrganizationIds(String orgId, LinkedList<String> filterIds) { + return _deepParentOrganizationIds(orgId, filterIds).iterator(); + } + public LinkedList<String> _deepParentOrganizationIds(String orgId, LinkedList<String> filterIds) { + + + Iterator<String> parentIds = parentOrganizationIds(orgId, filterIds); + if (!parentIds.hasNext()) + return new LinkedList<String>(); + + LinkedList<String> parentIdList = new LinkedList<String>(); + + for (;parentIds.hasNext();) { + String parentId = parentIds.next(); + if (filter(parentId, filterIds)) + parentIdList.add(parentId); + parentIdList.addAll(_deepParentOrganizationIds(parentId, filterIds)); + } + return parentIdList; }