diff src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java @ 29:626e56f749a9

use index competentRoleIdTest and concurrentRoleIdsTest
author one
date Fri, 07 Nov 2014 03:22:11 +0900
parents ed831b2fc156
children f45b1c839753
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java	Fri Nov 07 02:20:07 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java	Fri Nov 07 03:22:11 2014 +0900
@@ -40,7 +40,7 @@
         roleTree = reader.loadTestData("Role.xml");
         rdeTree = reader.loadTestData("RoleDescriptionElement.xml");
       }
-      
+
     } catch (Exception e) {
       e.printStackTrace();
     }
@@ -122,7 +122,7 @@
   public boolean filter(String orgId, LinkedList<String> roleIds) {
     if (roleIds == null)
       return true;
-    
+
     if (roleIds.isEmpty())
       return true;
 
@@ -232,7 +232,7 @@
   }
 
   public boolean roleFilter(String id, Pair<TreeNode, NodePath> searchNodePair) {
-    //System.out.println(searchNodePair.getAttributes().getString("id"));
+    // System.out.println(searchNodePair.getAttributes().getString("id"));
     InterfaceTraverser orgTraverser = organizationTree.getTraverser();
 
     Iterator<Pair<TreeNode, NodePath>> pairIdIterator = orgTraverser.findInSubTree((TreeNode node) -> {
@@ -377,40 +377,54 @@
   public Iterator<String> concurrentRoleIds(String personId) {
 
     InterfaceTraverser ifTraverser = personTree.getTraverser();
-    Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = searchPerson(personId, ifTraverser);
+    Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = ifTraverser.find((TreeNode node) -> {
+      String nodeElement = node.getAttributes().getString("element");
+      if (nodeElement == null)
+        return false;
+      if (!nodeElement.equals("Person"))
+        return false;
+      String nodeId = node.getAttributes().getString("Person-id");
+      if (nodeId == null)
+        return false;
+      if (nodeId.equals(personId))
+        return true;
+      return false;
+    }, "Person-id", personId);
 
     if (!pairPersonIterator.hasNext())
       return new NullIterator();
     Pair<TreeNode, NodePath> person = pairPersonIterator.next();
 
-    Iterator<Pair<TreeNode, NodePath>> targetPairIterator = ifTraverser.findInSubTree((TreeNode node) -> {
+    Iterator<Pair<TreeNode, NodePath>> targetPairIterator = ifTraverser.findInSubTreeAllValue((TreeNode node) -> {
       String nodeElement = node.getAttributes().getString("element");
       if (nodeElement == null)
         return false;
       if (!nodeElement.equals("priority"))
         return false;
-      String priority = node.getAttributes().getString("text");
-      if (priority == null)
-        return false;
-      if (!priority.equals("0"))
+      String priority = node.getAttributes().getString("text-priority");
+      if (priority != null)
         return true;
       return false;
-    }, person, "text", "0");
+    }, person, "text-priority");
 
     LinkedList<String> idList = new LinkedList<String>();
     for (; targetPairIterator.hasNext();) {
-      NodePath searchPath = targetPairIterator.next().right();
-      Pair<Integer, NodePath> searchPair = searchPath.last();
-      NodePath targetPath = searchPair.right().add(searchPair.left() + 1);
-      TreeNode targetNode = getTarget(person.left(), targetPath);
-      String id = targetNode.getAttributes().getString("text");
-      idList.add(id);
+      Pair<TreeNode,NodePath> targetPair = targetPairIterator.next(); 
+      TreeNode targetNode = targetPair.left();
+      int priority = Integer.parseInt(targetNode.getAttributes().getString("text-priority"));
+      if (priority > 0) {
+        NodePath targetPath = targetPair.right();
+        Pair<Integer, NodePath> searchPair = targetPath.last();
+        NodePath roleIdNodePath = searchPair.right().add(searchPair.left() + 1);
+        TreeNode roleIdNode = getTarget(personTree.getRootNode(), roleIdNodePath);
+        String id = roleIdNode.getAttributes().getString("text-roleRefId");
+        idList.add(id);
+      }
     }
 
     return idList.iterator();
   }
 
-
   public Iterator<String> deepPersonIds(String orgId, LinkedList<String> filterIds) {
 
     Iterator<String> childrensIterator = deepChildOrganizationIds(orgId, new LinkedList<String>());
@@ -493,7 +507,7 @@
 
     Pair<TreeNode, NodePath> chilerenOrgIds = chilrenOrgIdsIterator.next();
 
-    Iterator<Pair<TreeNode, NodePath>> chilrenOrgIdIterator = orgTraverser.findInSubTree((TreeNode node) -> {
+    Iterator<Pair<TreeNode, NodePath>> chilrenOrgIdIterator = orgTraverser.findInSubTreeAllValue((TreeNode node) -> {
       String nodeElement = node.getAttributes().getString("element");
       if (nodeElement == null)
         return false;
@@ -503,7 +517,7 @@
       if (nodeElement != null)
         return true;
       return false;
-    }, chilerenOrgIds, "text-organizationRefIds", null);
+    }, chilerenOrgIds, "text-organizationRefIds");
 
     LinkedList<String> ids = new LinkedList<String>();