changeset 31:7f70341a78bc

all function use index
author one
date Sat, 08 Nov 2014 06:31:14 +0900
parents f45b1c839753
children b8d86bc46b51
files src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/ReadXmlPutAttributeCreateIndex.java src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/PersonIdsTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/childOrganizationIds.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepChildOrganizationIdsPlusTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepChildOrganizationIdsTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepParentOrganizationIdsPlusTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepParentOrganizationIdsTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepPersonIdsTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/parentOrganizationIdsTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/roleDescriptionElementIdsTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/roleIdsTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/rolePriorityTest.java src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/stringPathToIdTest.java
diffstat 14 files changed, 552 insertions(+), 210 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/ReadXmlPutAttributeCreateIndex.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/ReadXmlPutAttributeCreateIndex.java	Sat Nov 08 06:31:14 2014 +0900
@@ -15,55 +15,55 @@
 import org.xml.sax.*;
 import org.xml.sax.helpers.*;
 
-
 public class ReadXmlPutAttributeCreateIndex extends DefaultHandler {
   private JungleTree tree;
   private JungleTreeEditor editor;
   private NodePath path;
   private String elementName;
-  
-  public ReadXmlPutAttributeCreateIndex(JungleTree tree){
+
+  public ReadXmlPutAttributeCreateIndex(JungleTree tree) {
     this.tree = tree;
     this.editor = tree.getIndexTreeEditor();
     this.path = new DefaultNodePath().add(-1);
   }
-  
+
   @Override
-  public void startElement(String uri, String localName,String qName, Attributes attributes) {
+  public void startElement(String uri, String localName, String qName, Attributes attributes) {
     Pair<Integer, NodePath> nodePair = path.last();
     path = nodePair.right();
-    int num = nodePair.left() + 1;    
+    int num = nodePair.left() + 1;
     path = path.add(num);
-    //System.out.println(path.toString());
+    // System.out.println(path.toString());
 
-    
     if (uri != "") {
-    //  System.out.println("namespaceURI= " + uri);
+      // System.out.println("namespaceURI= " + uri);
     }
 
     if (localName != "") {
-    //  System.out.println("localName= " + localName);
+      // System.out.println("localName= " + localName);
     }
 
     if (qName != "") {
-    //  System.out.println("qName= " + qName);
+      // System.out.println("qName= " + qName);
       elementName = qName;
-      Either<Error, JungleTreeEditor> newEither = editor.putAttribute(path, "element", ByteBuffer.wrap(qName.getBytes()));
+      Either<Error, JungleTreeEditor> newEither = editor.putAttribute(path, "element",
+          ByteBuffer.wrap(qName.getBytes()));
       if (newEither.isA()) {
-        //error       
+        // error
       }
       this.editor = newEither.b();
     }
 
     if (attributes.getLength() != 0) {
-      for (int count = 0 ;attributes.getLength() > count; count++) {
-    //    System.out.println(attributes.getLocalName(count) + " = " + attributes.getValue(count));
-        String key = elementName + "-"  + attributes.getLocalName(count);
+      for (int count = 0; attributes.getLength() > count; count++) {
+        // System.out.println(attributes.getLocalName(count) + " = " +
+        // attributes.getValue(count));
+        String key = elementName + "-" + attributes.getLocalName(count);
         String value = attributes.getValue(count);
         ByteBuffer bValue = ByteBuffer.wrap(value.getBytes());
-        Either<Error, JungleTreeEditor> newEither = editor.putAttribute(path,key , bValue);
+        Either<Error, JungleTreeEditor> newEither = editor.putAttribute(path, key, bValue);
         if (newEither.isA()) {
-          //error
+          // error
         }
         this.editor = newEither.b();
       }
@@ -78,15 +78,18 @@
       Matcher macher = pattern.matcher(str);
       
       if (!macher.find()) {
+        if (str.equals("r:63 r:3 r:9"))
+          System.out.println("aaa");
+        String[] splitStrs = str.split(" ");
+        for (String splitStr : splitStrs) {
         Pair<Integer, NodePath> nodePair = path.last();
         NodePath onePath = nodePair.right();
-        if (str.equals("o:9"))
-          System.out.println(onePath.toString());
-        Either<Error, JungleTreeEditor> newEither = editor.putAttribute(onePath, "text-" + elementName, ByteBuffer.wrap(str.getBytes()));
+        Either<Error, JungleTreeEditor> newEither = editor.putAttribute(onePath, "text-" + elementName, ByteBuffer.wrap(splitStr.getBytes()));
         if (newEither.isA()) {
           //error
         }
         this.editor = newEither.b();
+        }
     }
   }
 
@@ -94,32 +97,32 @@
   public void endElement(String namespaceURI, String localName, String qName) {
     path = path.tail();
     if (namespaceURI != "") {
-    //  System.out.println("namespaceURI= " + namespaceURI);
+      // System.out.println("namespaceURI= " + namespaceURI);
     }
     if (localName != "") {
-    //  System.out.println("localName= " + localName);
+      // System.out.println("localName= " + localName);
     }
 
     if (qName != "") {
-    //  System.out.println("qName= " + qName);
+      // System.out.println("qName= " + qName);
     }
   }
 
   @Override
   public void startDocument() {
-  //  System.out.println("start");
+    // System.out.println("start");
   }
 
   @Override
   public void endDocument() {
     Either<Error, JungleTreeEditor> either = editor.success();
     if (either.isA()) {
-      //error
+      // error
     }
-  //  System.out.println("end");
+    // System.out.println("end");
   }
 
-  public JungleTree getTree(){
+  public JungleTree getTree() {
     return tree;
   }
 
--- a/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java	Sat Nov 08 06:31:14 2014 +0900
@@ -5,10 +5,14 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.collections.OrderedBidiMap;
+import org.omg.CORBA.OBJ_ADAPTER;
+
 import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.loadXml;
 import fj.Ord;
 import fj.P2;
 import fj.data.TreeMap;
+import jp.ac.u_ryukyu.cr.ie.tatsuki.functionTest.PersonIdsTest;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
@@ -64,59 +68,95 @@
 
   }
 
+
+
   public Iterator<String> personIds(String orgId, LinkedList<String> roleIds) {
-    return personIdsSearch(orgId, roleIds).iterator();
-  }
+    TreeMap<String, String> personIds = TreeMap.empty(Ord.stringOrd);
+    TreeMap<String, String> personIdsTreeMap = personIdsSearch(orgId, roleIds, personIds);
+
+    if (personIdsTreeMap.isEmpty())
+      return new NullIterator();
+
+    Iterator<P2<String, String>> personIdsIterator = personIdsTreeMap.iterator();
+    return new Iterator<String>() {
 
-  public LinkedList<String> personIdLink(String orgId, LinkedList<String> roleIds) {
-    return personIdsSearch(orgId, roleIds);
+      @Override
+      public boolean hasNext() {
+        if (personIdsIterator.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return personIdsIterator.next()._1();
+      }
+
+    };
   }
 
   public Iterator<String> personIds(LinkedList<String> orgIds, LinkedList<String> roleIds) {
 
-    LinkedList<String> personIds = new LinkedList<String>();
-
+    TreeMap<String, String> personIds = TreeMap.empty(Ord.stringOrd);
     for (String orgId : orgIds) {
-      personIds.addAll(personIdsSearch(orgId, roleIds));
+      personIds = personIdsSearch(orgId, roleIds, personIds);
     }
-    return personIds.iterator();
+
+    if (personIds.isEmpty())
+      return new NullIterator();
+
+    Iterator<P2<String, String>> personIdsIterator = personIds.iterator();
+    return new Iterator<String>() {
+
+      @Override
+      public boolean hasNext() {
+        if (personIdsIterator.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return personIdsIterator.next()._1();
+      }
+
+    };
   }
 
-  private LinkedList<String> personIdsSearch(String id, LinkedList<String> roleIds) {
+  private TreeMap<String, String> personIdsSearch(String id, LinkedList<String> roleIds, TreeMap<String, String> orgIds) {
 
     if (!filter(id, roleIds))
-      return new LinkedList<String>();
+      return orgIds;
 
     InterfaceTraverser personTraverser = personTree.getTraverser();
-    Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = personTraverser.find((TreeNode node) -> {
+    Iterator<Pair<TreeNode, NodePath>> pairPersonIterator = personTraverser.findAll((TreeNode node) -> {
       String personId = node.getAttributes().getString("element");
       if (personId == null)
         return false;
       if (personId.equals("Person"))
         return true;
       return false;
-    }, "element", "Person");
-
-    LinkedList<String> names = new LinkedList<String>();
+    }, "Person-id");
 
     for (; pairPersonIterator.hasNext();) {
 
       Pair<TreeNode, NodePath> pairPerson = pairPersonIterator.next();
       Iterator<Pair<TreeNode, NodePath>> pairIdIterator = personTraverser.findInSubTree((TreeNode node) -> {
-        String personId = node.getAttributes().getString("text");
+        String personId = node.getAttributes().getString("text-organizationRefId");
         if (personId == null)
           return false;
         if (personId.equals(id))
           return true;
         return false;
-      }, pairPerson, "text", id);
+      }, pairPerson, "text-organizationRefId", id);
 
       if (pairIdIterator.hasNext()) {
-        String name = pairPerson.left().getAttributes().getString("id");
-        names.add(name);
+        String name = pairPerson.left().getAttributes().getString("Person-id");
+        if (name != null)
+          orgIds = orgIds.set(name, name);
       }
     }
-    return names;
+    return orgIds;
   }
 
   public boolean filter(String orgId, LinkedList<String> roleIds) {
@@ -134,13 +174,13 @@
         return false;
       if (!personId.equals("Organization"))
         return false;
-      String compareOrgId = node.getAttributes().getString("id");
+      String compareOrgId = node.getAttributes().getString("Organization-id");
       if (compareOrgId == null)
         return false;
       if (compareOrgId.equals(orgId))
         return true;
       return false;
-    }, "id", orgId);
+    }, "Organization-id", orgId);
 
     if (!orgNodeIterator.hasNext())
       return false;
@@ -168,21 +208,21 @@
   private boolean rdeFilter(String id, Pair<TreeNode, NodePath> searchNodePair) {
 
     InterfaceTraverser orgTraverser = organizationTree.getTraverser();
-    Iterator<Pair<TreeNode, NodePath>> pairIdIterator = orgTraverser.findInSubTree((TreeNode node) -> {
+    Iterator<Pair<TreeNode, NodePath>> pairIdIterator = orgTraverser.findInSubTreeAllValue((TreeNode node) -> {
       String element = node.getAttributes().getString("element");
       if (element == null)
         return false;
       if (!element.equals("roleRefId"))
         return false;
-      String roleId = node.getAttributes().getString("text");
+      String roleId = node.getAttributes().getString("text-roleRefId");
       if (roleId != null)
         return true;
       return false;
-    }, searchNodePair, "element", "roleRefId");
+    }, searchNodePair, "text-roleRefId");
 
     TreeMap<String, String> idMap = TreeMap.empty(Ord.stringOrd);
     for (; pairIdIterator.hasNext();) {
-      String roleId = pairIdIterator.next().left().getAttributes().getString("text");
+      String roleId = pairIdIterator.next().left().getAttributes().getString("text-roleRefId");
       idMap = idMap.set(roleId, roleId);
     }
 
@@ -197,14 +237,14 @@
           return false;
         if (!element.equals("Role"))
           return false;
-        String compareRoleId = node.getAttributes().getString("id");
+        String compareRoleId = node.getAttributes().getString("Role-id");
         if (compareRoleId == null)
           return false;
         if (compareRoleId.equals(roleId))
           return true;
         return false;
-      }, "id", roleId);
-      // -----------------------------------------bug------------------------------------------
+      }, "Role-id", roleId);
+
       for (; roleNodeIterator.hasNext();) {
         Pair<TreeNode, NodePath> rolePair = roleNodeIterator.next();
         Iterator<Pair<TreeNode, NodePath>> rdeNodeIterator = roleTraverser.findInSubTree((TreeNode node) -> {
@@ -213,7 +253,7 @@
             return false;
           if (!elementName.equals("roleDescriptionElementRefIds"))
             return false;
-          String rdeId = node.getAttributes().getString("text");
+          String rdeId = node.getAttributes().getString("text-roleDescriptionElementRefIds");
           if (rdeId == null)
             return false;
           Pattern personPattern = Pattern.compile(id);
@@ -221,7 +261,7 @@
           if (personMacher.find())
             return true;
           return false;
-        }, rolePair, "text", "id");
+        }, rolePair, "text-roleDescriptionElementRefIds", id);
 
         if (!rdeNodeIterator.hasNext())
           return false;
@@ -241,16 +281,16 @@
         return false;
       if (!elementName.equals("roleRefIds"))
         return false;
-      String roleId = node.getAttributes().getString("text");
+      String roleId = node.getAttributes().getString("text-roleRefIds");
       if (roleId == null)
         return false;
       if (roleId.equals(id))
         return true;
       return false;
-    }, searchNodePair, "text", id);
+    }, searchNodePair, "text-roleRefIds", id);
 
     if (pairIdIterator.hasNext()) {
-      System.out.println(pairIdIterator.next().left().getAttributes().getString("text"));
+      System.out.println(pairIdIterator.next().left().getAttributes().getString("text-roleRefIds"));
       return false;
     }
     return true;
@@ -281,48 +321,58 @@
         return false;
       if (!nodeElement.equals(element))
         return false;
-      String nodeId = node.getAttributes().getString("id");
+      String nodeId = node.getAttributes().getString(element + "-id");
       if (nodeId == null)
         return false;
       if (nodeId.equals(id))
         return true;
       return false;
-    }, "id", id);
+    }, element + "-id", id);
 
-    LinkedList<String> ids = new LinkedList<String>();
+    TreeMap<String, String> idsTreeMap = TreeMap.empty(Ord.stringOrd);
+    ;
 
     for (; searchTargetIterator.hasNext();) {
 
       Pair<TreeNode, NodePath> searchTargetPair = searchTargetIterator.next();
-      Iterator<Pair<TreeNode, NodePath>> pairIdIterator = ifTraverser.findInSubTree((TreeNode node) -> {
+      Iterator<Pair<TreeNode, NodePath>> pairIdIterator = ifTraverser.findInSubTreeAllValue((TreeNode node) -> {
         String nodeElement = node.getAttributes().getString("element");
         if (nodeElement == null)
           return false;
         if (!nodeElement.equals("roleRefId"))
           return false;
-        String nodeId = node.getAttributes().getString("text");
+        String nodeId = node.getAttributes().getString("text-roleRefId");
         if (nodeId != null)
           return true;
         return false;
-      }, searchTargetPair, "element", "roleRefId");
+      }, searchTargetPair, "text-roleRefId");
 
       for (; pairIdIterator.hasNext();) {
         Pair<TreeNode, NodePath> idNodePath = pairIdIterator.next();
-        String attribute = idNodePath.left().getAttributes().getString("text");
-
-        Iterator<String> checkList = ids.iterator();
-        for (; checkList.hasNext();) {
-          if (checkList.next().equals(attribute))
-            attribute = null;
-        }
-
-        if (attribute != null) {
-          ids.add(attribute);
-          System.out.println("-------------------------" + attribute + "-------------------------");
-        }
+        String attribute = idNodePath.left().getAttributes().getString("text-roleRefId");
+        idsTreeMap = idsTreeMap.set(attribute, attribute);
       }
     }
-    return ids.iterator();
+
+    if (idsTreeMap.isEmpty())
+      return new NullIterator();
+
+    Iterator<P2<String, String>> ids = idsTreeMap.iterator();
+    return new Iterator<String>() {
+
+      @Override
+      public boolean hasNext() {
+        if (ids.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return ids.next()._1();
+      }
+
+    };
   }
 
   public Iterator<String> competentRoleId(String personId) {
@@ -409,7 +459,7 @@
 
     LinkedList<String> idList = new LinkedList<String>();
     for (; targetPairIterator.hasNext();) {
-      Pair<TreeNode,NodePath> targetPair = targetPairIterator.next(); 
+      Pair<TreeNode, NodePath> targetPair = targetPairIterator.next();
       TreeNode targetNode = targetPair.left();
       int priority = Integer.parseInt(targetNode.getAttributes().getString("text-priority"));
       if (priority > 0) {
@@ -426,51 +476,131 @@
   }
 
   public Iterator<String> deepPersonIds(String orgId, LinkedList<String> filterIds) {
-
-    Iterator<String> childrensIterator = deepChildOrganizationIds(orgId, new LinkedList<String>());
+    TreeMap<String, String> personIdsTreeMap = TreeMap.empty(Ord.stringOrd);
+    Iterator<String> childrensIterator = deepParentOrganizationIdsPlus(orgId, filterIds);
+    
     if (!childrensIterator.hasNext())
       return new NullIterator();
 
-    LinkedList<String> childrenPersonList = new LinkedList<String>();
-    // childrenPersonList.addAll(personIdLink(orgId, filterIds));
     for (; childrensIterator.hasNext();) {
       String id = childrensIterator.next();
-      childrenPersonList.addAll(personIdLink(id, filterIds));
+      personIdsTreeMap = personIdsSearch(id, filterIds,personIdsTreeMap);
     }
 
-    return childrenPersonList.iterator();
+    if (personIdsTreeMap.isEmpty())
+      return new NullIterator();
+    
+    Iterator<P2<String, String>> personIds = personIdsTreeMap.iterator();
+    return new Iterator<String>() {
+
+      @Override
+      public boolean hasNext() {
+        if (personIds.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return personIds.next()._1();
+      }
+    };
   }
 
   public Iterator<String> deepChildOrganizationIdsPlus(String orgId, LinkedList<String> filterIds) {
-    LinkedList<String> orgList = new LinkedList<String>();
+    TreeMap<String, String> orgIdsTreeMap = TreeMap.empty(Ord.stringOrd);
     if (filter(orgId, filterIds))
-      orgList.add(orgId);
-    orgList.addAll(_deepChildOrganizationIds(orgId, filterIds));
-    return orgList.iterator();
+      orgIdsTreeMap = orgIdsTreeMap.set(orgId, orgId);
+    orgIdsTreeMap = _deepChildOrganizationIds(orgId, filterIds, orgIdsTreeMap);
+
+    if (orgIdsTreeMap.isEmpty())
+      return new NullIterator();
+
+    Iterator<P2<String, String>> orgIds = orgIdsTreeMap.iterator();
+    return new Iterator<String>() {
+
+      @Override
+      public boolean hasNext() {
+        if (orgIds.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return orgIds.next()._1();
+      }
+    };
   }
 
   public Iterator<String> deepChildOrganizationIds(String orgId, LinkedList<String> filterIds) {
-    return _deepChildOrganizationIds(orgId, filterIds).iterator();
+
+    TreeMap<String, String> orgIdsTreeMap = TreeMap.empty(Ord.stringOrd);
+    TreeMap<String, String> newOrgIdsTreeMap = _deepChildOrganizationIds(orgId, filterIds, orgIdsTreeMap);
+    if (newOrgIdsTreeMap.isEmpty())
+      return new NullIterator();
+
+    Iterator<P2<String, String>> orgIds = newOrgIdsTreeMap.iterator();
+    return new Iterator<String>() {
+
+      @Override
+      public String next() {
+        return orgIds.next()._1();
+      }
+
+      @Override
+      public boolean hasNext() {
+        if (orgIds.hasNext())
+          return true;
+        return false;
+      }
+    };
   }
 
-  public LinkedList<String> _deepChildOrganizationIds(String orgId, LinkedList<String> filterIds) {
+  public TreeMap<String, String> _deepChildOrganizationIds(String orgId, LinkedList<String> filterIds,
+      TreeMap<String, String> orgIdsTreeMap) {
 
     Iterator<String> childrensIterator = childOrganizationIds(orgId, new LinkedList<String>());
     if (!childrensIterator.hasNext())
-      return new LinkedList<String>();
+      return orgIdsTreeMap;
 
-    LinkedList<String> childrenList = new LinkedList<String>();
     for (; childrensIterator.hasNext();) {
       String childrenId = childrensIterator.next();
       if (filter(childrenId, filterIds))
-        childrenList.add(childrenId);
-      childrenList.addAll(_deepChildOrganizationIds(childrenId, filterIds));
+        orgIdsTreeMap = orgIdsTreeMap.set(childrenId, childrenId);
+      orgIdsTreeMap = _deepChildOrganizationIds(childrenId, filterIds, orgIdsTreeMap);
     }
 
-    return childrenList;
+    return orgIdsTreeMap;
   }
 
   public Iterator<String> childOrganizationIds(String orgId, LinkedList<String> filterIds) {
+    TreeMap<String, String> childrenOrgIdTreeMap = TreeMap.empty(Ord.stringOrd);
+    TreeMap<String, String> newChildrenOrgIdTreeMap = _childOrganizationIds(orgId, filterIds, childrenOrgIdTreeMap);
+
+    if (newChildrenOrgIdTreeMap.isEmpty())
+      return new NullIterator();
+
+    Iterator<P2<String, String>> childrenOrgIdIterator = newChildrenOrgIdTreeMap.iterator();
+    return new Iterator<String>() {
+
+      @Override
+      public boolean hasNext() {
+        if (childrenOrgIdIterator.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return childrenOrgIdIterator.next()._1();
+      }
+    };
+
+  }
+
+  public TreeMap<String, String> _childOrganizationIds(String orgId, LinkedList<String> filterIds,
+      TreeMap<String, String> childOrgIdsTreeMap) {
 
     InterfaceTraverser orgTraverser = organizationTree.getTraverser();
 
@@ -489,7 +619,7 @@
     }, "Organization-id", orgId);
 
     if (!pairPersonIterator.hasNext())
-      return new NullIterator();
+      return childOrgIdsTreeMap;
 
     Pair<TreeNode, NodePath> person = pairPersonIterator.next();
 
@@ -503,7 +633,7 @@
     }, person, "element", "childOrganizations");
 
     if (!chilrenOrgIdsIterator.hasNext())
-      return new NullIterator();
+      return childOrgIdsTreeMap;
 
     Pair<TreeNode, NodePath> chilerenOrgIds = chilrenOrgIdsIterator.next();
 
@@ -519,16 +649,14 @@
       return false;
     }, chilerenOrgIds, "text-organizationRefIds");
 
-    LinkedList<String> ids = new LinkedList<String>();
-
     for (; chilrenOrgIdIterator.hasNext();) {
       String childrenOrgId = chilrenOrgIdIterator.next().left().getAttributes().getString("text-organizationRefIds");
       if (filter(childrenOrgId, filterIds))
-        ids.add(childrenOrgId);
+        childOrgIdsTreeMap = childOrgIdsTreeMap.set(childrenOrgId, childrenOrgId);
 
     }
 
-    return ids.iterator();
+    return childOrgIdsTreeMap;
   }
 
   public TreeNode getTarget(TreeNode node, NodePath path) {
@@ -573,13 +701,13 @@
         return false;
       if (!element.equals("Person"))
         return false;
-      String nodeId = node.getAttributes().getString("id");
+      String nodeId = node.getAttributes().getString("Person-id");
       if (nodeId == null)
         return false;
       if (nodeId.equals(personId))
         return true;
       return false;
-    }, "id", personId);
+    }, "Person-id", personId);
 
     if (!personIterator.hasNext())
       return "";
@@ -592,31 +720,31 @@
         return false;
       if (!element.equals("roleRefId"))
         return false;
-      String compareRoleId = node.getAttributes().getString("text");
+      String compareRoleId = node.getAttributes().getString("text-roleRefId");
       if (compareRoleId == null)
         return false;
       if (compareRoleId.equals(roleId))
         return true;
       return false;
-    }, targetNode, "element", "roleRefId");
+    }, targetNode, "text-roleRefId",roleId);
 
     for (; priorityIterator.hasNext();) {
       Pair<TreeNode, NodePath> priorityPair = priorityIterator.next();
       NodePath roleNodePath = priorityPair.right();
       Pair<Integer, NodePath> last = roleNodePath.last();
       NodePath priorityNodePath = last.right().add(last.left() - 1);
-      TreeNode priorityNode = getTarget(targetNode.left(), priorityNodePath);
+      TreeNode priorityNode = getTarget(personTree.getRootNode(), priorityNodePath);
       if (priorityNode.getAttributes().getString("element").equals("priority"))
-        return priorityNode.getAttributes().getString("text");
+        return priorityNode.getAttributes().getString("text-priority");
     }
     return "";
   }
 
   public Iterator<String> parentOrganizationIds(String orgId, LinkedList<String> filterIds) {
-    return _parentOrganizationIds(orgId, filterIds).iterator();
+    return _parentOrganizationIds(orgId, filterIds);
   }
 
-  public LinkedList<String> _parentOrganizationIds(String orgId, LinkedList<String> filterIds) {
+  public Iterator<String> _parentOrganizationIds(String orgId, LinkedList<String> filterIds) {
 
     InterfaceTraverser orgTraverser = organizationTree.getTraverser();
     Iterator<Pair<TreeNode, NodePath>> orgIterator = orgTraverser.find((TreeNode node) -> {
@@ -625,16 +753,16 @@
         return false;
       if (!element.equals("Organization"))
         return false;
-      String nodeId = node.getAttributes().getString("id");
+      String nodeId = node.getAttributes().getString("Organization-id");
       if (nodeId == null)
         return false;
       if (nodeId.equals(orgId))
         return true;
       return false;
-    }, "element", "Organization");
+    }, "Organization-id", orgId);
 
     if (!orgIterator.hasNext())
-      return new LinkedList<String>();
+      return new NullIterator();
 
     Pair<TreeNode, NodePath> orgNode = orgIterator.next();
 
@@ -647,61 +775,113 @@
       return false;
     }, orgNode, "element", "parentOrganizations");
 
-    LinkedList<String> parentIds = new LinkedList<String>();
+    TreeMap<String, String> parentIdsTreeMap = TreeMap.empty(Ord.stringOrd);
 
     for (; parentOrgIterator.hasNext();) {
       Pair<TreeNode, NodePath> parentOrgNode = parentOrgIterator.next();
 
-      Iterator<Pair<TreeNode, NodePath>> parentNodeIterator = orgTraverser.findInSubTree((TreeNode node) -> {
+      Iterator<Pair<TreeNode, NodePath>> parentNodeIterator = orgTraverser.findInSubTreeAllValue((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");
+        String parentId = node.getAttributes().getString("text-organizationRefId");
         if (parentId != null)
           return true;
         return false;
-      }, parentOrgNode, "element", "organizationRefId");
+      }, parentOrgNode, "text-organizationRefId");
 
       for (; parentNodeIterator.hasNext();) {
-        String parentId = parentNodeIterator.next().left().getAttributes().getString("text");
+        String parentId = parentNodeIterator.next().left().getAttributes().getString("text-organizationRefId");
         if (filter(parentId, filterIds))
-          parentIds.add(parentId);
+          parentIdsTreeMap = parentIdsTreeMap.set(parentId, parentId);
       }
 
     }
 
-    return parentIds;
+    Iterator<P2<String, String>> parentIds = parentIdsTreeMap.iterator();
+    if (parentIdsTreeMap.isEmpty())
+      return new NullIterator();
+    else
+      return new Iterator<String>() {
+
+        @Override
+        public boolean hasNext() {
+          if (parentIds.hasNext())
+            return true;
+          return false;
+        }
+
+        @Override
+        public String next() {
+          return parentIds.next()._1();
+        }
+
+      };
   }
 
   public Iterator<String> deepParentOrganizationIds(String orgId, LinkedList<String> filterIds) {
-    return _deepParentOrganizationIds(orgId, filterIds).iterator();
+    TreeMap<String, String> parentIdsTreeMap = TreeMap.empty(Ord.stringOrd);
+    Iterator<P2<String, String>> parentIds = _deepParentOrganizationIds(orgId, filterIds, parentIdsTreeMap).iterator();
+    return new Iterator<String>() {
+
+      @Override
+      public boolean hasNext() {
+        if (parentIds.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return parentIds.next()._1();
+      }
+
+    };
   }
 
-  public LinkedList<String> _deepParentOrganizationIds(String orgId, LinkedList<String> filterIds) {
+  public TreeMap<String, String> _deepParentOrganizationIds(String orgId, LinkedList<String> filterIds,
+      TreeMap<String, String> orgIds) {
 
     Iterator<String> parentIds = parentOrganizationIds(orgId, filterIds);
     if (!parentIds.hasNext())
-      return new LinkedList<String>();
-
-    LinkedList<String> parentIdList = new LinkedList<String>();
+      return orgIds;
 
     for (; parentIds.hasNext();) {
       String parentId = parentIds.next();
       if (filter(parentId, filterIds))
-        parentIdList.add(parentId);
-      parentIdList.addAll(_deepParentOrganizationIds(parentId, filterIds));
+        orgIds = orgIds.set(parentId, parentId);
+      orgIds = _deepParentOrganizationIds(parentId, filterIds, orgIds);
     }
-    return parentIdList;
+    return orgIds;
   }
 
   public Iterator<String> deepParentOrganizationIdsPlus(String id, LinkedList<String> filterIds) {
-    LinkedList<String> parentIds = new LinkedList<String>();
+    TreeMap<String, String> parentIdsTreeMap = TreeMap.empty(Ord.stringOrd);
     if (filter(id, filterIds))
-      parentIds.add(id);
-    parentIds.addAll(_deepParentOrganizationIds(id, filterIds));
-    return parentIds.iterator();
+      parentIdsTreeMap = parentIdsTreeMap.set(id, id);
+    parentIdsTreeMap = _deepParentOrganizationIds(id, filterIds, parentIdsTreeMap);
+
+    if (parentIdsTreeMap.isEmpty())
+      return new NullIterator();
+
+    Iterator<P2<String, String>> personIds = parentIdsTreeMap.iterator();
+    return new Iterator<String>() {
+
+      @Override
+      public boolean hasNext() {
+        if (personIds.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return personIds.next()._1();
+      }
+
+    };
   }
 
   public String stringPathToId(String args) {
@@ -716,13 +896,16 @@
 
     InterfaceTraverser traverser = null;
     TreeNode root = null;
+    String elementName = null;
     if (splitPath[0].equals("r")) {
       traverser = roleTree.getTraverser();
       root = roleTree.getRootNode();
+      elementName = "Role";
     }
     if (splitPath[0].equals("rde")) {
       traverser = rdeTree.getTraverser();
       root = rdeTree.getRootNode();
+      elementName = "RoleDescriptionElement";
     }
 
     Iterator<Pair<TreeNode, NodePath>> idIterator = traverser.find((TreeNode node) -> {
@@ -731,13 +914,13 @@
         return false;
       if (!element.equals("path"))
         return false;
-      String pathString = node.getAttributes().getString("text");
+      String pathString = node.getAttributes().getString("text-path");
       if (pathString == null)
         return false;
       if (pathString.equals(StrPath))
         return true;
       return false;
-    }, "text", "StrPath");
+    }, "text-path", StrPath);
 
     if (!idIterator.hasNext())
       return "";
@@ -747,7 +930,7 @@
     NodePath targetPath = path.last().right();
 
     TreeNode targetNode = getTarget(root, targetPath);
-    String targetId = targetNode.getAttributes().getString("id");
+    String targetId = targetNode.getAttributes().getString(elementName + "-id");
     return targetId;
   }
 
@@ -755,26 +938,41 @@
 
     Iterator<String> orgIds = deepParentOrganizationIdsPlus(id, filterIds);
 
-    LinkedList<String> rdeIds = new LinkedList<String>();
+   TreeMap<String,String> rdeIdsTreeMap = TreeMap.empty(Ord.stringOrd);
 
     for (; orgIds.hasNext();) {
       String orgId = orgIds.next();
       Iterator<String> roleIds = roleIds(orgId);
       for (; roleIds.hasNext();) {
         String roleId = roleIds.next();
-        String rdeId = getRde(roleId);
-        String[] rdeSplit = rdeId.split(" ");
-        for (String rde : rdeSplit) {
-          if (!rde.equals(""))
-            rdeIds.add(rde);
+        Iterator<String> rdeIds = getRde(roleId);
+        for (;rdeIds.hasNext();) {
+          String rdeId = rdeIds.next();
+          rdeIdsTreeMap = rdeIdsTreeMap.set(rdeId,rdeId);
         }
       }
     }
+    if (rdeIdsTreeMap.isEmpty())
+      return new NullIterator();
+    
+    Iterator<P2<String, String>> rdeIds = rdeIdsTreeMap.iterator();
+    return new Iterator<String>() {
 
-    return rdeIds.iterator();
+      @Override
+      public boolean hasNext() {
+        if (rdeIds.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return rdeIds.next()._1();
+      }
+    };
   }
 
-  private String getRde(String roleId) {
+  private Iterator<String> getRde(String roleId) {
 
     InterfaceTraverser traverser = roleTree.getTraverser();
 
@@ -784,35 +982,49 @@
         return false;
       if (!element.equals("Role"))
         return false;
-      String id = node.getAttributes().getString("id");
+      String id = node.getAttributes().getString("Role-id");
       if (id == null)
         return false;
       if (id.equals(roleId))
         return true;
       return false;
-    }, "id", roleId);
+    }, "Role-id", roleId);
 
     if (!roleIterator.hasNext())
-      return "";
+      return new NullIterator();
 
     Pair<TreeNode, NodePath> roleNode = roleIterator.next();
 
-    Iterator<Pair<TreeNode, NodePath>> rdeIterator = traverser.findInSubTree((TreeNode node) -> {
+    Iterator<Pair<TreeNode, NodePath>> rdeIterator = traverser.findInSubTreeAllValue((TreeNode node) -> {
       String element = node.getAttributes().getString("element");
       if (element == null)
         return false;
       if (!element.equals("roleDescriptionElementRefIds"))
         return false;
-      String rde = node.getAttributes().getString("text");
+      String rde = node.getAttributes().getString("text-roleDescriptionElementRefIds");
       if (rde != null)
         return true;
       return false;
-    }, roleNode, "element", "roleDescriptionElementRefIds");
+    }, roleNode, "text-roleDescriptionElementRefIds");
 
     if (!rdeIterator.hasNext())
-      return "";
+      return new NullIterator();
+
+    return new Iterator<String>() {
 
-    return rdeIterator.next().left().getAttributes().getString("text");
+      @Override
+      public boolean hasNext() {
+        if (rdeIterator.hasNext())
+          return true;
+        return false;
+      }
+
+      @Override
+      public String next() {
+        return rdeIterator.next().left().getAttributes().getString("text-roleDescriptionElementRefIds");
+      }
+    };
+       
   }
 
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/PersonIdsTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/PersonIdsTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -13,25 +13,47 @@
 
 public class PersonIdsTest {
 
-	@Test
-	public void PersonIdsTest() {
+  @Test
+  public void PersonIdsTest() {
+
+    JuGrix jugrix = new JuGrix(false);
+    LinkedList<String> filterIds = new LinkedList<String>();
+    filterIds.add("r:9");
+    Iterator<String> ids = jugrix.personIds("o:2", filterIds);
 
-			JuGrix jugrix = new JuGrix();
-			LinkedList<String> filterIds = new LinkedList<String>();
-			filterIds.add("r:9");
-			Iterator<String> ids = jugrix.personIds("o:2",filterIds);
+    ids.hasNext();
+    Assert.assertEquals(ids.next(), "p:45");
+    Assert.assertEquals(ids.next(), "p:1");
+
+    filterIds.add("rde:3");
+    ids = jugrix.personIds("o:2", filterIds);
+
+    ids.hasNext();
+    Assert.assertEquals(ids.next(), "p:45");
+    Assert.assertEquals(ids.next(), "p:1");
 
-			ids.hasNext();
-			Assert.assertEquals(ids.next(),"p:1");
-			 
-			filterIds.add("rde:3");
-			ids = jugrix.personIds("o:2",filterIds);
+    filterIds.add("rde:322");
+    ids = jugrix.personIds("o:2", filterIds);
+    Assert.assertFalse(ids.hasNext());
+    
+    jugrix = new JuGrix(true);
+    filterIds = new LinkedList<String>();
+    filterIds.add("r:9");
+    ids = jugrix.personIds("o:2", filterIds);
+
+    ids.hasNext();
+    Assert.assertEquals(ids.next(), "p:45");
+    Assert.assertEquals(ids.next(), "p:1");
 
-			ids.hasNext();
-			Assert.assertEquals(ids.next(),"p:1");
-			
-			filterIds.add("rde:322");
-			ids = jugrix.personIds("o:2",filterIds);
-			Assert.assertFalse(ids.hasNext());
-	}
+    filterIds.add("rde:3");
+    ids = jugrix.personIds("o:2", filterIds);
+
+    ids.hasNext();
+    Assert.assertEquals(ids.next(), "p:45");
+    Assert.assertEquals(ids.next(), "p:1");
+
+    filterIds.add("rde:322");
+    ids = jugrix.personIds("o:2", filterIds);
+    Assert.assertFalse(ids.hasNext());
+  }
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/childOrganizationIds.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/childOrganizationIds.java	Sat Nov 08 06:31:14 2014 +0900
@@ -17,14 +17,16 @@
 		Iterator<String> ids = jugrix.childOrganizationIds("o:2", list);
 		
 		Assert.assertTrue(ids.hasNext());
+
+    Assert.assertEquals(ids.next(),"o:9");
 		Assert.assertEquals(ids.next(),"o:3");
-		Assert.assertEquals(ids.next(),"o:9");
 		
     JuGrix indexJugrix = new JuGrix(true);
     ids = indexJugrix.childOrganizationIds("o:2", list);
     
     Assert.assertTrue(ids.hasNext());
+
+    Assert.assertEquals(ids.next(),"o:9");
     Assert.assertEquals(ids.next(),"o:3");
-    Assert.assertEquals(ids.next(),"o:9");
 	}
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepChildOrganizationIdsPlusTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepChildOrganizationIdsPlusTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -12,7 +12,7 @@
 
 	@Test
 	public void deepChildOrganizationIdsPlusTest(){
-		JuGrix jugrix = new JuGrix();
+		JuGrix jugrix = new JuGrix(false);
 		LinkedList<String> filterIds = new LinkedList<String>();
 		filterIds.add("r:9");
 		Iterator<String> childrenIds = jugrix.deepChildOrganizationIdsPlus("o:2", filterIds);
@@ -24,5 +24,18 @@
 		childrenIds = jugrix.deepChildOrganizationIdsPlus("o:2", filterIds);
 		Assert.assertTrue(childrenIds.hasNext());
 		Assert.assertEquals(childrenIds.next(),"o:4");
+		
+		jugrix = new JuGrix(true);
+    filterIds = new LinkedList<String>();
+    filterIds.add("r:9");
+    childrenIds = jugrix.deepChildOrganizationIdsPlus("o:2", filterIds);
+    Assert.assertTrue(childrenIds.hasNext());
+    Assert.assertEquals(childrenIds.next(),"o:2");
+    
+    filterIds = new LinkedList<String>();
+    filterIds.add("r:5");
+    childrenIds = jugrix.deepChildOrganizationIdsPlus("o:2", filterIds);
+    Assert.assertTrue(childrenIds.hasNext());
+    Assert.assertEquals(childrenIds.next(),"o:4");
 	}
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepChildOrganizationIdsTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepChildOrganizationIdsTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -12,7 +12,7 @@
 
 	@Test
 	public void deepChildOrganizationIdsTest() {
-		JuGrix jugrix = new JuGrix();
+		JuGrix jugrix = new JuGrix(false);
 		LinkedList<String> filterIds = new LinkedList<String>();
 		filterIds.add("r:5");
 		Iterator<String> childrenIds = jugrix.deepChildOrganizationIds("o:2", filterIds);
@@ -27,5 +27,22 @@
 		Assert.assertTrue(childrenIds.hasNext());
 		childrenId = childrenIds.next();
 		Assert.assertEquals(childrenId, "o:4");
+		
+		
+		jugrix = new JuGrix(true);
+    filterIds = new LinkedList<String>();
+    filterIds.add("r:5");
+    childrenIds = jugrix.deepChildOrganizationIds("o:2", filterIds);
+
+    Assert.assertTrue(childrenIds.hasNext());
+    childrenId = childrenIds.next();
+    Assert.assertEquals(childrenId, "o:4");
+
+    filterIds.add("rde:4");
+    childrenIds = jugrix.deepChildOrganizationIds("o:2", filterIds);
+
+    Assert.assertTrue(childrenIds.hasNext());
+    childrenId = childrenIds.next();
+    Assert.assertEquals(childrenId, "o:4");
 	}
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepParentOrganizationIdsPlusTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepParentOrganizationIdsPlusTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -11,18 +11,31 @@
 public class deepParentOrganizationIdsPlusTest {
 	@Test
 	public void deepParentOrganizationIdsPlus(){
-		JuGrix jugrix = new JuGrix();
+		JuGrix jugrix = new JuGrix(false);
 		LinkedList<String> filterIds = new LinkedList<String>();
 		//filterIds.add("r:2");
 		Iterator<String> childrenIds = jugrix.deepParentOrganizationIdsPlus("o:2", filterIds);
-	  Assert.assertEquals(childrenIds.next(),"o:2");
 		Assert.assertEquals(childrenIds.next(),"o:23");
 		Assert.assertEquals(childrenIds.next(),"o:22");
+    Assert.assertEquals(childrenIds.next(),"o:2");
 		
 		filterIds.add("r:2");
 		childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds);
 		
 		Assert.assertEquals(childrenIds.next(),"o:23");
 
+		
+		jugrix = new JuGrix(true);
+    filterIds = new LinkedList<String>();
+    //filterIds.add("r:2");
+    childrenIds = jugrix.deepParentOrganizationIdsPlus("o:2", filterIds);
+    Assert.assertEquals(childrenIds.next(),"o:23");
+    Assert.assertEquals(childrenIds.next(),"o:22");
+    Assert.assertEquals(childrenIds.next(),"o:2");
+    
+    filterIds.add("r:2");
+    childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds);
+    
+    Assert.assertEquals(childrenIds.next(),"o:23");
 	}
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepParentOrganizationIdsTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepParentOrganizationIdsTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -12,17 +12,24 @@
 	
 	@Test
 	public void deepParentOrganizationIds(){
-		JuGrix jugrix = new JuGrix();
+		JuGrix jugrix = new JuGrix(false);
 		LinkedList<String> filterIds = new LinkedList<String>();
 		Iterator<String> childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds);
-	//	Assert.assertEquals(childrenIds.next(),"o:2");
 		Assert.assertEquals(childrenIds.next(),"o:23");
 		Assert.assertEquals(childrenIds.next(),"o:22");
 		
 		filterIds.add("r:2");
 		childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds);
-		
 		Assert.assertEquals(childrenIds.next(),"o:23");
 
+		jugrix = new JuGrix(true);
+    filterIds = new LinkedList<String>();
+    childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds);
+    Assert.assertEquals(childrenIds.next(),"o:23");
+    Assert.assertEquals(childrenIds.next(),"o:22");
+    
+    filterIds.add("r:2");
+    childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds);
+    Assert.assertEquals(childrenIds.next(),"o:23");
 	}
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepPersonIdsTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/deepPersonIdsTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -10,7 +10,7 @@
 public class deepPersonIdsTest {
 	@Test
 	public void deepPersonIdsTest(){
-		JuGrix jugrix = new JuGrix();
+		JuGrix jugrix = new JuGrix(false);
 		LinkedList<String> filterIds = new LinkedList<String>();
 		//filterIds.add("r:9");
 		Iterator<String> ids = jugrix.deepPersonIds("o:3",filterIds);
@@ -18,6 +18,17 @@
 		for (;ids.hasNext();) {
 			System.out.println(ids.next());
 		}
+		
+		
+	  jugrix = new JuGrix(true);
+	  filterIds = new LinkedList<String>();
+	  //filterIds.add("r:9");
+	  ids = jugrix.deepPersonIds("o:3",filterIds);
+	  System.out.println("------------------------------------------------");
+	  for (;ids.hasNext();) {
+	    System.out.println(ids.next());
+	  }
 	}
+	
 
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/parentOrganizationIdsTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/parentOrganizationIdsTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -11,15 +11,26 @@
 public class parentOrganizationIdsTest {
 	@Test
 	public void parentOrganizationIdsTest() {
-		JuGrix jugrix = new JuGrix();
+		JuGrix jugrix = new JuGrix(false);
 		LinkedList<String> filterIds = new LinkedList<String>();
 		filterIds.add("r:2");
 		Iterator<String> childrenIds = jugrix.parentOrganizationIds("o:2", filterIds);
 		Assert.assertTrue(childrenIds.hasNext());
 		Assert.assertEquals(childrenIds.next(), "o:23");
 		
-		filterIds.add("r:2w");
+		filterIds.add("r:2a");
 		childrenIds = jugrix.parentOrganizationIds("o:2", filterIds);
 		Assert.assertFalse(childrenIds.hasNext());
+		
+		jugrix = new JuGrix(true);
+    filterIds = new LinkedList<String>();
+    filterIds.add("r:2");
+    childrenIds = jugrix.parentOrganizationIds("o:2", filterIds);
+    Assert.assertTrue(childrenIds.hasNext());
+    Assert.assertEquals(childrenIds.next(), "o:23");
+    
+    filterIds.add("r:2a");
+    childrenIds = jugrix.parentOrganizationIds("o:2", filterIds);
+    Assert.assertFalse(childrenIds.hasNext());
 	}
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/roleDescriptionElementIdsTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/roleDescriptionElementIdsTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -13,13 +13,23 @@
 
 	@Test
 	public void roleDescriptionElementIdsTest(){
-		JuGrix jugrix = new JuGrix();
+		JuGrix jugrix = new JuGrix(true
+		    );
 		LinkedList<String> ids = new LinkedList<String>();
 		//ids.add("o:34");
 		Iterator<String> rdeIds = jugrix.roleDescriptionElementIds("o:2",ids);
 		Assert.assertEquals(rdeIds.next(),"rde:3");
 		Assert.assertEquals(rdeIds.next(),"rde:2");
-		Assert.assertEquals(rdeIds.next(),"rde:1");
-		Assert.assertEquals(rdeIds.next(),"rde:10");
+    Assert.assertEquals(rdeIds.next(),"rde:10");
+    Assert.assertEquals(rdeIds.next(),"rde:1");
+	  
+	  jugrix = new JuGrix(true);
+    ids = new LinkedList<String>();
+    //ids.add("o:34");
+    rdeIds = jugrix.roleDescriptionElementIds("o:2",ids);
+    Assert.assertEquals(rdeIds.next(),"rde:3");
+    Assert.assertEquals(rdeIds.next(),"rde:2");
+    Assert.assertEquals(rdeIds.next(),"rde:10");
+    Assert.assertEquals(rdeIds.next(),"rde:1");
 	}
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/roleIdsTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/roleIdsTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -7,22 +7,33 @@
 
 import org.junit.Test;
 
-
 public class roleIdsTest {
 
-	@Test
-	public void roleIdsTest(){
-			JuGrix jugrix = new JuGrix();
-			Iterator<String> orgIds = jugrix.roleIds("o:6");
-			orgIds.hasNext();
-			Assert.assertEquals(orgIds.next(),"r:18");
-			Assert.assertFalse(orgIds.hasNext());
-			
-			Iterator<String> personIds = jugrix.roleIds("p:1");
-			personIds.hasNext();
-			Assert.assertEquals(personIds.next(),"r:10");
-			personIds.hasNext();
-			Assert.assertEquals(personIds.next(),"r:34");
+  @Test
+  public void roleIdsTest() {
+    JuGrix jugrix = new JuGrix(false);
+    Iterator<String> orgIds = jugrix.roleIds("o:6");
+    orgIds.hasNext();
+    Assert.assertEquals(orgIds.next(), "r:18");
+    Assert.assertFalse(orgIds.hasNext());
 
-	}
+    Iterator<String> personIds = jugrix.roleIds("p:1");
+    personIds.hasNext();
+    Assert.assertEquals(personIds.next(), "r:34");
+    personIds.hasNext();
+    Assert.assertEquals(personIds.next(), "r:10");
+    
+    jugrix = new JuGrix(true);
+    orgIds = jugrix.roleIds("o:6");
+    orgIds.hasNext();
+    Assert.assertEquals(orgIds.next(), "r:18");
+    Assert.assertFalse(orgIds.hasNext());
+
+    personIds = jugrix.roleIds("p:1");
+    personIds.hasNext();
+    Assert.assertEquals(personIds.next(), "r:34");
+    personIds.hasNext();
+    Assert.assertEquals(personIds.next(), "r:10");
+
+  }
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/rolePriorityTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/rolePriorityTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -9,8 +9,12 @@
 
 	@Test
 	public void rolePriorityTest(){
-		JuGrix jugrix = new JuGrix();
+		JuGrix jugrix = new JuGrix(false);
 		String priority = jugrix.rolePriority("p:1", "r:34");
 		Assert.assertEquals(priority,"1");
+		
+		jugrix = new JuGrix(true);
+    priority = jugrix.rolePriority("p:1", "r:34");
+    Assert.assertEquals(priority,"1");
 	}
 }
--- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/stringPathToIdTest.java	Fri Nov 07 03:44:59 2014 +0900
+++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/stringPathToIdTest.java	Sat Nov 08 06:31:14 2014 +0900
@@ -6,12 +6,18 @@
 import org.junit.Test;
 
 public class stringPathToIdTest {
-	@Test
-	public void stringPathToIdTest(){
-		JuGrix jugrix = new JuGrix();
-		String id = jugrix.stringPathToId("r:path:エスアールエルテクノシステム/臨検システム部/業務システムグループ");
-		Assert.assertEquals(id,"r:43");
-		id = jugrix.stringPathToId("rde:path:システム開発申請書/組織的役割/起票部署");
-		Assert.assertEquals(id, "rde:10");
- 	}
+  @Test
+  public void stringPathToIdTest() {
+    JuGrix jugrix = new JuGrix(false);
+    String id = jugrix.stringPathToId("r:path:エスアールエルテクノシステム/臨検システム部/業務システムグループ");
+    Assert.assertEquals(id, "r:43");
+    id = jugrix.stringPathToId("rde:path:システム開発申請書/組織的役割/起票部署");
+    Assert.assertEquals(id, "rde:10");
+
+    jugrix = new JuGrix(true);
+    id = jugrix.stringPathToId("r:path:エスアールエルテクノシステム/臨検システム部/業務システムグループ");
+    Assert.assertEquals(id, "r:43");
+    id = jugrix.stringPathToId("rde:path:システム開発申請書/組織的役割/起票部署");
+    Assert.assertEquals(id, "rde:10");
+  }
 }