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();
+	}
+