# HG changeset patch # User one # Date 1415541413 -32400 # Node ID 96dcbd8e2fcb13573850ae74ca0c48a681fbef5a # Parent b8d86bc46b51c97d53baaa61cf28db55d006ef91 refactoring diff -r b8d86bc46b51 -r 96dcbd8e2fcb 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 Sun Nov 09 17:56:49 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/cr/ie/tatsuki/bbs/JuGrix.java Sun Nov 09 22:56:53 2014 +0900 @@ -5,7 +5,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; - import ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader.LoadXml; import fj.Ord; import fj.P2; @@ -49,8 +48,8 @@ public boolean isActive(String id) { - InterfaceTraverser ifTraverser = personTree.getTraverser(); - Iterator> pairIterator = ifTraverser.find((TreeNode node) -> { + InterfaceTraverser personTraverser = personTree.getTraverser(); + Iterator> personIdpairIterator = personTraverser.find((TreeNode node) -> { String personId = node.getAttributes().getString("Person-id"); if (personId == null) return false; @@ -59,17 +58,23 @@ return false; }, "Person-id", id); - if (pairIterator.hasNext()) + if (personIdpairIterator.hasNext()) return true; return false; } - + public Iterator personIds(String orgId, LinkedList roleIds) { - public Iterator personIds(String orgId, LinkedList roleIds) { - TreeMap personIds = TreeMap.empty(Ord.stringOrd); - TreeMap personIdsTreeMap = personIdsSearch(orgId, roleIds, personIds); + Iterator parentOrgIdIterator = parentOrganizationIds(orgId, roleIds); + TreeMap personIdsTreeMap = TreeMap.empty(Ord.stringOrd); + + if (filter(orgId, roleIds)) + personIdsTreeMap = personIdsSearch(orgId, personIdsTreeMap); + + for (; parentOrgIdIterator.hasNext();) { + personIdsTreeMap = personIdsSearch(parentOrgIdIterator.next(), personIdsTreeMap); + } if (personIdsTreeMap.isEmpty()) return new NullIterator(); @@ -96,37 +101,40 @@ TreeMap personIds = TreeMap.empty(Ord.stringOrd); for (String orgId : orgIds) { - personIds = personIdsSearch(orgId, roleIds, personIds); + personIds = personIdsSearch(orgId, personIds); } if (personIds.isEmpty()) return new NullIterator(); Iterator> personIdsIterator = personIds.iterator(); + return new Iterator() { + String personId; @Override public boolean hasNext() { - if (personIdsIterator.hasNext()) - return true; + for (; personIdsIterator.hasNext();) { + personId = personIdsIterator.next()._1(); + if (filter(personId, roleIds)) + return true; + } return false; } @Override public String next() { - return personIdsIterator.next()._1(); + return personId; } }; } - private TreeMap personIdsSearch(String id, LinkedList roleIds, TreeMap orgIds) { - - if (!filter(id, roleIds)) - return orgIds; + private TreeMap personIdsSearch(String orgId, TreeMap orgIdsTreeMap) { InterfaceTraverser personTraverser = personTree.getTraverser(); - Iterator> pairPersonIterator = personTraverser.findAll((TreeNode node) -> { + + Iterator> personIdPairIterator = personTraverser.findAll((TreeNode node) -> { String personId = node.getAttributes().getString("element"); if (personId == null) return false; @@ -135,25 +143,26 @@ return false; }, "Person-id"); - for (; pairPersonIterator.hasNext();) { + for (; personIdPairIterator.hasNext();) { - Pair pairPerson = pairPersonIterator.next(); - Iterator> pairIdIterator = personTraverser.findInSubTree((TreeNode node) -> { + Pair personIdPair = personIdPairIterator.next(); + + Iterator> orgIdPairIterator = personTraverser.findInSubTree((TreeNode node) -> { String personId = node.getAttributes().getString("text-organizationRefId"); if (personId == null) return false; - if (personId.equals(id)) + if (personId.equals(orgId)) return true; return false; - }, pairPerson, "text-organizationRefId", id); + }, personIdPair, "text-organizationRefId", orgId); - if (pairIdIterator.hasNext()) { - String name = pairPerson.left().getAttributes().getString("Person-id"); - if (name != null) - orgIds = orgIds.set(name, name); + if (orgIdPairIterator.hasNext()) { + String personId = personIdPair.left().getAttributes().getString("Person-id"); + if (personId != null) + orgIdsTreeMap = orgIdsTreeMap.set(personId, personId); } } - return orgIds; + return orgIdsTreeMap; } public boolean filter(String orgId, LinkedList roleIds) { @@ -306,13 +315,14 @@ return searchRoleIds(organizationTree, id, "Organization"); } - return null; + return new NullIterator(); } public Iterator searchRoleIds(JungleTree tree, String id, String element) { - InterfaceTraverser ifTraverser = tree.getTraverser(); - Iterator> searchTargetIterator = ifTraverser.find((TreeNode node) -> { + InterfaceTraverser traverser = tree.getTraverser(); + + Iterator> idPairIterator = traverser.find((TreeNode node) -> { String nodeElement = node.getAttributes().getString("element"); if (nodeElement == null) return false; @@ -329,10 +339,11 @@ TreeMap idsTreeMap = TreeMap.empty(Ord.stringOrd); ; - for (; searchTargetIterator.hasNext();) { + for (; idPairIterator.hasNext();) { - Pair searchTargetPair = searchTargetIterator.next(); - Iterator> pairIdIterator = ifTraverser.findInSubTreeAllValue((TreeNode node) -> { + Pair targetPair = idPairIterator.next(); + + Iterator> roleIdPairIterator = traverser.findInSubTreeAllValue((TreeNode node) -> { String nodeElement = node.getAttributes().getString("element"); if (nodeElement == null) return false; @@ -342,12 +353,12 @@ if (nodeId != null) return true; return false; - }, searchTargetPair, "text-roleRefId"); + }, targetPair, "text-roleRefId"); - for (; pairIdIterator.hasNext();) { - Pair idNodePath = pairIdIterator.next(); - String attribute = idNodePath.left().getAttributes().getString("text-roleRefId"); - idsTreeMap = idsTreeMap.set(attribute, attribute); + for (; roleIdPairIterator.hasNext();) { + Pair roleIdPair = roleIdPairIterator.next(); + String roleId = roleIdPair.left().getAttributes().getString("text-roleRefId"); + idsTreeMap = idsTreeMap.set(roleId, roleId); } } @@ -374,8 +385,8 @@ public Iterator competentRoleId(String personId) { - InterfaceTraverser ifTraverser = personTree.getTraverser(); - Iterator> pairPersonIterator = ifTraverser.find((TreeNode node) -> { + InterfaceTraverser personTraverser = personTree.getTraverser(); + Iterator> personIdPairIterator = personTraverser.find((TreeNode node) -> { String nodeElement = node.getAttributes().getString("element"); if (nodeElement == null) return false; @@ -389,11 +400,12 @@ return false; }, "Person-id", personId); - if (!pairPersonIterator.hasNext()) + if (!personIdPairIterator.hasNext()) return new NullIterator(); - Pair person = pairPersonIterator.next(); - Iterator> targetPairIterator = ifTraverser.findInSubTree((TreeNode node) -> { + Pair personIdPair = personIdPairIterator.next(); + + Iterator> priorityPairIterator = personTraverser.findInSubTree((TreeNode node) -> { String nodeElement = node.getAttributes().getString("element"); if (nodeElement == null) return false; @@ -405,26 +417,41 @@ if (priority.equals("0")) return true; return false; - }, person, "text-priority", "0"); + }, personIdPair, "text-priority", "0"); + + TreeMap roleIdTreeMap = TreeMap.empty(Ord.stringOrd); + + for (; priorityPairIterator.hasNext();) { - 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(personTree.getRootNode(), targetPath); - // TreeNode targetNode = getTarget(person.left(), targetPath); - String id = targetNode.getAttributes().getString("text-roleRefId"); - idList.add(id); + Pair priorityPair = priorityPairIterator.next(); + NodePath priorityPath = priorityPair.right(); + Pair removeLastPair = priorityPath.last(); + NodePath roleIdNodePath = removeLastPair.right().add(removeLastPair.left() + 1); + TreeNode roleIdNode = getTarget(personTree.getRootNode(), roleIdNodePath); + String roleId = roleIdNode.getAttributes().getString("text-roleRefId"); + roleIdTreeMap = roleIdTreeMap.set(roleId, roleId); } + Iterator> roleIdP2Iterator = roleIdTreeMap.iterator(); + return new Iterator() { - return idList.iterator(); + @Override + public boolean hasNext() { + if (roleIdP2Iterator.hasNext()) + return true; + return false; + } + + @Override + public String next() { + return roleIdP2Iterator.next()._1(); + } + }; } public Iterator concurrentRoleIds(String personId) { - InterfaceTraverser ifTraverser = personTree.getTraverser(); - Iterator> pairPersonIterator = ifTraverser.find((TreeNode node) -> { + InterfaceTraverser personTraverser = personTree.getTraverser(); + Iterator> personIdPairIterator = personTraverser.find((TreeNode node) -> { String nodeElement = node.getAttributes().getString("element"); if (nodeElement == null) return false; @@ -438,55 +465,74 @@ return false; }, "Person-id", personId); - if (!pairPersonIterator.hasNext()) + if (!personIdPairIterator.hasNext()) return new NullIterator(); - Pair person = pairPersonIterator.next(); + + Pair personidPair = personIdPairIterator.next(); - Iterator> 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-priority"); - if (priority != null) - return true; - return false; - }, person, "text-priority"); + Iterator> priorityPairIterator = personTraverser.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-priority"); + if (priority != null) + return true; + return false; + }, personidPair, "text-priority"); - LinkedList idList = new LinkedList(); - for (; targetPairIterator.hasNext();) { - Pair targetPair = targetPairIterator.next(); - TreeNode targetNode = targetPair.left(); - int priority = Integer.parseInt(targetNode.getAttributes().getString("text-priority")); + TreeMap roleIdTreeMap = TreeMap.empty(Ord.stringOrd); + + for (; priorityPairIterator.hasNext();) { + + Pair priorityPair = priorityPairIterator.next(); + TreeNode priorityNode = priorityPair.left(); + int priority = Integer.parseInt(priorityNode.getAttributes().getString("text-priority")); if (priority > 0) { - NodePath targetPath = targetPair.right(); - Pair searchPair = targetPath.last(); - NodePath roleIdNodePath = searchPair.right().add(searchPair.left() + 1); + NodePath priorityPath = priorityPair.right(); + Pair removeLastPair = priorityPath.last(); + NodePath roleIdNodePath = removeLastPair.right().add(removeLastPair.left() + 1); TreeNode roleIdNode = getTarget(personTree.getRootNode(), roleIdNodePath); - String id = roleIdNode.getAttributes().getString("text-roleRefId"); - idList.add(id); + String roleId = roleIdNode.getAttributes().getString("text-roleRefId"); + roleIdTreeMap = roleIdTreeMap.set(roleId, roleId); } } + Iterator> roleIdP2Iterator = roleIdTreeMap.iterator(); + return new Iterator() { - return idList.iterator(); + @Override + public boolean hasNext() { + if (roleIdP2Iterator.hasNext()) + return true; + return false; + } + + @Override + public String next() { + return roleIdP2Iterator.next()._1(); + } + }; } public Iterator deepPersonIds(String orgId, LinkedList filterIds) { + TreeMap personIdsTreeMap = TreeMap.empty(Ord.stringOrd); - Iterator childrensIterator = deepParentOrganizationIdsPlus(orgId, filterIds); + Iterator childrensIterator = deepChildOrganizationIdsPlus(orgId, filterIds); + if (!childrensIterator.hasNext()) return new NullIterator(); for (; childrensIterator.hasNext();) { String id = childrensIterator.next(); - personIdsTreeMap = personIdsSearch(id, filterIds,personIdsTreeMap); + personIdsTreeMap = personIdsSearch(id, personIdsTreeMap); } if (personIdsTreeMap.isEmpty()) return new NullIterator(); - + Iterator> personIds = personIdsTreeMap.iterator(); return new Iterator() { @@ -506,26 +552,31 @@ public Iterator deepChildOrganizationIdsPlus(String orgId, LinkedList filterIds) { TreeMap orgIdsTreeMap = TreeMap.empty(Ord.stringOrd); - if (filter(orgId, filterIds)) - orgIdsTreeMap = orgIdsTreeMap.set(orgId, orgId); - orgIdsTreeMap = _deepChildOrganizationIds(orgId, filterIds, orgIdsTreeMap); + + orgIdsTreeMap = orgIdsTreeMap.set(orgId, orgId); + orgIdsTreeMap = _deepChildOrganizationIds(orgId, orgIdsTreeMap); if (orgIdsTreeMap.isEmpty()) return new NullIterator(); - Iterator> orgIds = orgIdsTreeMap.iterator(); + Iterator> orgIdsP2Iterator = orgIdsTreeMap.iterator(); return new Iterator() { + String childOrgId; + @Override public boolean hasNext() { - if (orgIds.hasNext()) - return true; + for (; orgIdsP2Iterator.hasNext();) { + childOrgId = orgIdsP2Iterator.next()._1(); + if (filter(childOrgId, filterIds)) + return true; + } return false; } @Override public String next() { - return orgIds.next()._1(); + return childOrgId; } }; } @@ -533,39 +584,45 @@ public Iterator deepChildOrganizationIds(String orgId, LinkedList filterIds) { TreeMap orgIdsTreeMap = TreeMap.empty(Ord.stringOrd); - TreeMap newOrgIdsTreeMap = _deepChildOrganizationIds(orgId, filterIds, orgIdsTreeMap); + TreeMap newOrgIdsTreeMap = _deepChildOrganizationIds(orgId, orgIdsTreeMap); if (newOrgIdsTreeMap.isEmpty()) return new NullIterator(); - Iterator> orgIds = newOrgIdsTreeMap.iterator(); + Iterator> orgIdP2Iterator = newOrgIdsTreeMap.iterator(); + return new Iterator() { + String childOrgId; @Override public String next() { - return orgIds.next()._1(); + return childOrgId; } @Override public boolean hasNext() { - if (orgIds.hasNext()) - return true; + for (; orgIdP2Iterator.hasNext();) { + childOrgId = orgIdP2Iterator.next()._1(); + if (filter(childOrgId, filterIds)) + return true; + } return false; } }; } - public TreeMap _deepChildOrganizationIds(String orgId, LinkedList filterIds, - TreeMap orgIdsTreeMap) { + public TreeMap _deepChildOrganizationIds(String orgId, TreeMap orgIdsTreeMap) { - Iterator childrensIterator = childOrganizationIds(orgId, new LinkedList()); - if (!childrensIterator.hasNext()) + TreeMap childrenIdTreeMap = _childOrganizationIds(orgId, TreeMap.empty(Ord.stringOrd)); + + if (childrenIdTreeMap.isEmpty()) return orgIdsTreeMap; - for (; childrensIterator.hasNext();) { - String childrenId = childrensIterator.next(); - if (filter(childrenId, filterIds)) - orgIdsTreeMap = orgIdsTreeMap.set(childrenId, childrenId); - orgIdsTreeMap = _deepChildOrganizationIds(childrenId, filterIds, orgIdsTreeMap); + Iterator> childrenIdIterator = childrenIdTreeMap.iterator(); + + for (; childrenIdIterator.hasNext();) { + String childrenId = childrenIdIterator.next()._1(); + orgIdsTreeMap = orgIdsTreeMap.set(childrenId, childrenId); + orgIdsTreeMap = _deepChildOrganizationIds(childrenId, orgIdsTreeMap); } return orgIdsTreeMap; @@ -573,35 +630,40 @@ public Iterator childOrganizationIds(String orgId, LinkedList filterIds) { TreeMap childrenOrgIdTreeMap = TreeMap.empty(Ord.stringOrd); - TreeMap newChildrenOrgIdTreeMap = _childOrganizationIds(orgId, filterIds, childrenOrgIdTreeMap); + TreeMap newChildrenOrgIdTreeMap = _childOrganizationIds(orgId, childrenOrgIdTreeMap); if (newChildrenOrgIdTreeMap.isEmpty()) return new NullIterator(); Iterator> childrenOrgIdIterator = newChildrenOrgIdTreeMap.iterator(); + return new Iterator() { + String childOrgId; @Override public boolean hasNext() { - if (childrenOrgIdIterator.hasNext()) - return true; + + if (childrenOrgIdIterator.hasNext()) { + childOrgId = childrenOrgIdIterator.next()._1(); + if (filter(childOrgId, filterIds)) + return true; + } return false; } @Override public String next() { - return childrenOrgIdIterator.next()._1(); + return childOrgId; } }; } - public TreeMap _childOrganizationIds(String orgId, LinkedList filterIds, - TreeMap childOrgIdsTreeMap) { + public TreeMap _childOrganizationIds(String orgId, TreeMap childOrgIdsTreeMap) { InterfaceTraverser orgTraverser = organizationTree.getTraverser(); - Iterator> pairPersonIterator = orgTraverser.find((TreeNode node) -> { + Iterator> orgIdPairIterator = orgTraverser.find((TreeNode node) -> { String nodeElement = node.getAttributes().getString("element"); if (nodeElement == null) return false; @@ -615,41 +677,42 @@ return false; }, "Organization-id", orgId); - if (!pairPersonIterator.hasNext()) + if (!orgIdPairIterator.hasNext()) return childOrgIdsTreeMap; - Pair person = pairPersonIterator.next(); + Pair orgIdPair = orgIdPairIterator.next(); - Iterator> chilrenOrgIdsIterator = orgTraverser.findInSubTree((TreeNode node) -> { + Iterator> chilrenOrgPairIterator = orgTraverser.findInSubTree((TreeNode node) -> { String nodeElement = node.getAttributes().getString("element"); if (nodeElement == null) return false; if (nodeElement.equals("childOrganizations")) return true; return false; - }, person, "element", "childOrganizations"); + }, orgIdPair, "element", "childOrganizations"); - if (!chilrenOrgIdsIterator.hasNext()) + if (!chilrenOrgPairIterator.hasNext()) return childOrgIdsTreeMap; - Pair chilerenOrgIds = chilrenOrgIdsIterator.next(); + Pair chilerenOrg = chilrenOrgPairIterator.next(); - Iterator> chilrenOrgIdIterator = orgTraverser.findInSubTreeAllValue((TreeNode node) -> { - String nodeElement = node.getAttributes().getString("element"); - if (nodeElement == null) - return false; - if (!nodeElement.equals("organizationRefIds")) - return false; - nodeElement = node.getAttributes().getString("text-organizationRefIds"); - if (nodeElement != null) - return true; - return false; - }, chilerenOrgIds, "text-organizationRefIds"); + Iterator> chilrenOrgIdPairIterator = orgTraverser.findInSubTreeAllValue( + (TreeNode node) -> { + String nodeElement = node.getAttributes().getString("element"); + if (nodeElement == null) + return false; + if (!nodeElement.equals("organizationRefIds")) + return false; + nodeElement = node.getAttributes().getString("text-organizationRefIds"); + if (nodeElement != null) + return true; + return false; + }, chilerenOrg, "text-organizationRefIds"); - for (; chilrenOrgIdIterator.hasNext();) { - String childrenOrgId = chilrenOrgIdIterator.next().left().getAttributes().getString("text-organizationRefIds"); - if (filter(childrenOrgId, filterIds)) - childOrgIdsTreeMap = childOrgIdsTreeMap.set(childrenOrgId, childrenOrgId); + for (; chilrenOrgIdPairIterator.hasNext();) { + String childrenOrgId = chilrenOrgIdPairIterator.next().left().getAttributes() + .getString("text-organizationRefIds"); + childOrgIdsTreeMap = childOrgIdsTreeMap.set(childrenOrgId, childrenOrgId); } @@ -691,27 +754,29 @@ } public String rolePriority(String personId, String roleId) { + InterfaceTraverser personTraverser = personTree.getTraverser(); - Iterator> personIterator = personTraverser.find((TreeNode node) -> { + + Iterator> personIdPairIterator = personTraverser.find((TreeNode node) -> { String element = node.getAttributes().getString("element"); if (element == null) return false; if (!element.equals("Person")) return false; - String nodeId = node.getAttributes().getString("Person-id"); - if (nodeId == null) + String nodePersonId = node.getAttributes().getString("Person-id"); + if (nodePersonId == null) return false; - if (nodeId.equals(personId)) + if (nodePersonId.equals(personId)) return true; return false; }, "Person-id", personId); - if (!personIterator.hasNext()) + if (!personIdPairIterator.hasNext()) return ""; - Pair targetNode = personIterator.next(); + Pair targetPersonIdPair = personIdPairIterator.next(); - Iterator> priorityIterator = personTraverser.findInSubTree((TreeNode node) -> { + Iterator> roleIdPairIterator = personTraverser.findInSubTree((TreeNode node) -> { String element = node.getAttributes().getString("element"); if (element == null) return false; @@ -723,13 +788,13 @@ if (compareRoleId.equals(roleId)) return true; return false; - }, targetNode, "text-roleRefId",roleId); + }, targetPersonIdPair, "text-roleRefId", roleId); - for (; priorityIterator.hasNext();) { - Pair priorityPair = priorityIterator.next(); - NodePath roleNodePath = priorityPair.right(); - Pair last = roleNodePath.last(); - NodePath priorityNodePath = last.right().add(last.left() - 1); + for (; roleIdPairIterator.hasNext();) { + Pair roleIdPair = roleIdPairIterator.next(); + NodePath roleIdNodePath = roleIdPair.right(); + Pair removeLastPath = roleIdNodePath.last(); + NodePath priorityNodePath = removeLastPath.right().add(removeLastPath.left() - 1); TreeNode priorityNode = getTarget(personTree.getRootNode(), priorityNodePath); if (priorityNode.getAttributes().getString("element").equals("priority")) return priorityNode.getAttributes().getString("text-priority"); @@ -738,13 +803,37 @@ } public Iterator parentOrganizationIds(String orgId, LinkedList filterIds) { - return _parentOrganizationIds(orgId, filterIds); + + TreeMap parentIdsTreeMap = _parentOrganizationIds(orgId); + if (parentIdsTreeMap.isEmpty()) + return new NullIterator(); + + Iterator> parentIdP2Iterator = parentIdsTreeMap.iterator(); + return new Iterator() { + String parentId; + + @Override + public boolean hasNext() { + for (; parentIdP2Iterator.hasNext();) { + parentId = parentIdP2Iterator.next()._1(); + if (filter(parentId, filterIds)) + return true; + } + return false; + } + + @Override + public String next() { + return parentId; + } + + }; } - public Iterator _parentOrganizationIds(String orgId, LinkedList filterIds) { + public TreeMap _parentOrganizationIds(String orgId) { InterfaceTraverser orgTraverser = organizationTree.getTraverser(); - Iterator> orgIterator = orgTraverser.find((TreeNode node) -> { + Iterator> orgIdPairIterator = orgTraverser.find((TreeNode node) -> { String element = node.getAttributes().getString("element"); if (element == null) return false; @@ -758,12 +847,12 @@ return false; }, "Organization-id", orgId); - if (!orgIterator.hasNext()) - return new NullIterator(); + if (!orgIdPairIterator.hasNext()) + return TreeMap.empty(Ord.stringOrd); - Pair orgNode = orgIterator.next(); + Pair orgNode = orgIdPairIterator.next(); - Iterator> parentOrgIterator = orgTraverser.findInSubTree((TreeNode node) -> { + Iterator> parentOrgPairIterator = orgTraverser.findInSubTree((TreeNode node) -> { String element = node.getAttributes().getString("element"); if (element == null) return false; @@ -774,108 +863,106 @@ TreeMap parentIdsTreeMap = TreeMap.empty(Ord.stringOrd); - for (; parentOrgIterator.hasNext();) { - Pair parentOrgNode = parentOrgIterator.next(); + for (; parentOrgPairIterator.hasNext();) { + Pair parentOrgNode = parentOrgPairIterator.next(); - Iterator> 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-organizationRefId"); - if (parentId != null) - return true; - return false; - }, parentOrgNode, "text-organizationRefId"); + Iterator> parentOrgIdPairIterator = 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-organizationRefId"); + if (parentId != null) + return true; + return false; + }, parentOrgNode, "text-organizationRefId"); - for (; parentNodeIterator.hasNext();) { - String parentId = parentNodeIterator.next().left().getAttributes().getString("text-organizationRefId"); - if (filter(parentId, filterIds)) - parentIdsTreeMap = parentIdsTreeMap.set(parentId, parentId); + for (; parentOrgIdPairIterator.hasNext();) { + String parentId = parentOrgIdPairIterator.next().left().getAttributes().getString("text-organizationRefId"); + parentIdsTreeMap = parentIdsTreeMap.set(parentId, parentId); } } - Iterator> parentIds = parentIdsTreeMap.iterator(); - if (parentIdsTreeMap.isEmpty()) - return new NullIterator(); - else - return new Iterator() { + return parentIdsTreeMap; - @Override - public boolean hasNext() { - if (parentIds.hasNext()) - return true; - return false; - } - - @Override - public String next() { - return parentIds.next()._1(); - } - - }; } public Iterator deepParentOrganizationIds(String orgId, LinkedList filterIds) { TreeMap parentIdsTreeMap = TreeMap.empty(Ord.stringOrd); - Iterator> parentIds = _deepParentOrganizationIds(orgId, filterIds, parentIdsTreeMap).iterator(); + TreeMap newParentIdsTreeMap = _deepParentOrganizationIds(orgId, parentIdsTreeMap); + + if (newParentIdsTreeMap.isEmpty()) + return new NullIterator(); + + Iterator> parentIds = newParentIdsTreeMap.iterator(); + return new Iterator() { + String parentOrgId; @Override public boolean hasNext() { - if (parentIds.hasNext()) - return true; + for (; parentIds.hasNext();) { + parentOrgId = parentIds.next()._1(); + if (filter(parentOrgId, filterIds)) + return true; + } return false; } @Override public String next() { - return parentIds.next()._1(); + return parentOrgId; } }; } - public TreeMap _deepParentOrganizationIds(String orgId, LinkedList filterIds, - TreeMap orgIds) { + public TreeMap _deepParentOrganizationIds(String orgId, TreeMap orgIds) { - Iterator parentIds = parentOrganizationIds(orgId, filterIds); - if (!parentIds.hasNext()) + TreeMap parentIdsTreeMap = _parentOrganizationIds(orgId); + + if (parentIdsTreeMap.isEmpty()) return orgIds; - for (; parentIds.hasNext();) { - String parentId = parentIds.next(); - if (filter(parentId, filterIds)) - orgIds = orgIds.set(parentId, parentId); - orgIds = _deepParentOrganizationIds(parentId, filterIds, orgIds); + Iterator> parentIdsIterator = parentIdsTreeMap.iterator(); + for (; parentIdsIterator.hasNext();) { + String parentId = parentIdsIterator.next()._1(); + orgIds = orgIds.set(parentId, parentId); + orgIds = _deepParentOrganizationIds(parentId, orgIds); } return orgIds; } public Iterator deepParentOrganizationIdsPlus(String id, LinkedList filterIds) { + TreeMap parentIdsTreeMap = TreeMap.empty(Ord.stringOrd); - if (filter(id, filterIds)) - parentIdsTreeMap = parentIdsTreeMap.set(id, id); - parentIdsTreeMap = _deepParentOrganizationIds(id, filterIds, parentIdsTreeMap); + + parentIdsTreeMap = parentIdsTreeMap.set(id, id); + parentIdsTreeMap = _deepParentOrganizationIds(id, parentIdsTreeMap); if (parentIdsTreeMap.isEmpty()) return new NullIterator(); Iterator> personIds = parentIdsTreeMap.iterator(); return new Iterator() { + String parentOrgId; @Override public boolean hasNext() { - if (personIds.hasNext()) - return true; + for (; personIds.hasNext();) { + parentOrgId = personIds.next()._1(); + if (filter(parentOrgId, filterIds)) + return true; + } return false; } @Override public String next() { - return personIds.next()._1(); + return parentOrgId; } }; @@ -905,7 +992,7 @@ elementName = "RoleDescriptionElement"; } - Iterator> idIterator = traverser.find((TreeNode node) -> { + Iterator> PathNameIterator = traverser.find((TreeNode node) -> { String element = node.getAttributes().getString("element"); if (element == null) return false; @@ -919,39 +1006,39 @@ return false; }, "text-path", StrPath); - if (!idIterator.hasNext()) + if (!PathNameIterator.hasNext()) return ""; - Pair nodePair = idIterator.next(); - NodePath path = nodePair.right(); - NodePath targetPath = path.last().right(); + Pair pathNamePair = PathNameIterator.next(); + NodePath pathNamePath = pathNamePair.right(); + NodePath pathNameIdPath = pathNamePath.last().right(); - TreeNode targetNode = getTarget(root, targetPath); - String targetId = targetNode.getAttributes().getString(elementName + "-id"); - return targetId; + TreeNode pathNameIdNode = getTarget(root, pathNameIdPath); + String pathNameId = pathNameIdNode.getAttributes().getString(elementName + "-id"); + return pathNameId; } public Iterator roleDescriptionElementIds(String id, LinkedList filterIds) { - Iterator orgIds = deepParentOrganizationIdsPlus(id, filterIds); + Iterator orgIdsIterator = deepParentOrganizationIdsPlus(id, filterIds); - TreeMap rdeIdsTreeMap = TreeMap.empty(Ord.stringOrd); + TreeMap rdeIdsTreeMap = TreeMap.empty(Ord.stringOrd); - for (; orgIds.hasNext();) { - String orgId = orgIds.next(); - Iterator roleIds = roleIds(orgId); - for (; roleIds.hasNext();) { - String roleId = roleIds.next(); - Iterator rdeIds = getRde(roleId); - for (;rdeIds.hasNext();) { - String rdeId = rdeIds.next(); - rdeIdsTreeMap = rdeIdsTreeMap.set(rdeId,rdeId); + for (; orgIdsIterator.hasNext();) { + String orgId = orgIdsIterator.next(); + Iterator roleIdIteraotr = roleIds(orgId); + for (; roleIdIteraotr.hasNext();) { + String roleId = roleIdIteraotr.next(); + Iterator rdeIdIterator = getRde(roleId); + for (; rdeIdIterator.hasNext();) { + String rdeId = rdeIdIterator.next(); + rdeIdsTreeMap = rdeIdsTreeMap.set(rdeId, rdeId); } } } if (rdeIdsTreeMap.isEmpty()) return new NullIterator(); - + Iterator> rdeIds = rdeIdsTreeMap.iterator(); return new Iterator() { @@ -973,7 +1060,7 @@ InterfaceTraverser traverser = roleTree.getTraverser(); - Iterator> roleIterator = traverser.find((TreeNode node) -> { + Iterator> roleIdPairIterator = traverser.find((TreeNode node) -> { String element = node.getAttributes().getString("element"); if (element == null) return false; @@ -987,12 +1074,12 @@ return false; }, "Role-id", roleId); - if (!roleIterator.hasNext()) + if (!roleIdPairIterator.hasNext()) return new NullIterator(); - Pair roleNode = roleIterator.next(); + Pair roleIdPair = roleIdPairIterator.next(); - Iterator> rdeIterator = traverser.findInSubTreeAllValue((TreeNode node) -> { + Iterator> rdeIdPairIterator = traverser.findInSubTreeAllValue((TreeNode node) -> { String element = node.getAttributes().getString("element"); if (element == null) return false; @@ -1002,26 +1089,26 @@ if (rde != null) return true; return false; - }, roleNode, "text-roleDescriptionElementRefIds"); + }, roleIdPair, "text-roleDescriptionElementRefIds"); - if (!rdeIterator.hasNext()) + if (!rdeIdPairIterator.hasNext()) return new NullIterator(); return new Iterator() { @Override public boolean hasNext() { - if (rdeIterator.hasNext()) + if (rdeIdPairIterator.hasNext()) return true; return false; } @Override public String next() { - return rdeIterator.next().left().getAttributes().getString("text-roleDescriptionElementRefIds"); + return rdeIdPairIterator.next().left().getAttributes().getString("text-roleDescriptionElementRefIds"); } }; - + } } diff -r b8d86bc46b51 -r 96dcbd8e2fcb src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/ChildOrganizationIdsTest.java --- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/ChildOrganizationIdsTest.java Sun Nov 09 17:56:49 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/ChildOrganizationIdsTest.java Sun Nov 09 22:56:53 2014 +0900 @@ -17,16 +17,16 @@ Iterator ids = jugrix.childOrganizationIds("o:2", list); Assert.assertTrue(ids.hasNext()); - Assert.assertEquals(ids.next(),"o:9"); + Assert.assertTrue(ids.hasNext()); Assert.assertEquals(ids.next(),"o:3"); JuGrix indexJugrix = new JuGrix(true); ids = indexJugrix.childOrganizationIds("o:2", list); Assert.assertTrue(ids.hasNext()); - Assert.assertEquals(ids.next(),"o:9"); + Assert.assertTrue(ids.hasNext()); Assert.assertEquals(ids.next(),"o:3"); } } diff -r b8d86bc46b51 -r 96dcbd8e2fcb src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepChildOrganizationIdsTest.java --- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepChildOrganizationIdsTest.java Sun Nov 09 17:56:49 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepChildOrganizationIdsTest.java Sun Nov 09 22:56:53 2014 +0900 @@ -27,7 +27,7 @@ Assert.assertTrue(childrenIds.hasNext()); childrenId = childrenIds.next(); Assert.assertEquals(childrenId, "o:4"); - + Assert.assertFalse(childrenIds.hasNext()); jugrix = new JuGrix(true); filterIds = new LinkedList(); diff -r b8d86bc46b51 -r 96dcbd8e2fcb src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepParentOrganizationIdsPlusTest.java --- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepParentOrganizationIdsPlusTest.java Sun Nov 09 17:56:49 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepParentOrganizationIdsPlusTest.java Sun Nov 09 22:56:53 2014 +0900 @@ -15,13 +15,16 @@ LinkedList filterIds = new LinkedList(); //filterIds.add("r:2"); Iterator childrenIds = jugrix.deepParentOrganizationIdsPlus("o:2", filterIds); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:23"); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:22"); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:2"); filterIds.add("r:2"); childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds); - + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:23"); @@ -29,13 +32,16 @@ filterIds = new LinkedList(); //filterIds.add("r:2"); childrenIds = jugrix.deepParentOrganizationIdsPlus("o:2", filterIds); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:23"); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:22"); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:2"); filterIds.add("r:2"); childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds); - + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:23"); } } diff -r b8d86bc46b51 -r 96dcbd8e2fcb src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepParentOrganizationIdsTest.java --- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepParentOrganizationIdsTest.java Sun Nov 09 17:56:49 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepParentOrganizationIdsTest.java Sun Nov 09 22:56:53 2014 +0900 @@ -15,21 +15,28 @@ JuGrix jugrix = new JuGrix(false); LinkedList filterIds = new LinkedList(); Iterator childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:23"); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:22"); filterIds.add("r:2"); childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:23"); jugrix = new JuGrix(true); filterIds = new LinkedList(); childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:23"); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:22"); + filterIds.add("r:2"); childrenIds = jugrix.deepParentOrganizationIds("o:2", filterIds); + Assert.assertTrue(childrenIds.hasNext()); Assert.assertEquals(childrenIds.next(),"o:23"); } } diff -r b8d86bc46b51 -r 96dcbd8e2fcb src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepPersonIdsTest.java --- a/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepPersonIdsTest.java Sun Nov 09 17:56:49 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/DeepPersonIdsTest.java Sun Nov 09 22:56:53 2014 +0900 @@ -13,7 +13,7 @@ JuGrix jugrix = new JuGrix(false); LinkedList filterIds = new LinkedList(); //filterIds.add("r:9"); - Iterator ids = jugrix.deepPersonIds("o:3",filterIds); + Iterator ids = jugrix.deepPersonIds("o:2",filterIds); System.out.println("------------------------------------------------"); for (;ids.hasNext();) { System.out.println(ids.next()); diff -r b8d86bc46b51 -r 96dcbd8e2fcb 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 Sun Nov 09 17:56:49 2014 +0900 +++ b/src/test/java/jp/ac/u_ryukyu/cr/ie/tatsuki/functionTest/PersonIdsTest.java Sun Nov 09 22:56:53 2014 +0900 @@ -19,7 +19,7 @@ filterIds.add("r:9"); Iterator ids = jugrix.personIds("o:2", filterIds); - ids.hasNext(); + Assert.assertTrue(ids.hasNext()); Assert.assertEquals(ids.next(), "p:45"); Assert.assertEquals(ids.next(), "p:1");