private static List<ExecutableTypeData> buildExecutableHierarchy(NodeData node) { List<ExecutableTypeData> executes = node.getExecutableTypes(); if (executes.isEmpty()) { return Collections.emptyList(); } List<ExecutableTypeData> hierarchyExecutes = new ArrayList<>(executes); Collections.sort(hierarchyExecutes); ExecutableTypeData parent = hierarchyExecutes.get(0); ListIterator<ExecutableTypeData> executesIterator = hierarchyExecutes.listIterator(1); buildExecutableHierarchy(node, parent, executesIterator); return hierarchyExecutes; }
private static List<ExecutableTypeData> buildExecutableHierarchy(NodeData node) { List<ExecutableTypeData> executes = node.getExecutableTypes(); if (executes.isEmpty()) { return Collections.emptyList(); } List<ExecutableTypeData> hierarchyExecutes = new ArrayList<>(executes); Collections.sort(hierarchyExecutes); ExecutableTypeData parent = hierarchyExecutes.get(0); ListIterator<ExecutableTypeData> executesIterator = hierarchyExecutes.listIterator(1); buildExecutableHierarchy(node, parent, executesIterator); return hierarchyExecutes; }
private static void buildExecutableHierarchy(NodeData node, ExecutableTypeData parent, ListIterator<ExecutableTypeData> executesIterator) { while (executesIterator.hasNext()) { ExecutableTypeData other = executesIterator.next(); if (other.canDelegateTo(parent)) { parent.addDelegatedFrom(other); executesIterator.remove(); } } for (int i = 1; i < parent.getDelegatedFrom().size(); i++) { buildExecutableHierarchy(node, parent.getDelegatedFrom().get(i - 1), parent.getDelegatedFrom().listIterator(i)); } }
private static void buildExecutableHierarchy(NodeData node, ExecutableTypeData parent, ListIterator<ExecutableTypeData> executesIterator) { while (executesIterator.hasNext()) { ExecutableTypeData other = executesIterator.next(); if (other.canDelegateTo(parent)) { parent.addDelegatedFrom(other); executesIterator.remove(); } } for (int i = 1; i < parent.getDelegatedFrom().size(); i++) { buildExecutableHierarchy(node, parent.getDelegatedFrom().get(i - 1), parent.getDelegatedFrom().listIterator(i)); } }
List<ExecutableTypeData> rootTypes = buildExecutableHierarchy(node); List<ExecutableTypeData> additionalAbstractRootTypes = new ArrayList<>(); for (int i = 1; i < rootTypes.size(); i++) {
List<ExecutableTypeData> rootTypes = buildExecutableHierarchy(node); List<ExecutableTypeData> additionalAbstractRootTypes = new ArrayList<>(); for (int i = 1; i < rootTypes.size(); i++) {