# HG changeset patch # User one # Date 1414367416 -32400 # Node ID ae739e8d86a29d05386312cb6de445836f3a5634 # Parent da872647cbe40153582ef008e4f2b33e66cfd9ad ad parentOrganizationsTest and method diff -r da872647cbe4 -r ae739e8d86a2 src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java --- 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 parentOrganizationIds(String orgId, LinkedList filterIds) { + + InterfaceTraverser orgTraverser = organizationTree.getTraverser(); + Iterator> 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> 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 parentIds = new LinkedList(); + + for (;parentOrgIterator.hasNext();) { + TreeNode parentOrgNode = parentOrgIterator.next().left(); + + Iterator> 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(); + } + diff -r da872647cbe4 -r ae739e8d86a2 src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/parentOrganizationIdsTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/parentOrganizationIdsTest.java Mon Oct 27 08:50:16 2014 +0900 @@ -0,0 +1,25 @@ +package jp.ac.u_ryukyu.cr.ie.tatsuki.functionTest; + +import java.util.Iterator; +import java.util.LinkedList; + +import jp.ac.u_ryukyu.cr.ie.tatsuki.bbs.JuGrix; +import junit.framework.Assert; + +import org.junit.Test; + +public class parentOrganizationIdsTest { + @Test + public void parentOrganizationIdsTest() { + JuGrix jugrix = new JuGrix(); + LinkedList filterIds = new LinkedList(); + filterIds.add("r:2"); + Iterator childrenIds = jugrix.parentOrganizationIds("o:2", filterIds); + Assert.assertTrue(childrenIds.hasNext()); + Assert.assertEquals(childrenIds.next(), "o:23"); + + filterIds.add("r:2w"); + childrenIds = jugrix.parentOrganizationIds("o:2", filterIds); + Assert.assertFalse(childrenIds.hasNext()); + } +}