# HG changeset patch # User one # Date 1414224603 -32400 # Node ID 67305f53aad079054c549cb66f61d2e4496805dc # Parent ccb74917f06ab28979399c06bd79d2c6cc18bfad change fj List to LinkedList diff -r ccb74917f06a -r 67305f53aad0 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 Sat Oct 25 10:52:50 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java Sat Oct 25 17:10:03 2014 +0900 @@ -1,10 +1,10 @@ package jp.ac.u_ryukyu.cr.ie.tatsuki.bbs; import java.util.Iterator; +import java.util.LinkedList; import java.util.regex.Matcher; import java.util.regex.Pattern; -import fj.data.List; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; @@ -49,21 +49,21 @@ public Iterator personIds(String id){ - List names = personIdsSearch(id); + LinkedList names = personIdsSearch(id); return names.iterator(); } - public Iterator personIds(List ids){ + public Iterator personIds(LinkedList ids){ - List personIds = List.nil(); - + LinkedList personIds = new LinkedList(); + for (String id : ids) { - personIds = personIds.append(personIdsSearch(id)); + personIds.addAll(personIdsSearch(id)); } return personIds.iterator(); } - private List personIdsSearch(String id) { + private LinkedList personIdsSearch(String id) { InterfaceTraverser ifTraverser = personTree.getTraverser(); Iterator> pairPersonIterator = ifTraverser.find( (TreeNode node) -> { @@ -76,7 +76,7 @@ } ,"element","Person"); - List names = List.nil(); + LinkedList names = new LinkedList(); for (;pairPersonIterator.hasNext();) { Pair pairPerson = pairPersonIterator.next(); @@ -91,7 +91,7 @@ } ,pairPerson.left(),"text",id); if (pairIdIterator.hasNext()) - names = names.cons(pairPerson.left().getAttributes().getString("id")); + names.add(pairPerson.left().getAttributes().getString("id")); } return names; @@ -132,7 +132,7 @@ } ,"id",id); - List ids = List.nil(); + LinkedList ids = new LinkedList(); for (;searchTargetIterator.hasNext();) { @@ -163,7 +163,7 @@ } if (attribute != null) { - ids = ids.cons(attribute); + ids.add(attribute); System.out.println("-------------------------" + attribute + "-------------------------"); } } @@ -175,21 +175,7 @@ public Iterator competentRoleId(String personId) { InterfaceTraverser ifTraverser = personTree.getTraverser(); - Iterator> 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("id"); - if (nodeId == null) - return false; - if (nodeId.equals(personId)) - return true; - return false; - } - ,"element","Person"); + Iterator> pairPersonIterator = searchPerson(personId, ifTraverser); if (!pairPersonIterator.hasNext()) return new NullIterator(); @@ -212,14 +198,14 @@ ,person); - List idList = List.nil(); + LinkedList idList = new LinkedList(); for (;targetPairIterator.hasNext();) { NodePath searchPath = targetPairIterator.next().right(); Pair searchPair = searchPath.last(); NodePath targetPath = searchPair.right().add(searchPair.left() + 1); TreeNode targetNode = getTarget(person, targetPath); String id = targetNode.getAttributes().getString("text"); - idList = idList.cons(id); + idList.add(id); } return idList.iterator(); @@ -229,21 +215,8 @@ public Iterator concurrentRoleIds(String personId) { InterfaceTraverser ifTraverser = personTree.getTraverser(); - Iterator> 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("id"); - if (nodeId == null) - return false; - if (nodeId.equals(personId)) - return true; - return false; - } - ,"element","Person"); + Iterator> pairPersonIterator = searchPerson( + personId, ifTraverser); if (!pairPersonIterator.hasNext()) return new NullIterator(); @@ -266,18 +239,106 @@ ,person); - List idList = List.nil(); + LinkedList idList = new LinkedList(); for (;targetPairIterator.hasNext();) { NodePath searchPath = targetPairIterator.next().right(); Pair searchPair = searchPath.last(); NodePath targetPath = searchPair.right().add(searchPair.left() + 1); TreeNode targetNode = getTarget(person, targetPath); String id = targetNode.getAttributes().getString("text"); - idList = idList.cons(id); + idList.add(id); } return idList.iterator(); } + private Iterator> searchPerson(String personId, + InterfaceTraverser ifTraverser) { + Iterator> 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("id"); + if (nodeId == null) + return false; + if (nodeId.equals(personId)) + return true; + return false; + } + ,"element","Person"); + return pairPersonIterator; + } + + + public Iterator childOrganizationIds(String orgId) { + InterfaceTraverser ifTraverser = organizationTree.getTraverser(); + Iterator> pairPersonIterator = searchOrganization(orgId, ifTraverser); + + if (!pairPersonIterator.hasNext()) + return new NullIterator(); + TreeNode person = pairPersonIterator.next().left(); + + Iterator> chilrenOrgIdsIterator = ifTraverser.find( + (TreeNode node) -> { + String nodeElement = node.getAttributes().getString("element"); + if (nodeElement == null) + return false; + if (nodeElement.equals("childOrganizations")) + return true; + return false; + } + ,person); + + if (!chilrenOrgIdsIterator.hasNext()) + return new NullIterator(); + + TreeNode chilerenOrgIds = chilrenOrgIdsIterator.next().left(); + + Iterator> chilrenOrgIdIterator = ifTraverser.find( + (TreeNode node) -> { + String nodeElement = node.getAttributes().getString("element"); + if (nodeElement == null) + return false; + if (!nodeElement.equals("organizationRefIds")) + return false; + nodeElement = node.getAttributes().getString("text"); + if (nodeElement != null) + return true; + return false; + } + ,person); + + LinkedList ids = new LinkedList(); + + for (;chilrenOrgIdIterator.hasNext();) { + ids.add(chilrenOrgIdIterator.next().left().getAttributes().getString("text")); + } + + return ids.iterator(); + } + + + private Iterator> searchOrganization(String orgId, + InterfaceTraverser ifTraverser) { + Iterator> pairPersonIterator = ifTraverser.find( + (TreeNode node) -> { + String nodeElement = node.getAttributes().getString("element"); + if (nodeElement == null) + return false; + if (!nodeElement.equals("Organization")) + return false; + String nodeId = node.getAttributes().getString("id"); + if (nodeId == null) + return false; + if (nodeId.equals(orgId)) + return true; + return false; + } + ,"element","Organization"); + return pairPersonIterator; + } public TreeNode getTarget(TreeNode node , NodePath path){ TreeNode target; @@ -313,4 +374,5 @@ } + } diff -r ccb74917f06a -r 67305f53aad0 src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/PersonIdsTest.java --- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/PersonIdsTest.java Sat Oct 25 10:52:50 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/PersonIdsTest.java Sat Oct 25 17:10:03 2014 +0900 @@ -18,9 +18,9 @@ Iterator ids = jugrix.personIds("o:2"); ids.hasNext(); - Assert.assertEquals(ids.next(),"p:45"); + Assert.assertEquals(ids.next(),"p:1"); ids.hasNext(); - Assert.assertEquals(ids.next(),"p:1"); + Assert.assertEquals(ids.next(),"p:45"); } }