public NodeSet<T> getNodeHierarchyParents(T child, boolean direct, DefaultNodeSet<T> ns) { Node<T> node = nodeCache.getNode(child); if (node.isTopNode()) { return ns; } Set<T> directParents = new HashSet<>(); for (T equiv : node) { directParents.addAll(rawParentChildProvider.getParents(equiv)); if (directChildrenOfTopNode.contains(equiv)) { ns.addNode(nodeCache.getTopNode()); } } node.entities().forEach(directParents::remove); if (node.isBottomNode()) { // Special treatment directParents.addAll(directParentsOfBottomNode); } for (Node<T> parentNode : nodeCache.getNodes(directParents)) { ns.addNode(parentNode); } if (!direct) { for (T parent : directParents) { getNodeHierarchyParents(parent, direct, ns); } } return ns; }
public NodeSet<T> getNodeHierarchyParents(T child, boolean direct, DefaultNodeSet<T> ns) { Node<T> node = nodeCache.getNode(child); if (node.isTopNode()) { return ns; } Set<T> directParents = new HashSet<>(); for (T equiv : node) { directParents.addAll(rawParentChildProvider.getParents(equiv)); if (directChildrenOfTopNode.contains(equiv)) { ns.addNode(nodeCache.getTopNode()); } } node.entities().forEach(directParents::remove); if (node.isBottomNode()) { // Special treatment directParents.addAll(directParentsOfBottomNode); } for (Node<T> parentNode : nodeCache.getNodes(directParents)) { ns.addNode(parentNode); } if (!direct) { for (T parent : directParents) { getNodeHierarchyParents(parent, direct, ns); } } return ns; }
public NodeSet<T> getNodeHierarchyParents(T child, boolean direct, DefaultNodeSet<T> ns) { Node<T> node = nodeCache.getNode(child); if (node.isTopNode()) { return ns; } Set<T> directParents = new HashSet<>(); for (T equiv : node) { directParents.addAll(rawParentChildProvider.getParents(equiv)); if (directChildrenOfTopNode.contains(equiv)) { ns.addNode(nodeCache.getTopNode()); } } node.entities().forEach(directParents::remove); if (node.isBottomNode()) { // Special treatment directParents.addAll(directParentsOfBottomNode); } for (Node<T> parentNode : nodeCache.getNodes(directParents)) { ns.addNode(parentNode); } if (!direct) { for (T parent : directParents) { getNodeHierarchyParents(parent, direct, ns); } } return ns; }
public NodeSet<T> getNodeHierarchyParents(T child, boolean direct, DefaultNodeSet<T> ns) { Node<T> node = nodeCache.getNode(child); if (node.isTopNode()) { return ns; } Set<T> directParents = new HashSet<>(); for (T equiv : node) { directParents.addAll(rawParentChildProvider.getParents(equiv)); if (directChildrenOfTopNode.contains(equiv)) { ns.addNode(nodeCache.getTopNode()); } } node.entities().forEach(directParents::remove); if (node.isBottomNode()) { // Special treatment directParents.addAll(directParentsOfBottomNode); } for (Node<T> parentNode : nodeCache.getNodes(directParents)) { ns.addNode(parentNode); } if (!direct) { for (T parent : directParents) { getNodeHierarchyParents(parent, direct, ns); } } return ns; }