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;
 	}