public Set<EntityDescriptor> resolveEntities(Collection<EntityDescriptor> unresolvedEntities) { final MutableGraph<EntityDescriptor> dependencyGraph = GraphBuilder.directed() .allowsSelfLoops(false) .nodeOrder(ElementOrder.insertion()) .build(); unresolvedEntities.forEach(dependencyGraph::addNode); final HashSet<EntityDescriptor> resolvedEntities = new HashSet<>(); final MutableGraph<EntityDescriptor> finalDependencyGraph = resolveDependencyGraph(dependencyGraph, resolvedEntities); LOG.debug("Final dependency graph: {}", finalDependencyGraph); return finalDependencyGraph.nodes(); }
@Test public void edgeOrder_insertion() { MutableNetwork<Integer, String> network = NetworkBuilder.directed().edgeOrder(insertion()).build(); addEdges(network); assertThat(network.edgeOrder()).isEqualTo(ElementOrder.insertion()); assertThat(network.edges()).containsExactly("i", "e", "p").inOrder(); assertThat(network.nodeOrder()).isEqualTo(ElementOrder.insertion()); // default }
@Test public void edgeOrder_default() { MutableNetwork<Integer, String> network = NetworkBuilder.directed().build(); addEdges(network); assertThat(network.edgeOrder()).isEqualTo(ElementOrder.insertion()); assertThat(network.edges()).containsExactly("i", "e", "p").inOrder(); assertThat(network.nodeOrder()).isEqualTo(ElementOrder.insertion()); // default }
@Test public void edgeOrder_sorted() { MutableNetwork<Integer, String> network = NetworkBuilder.directed() .edgeOrder(ElementOrder.sorted(Ordering.<String>natural().reverse())) .build(); addEdges(network); assertThat(network.edgeOrder()) .isEqualTo(ElementOrder.sorted(Ordering.<String>natural().reverse())); assertThat(network.edges()).containsExactly("p", "i", "e").inOrder(); assertThat(network.nodeOrder()).isEqualTo(ElementOrder.insertion()); // default }
@Test public void nodeOrder_default() { MutableGraph<Integer> graph = GraphBuilder.directed().build(); addNodes(graph); assertThat(graph.nodeOrder()).isEqualTo(insertion()); assertThat(graph.nodes()).containsExactly(3, 1, 4).inOrder(); }
@Test public void edgeOrder_natural() { MutableNetwork<Integer, String> network = NetworkBuilder.directed().edgeOrder(ElementOrder.<String>natural()).build(); addEdges(network); assertThat(network.edgeOrder()).isEqualTo(ElementOrder.sorted(Ordering.<String>natural())); assertThat(network.edges()).containsExactly("e", "i", "p").inOrder(); assertThat(network.nodeOrder()).isEqualTo(insertion()); // default }
@Test public void edgeOrder_none() { MutableNetwork<Integer, String> network = NetworkBuilder.directed().edgeOrder(unordered()).build(); assertThat(network.edgeOrder()).isEqualTo(unordered()); assertThat(network.nodeOrder()).isEqualTo(insertion()); // default }
private static void filterCylicDependencies(List<ProjectConfiguratorContribution> configurators) { Map<String, ProjectConfiguratorContribution> idToConfigurator = configurators.stream() .collect(Collectors.toMap(ProjectConfiguratorContribution::getId, Function.identity())); MutableGraph<ProjectConfiguratorContribution> dependencyGraph = GraphBuilder.directed().nodeOrder(ElementOrder.insertion()).build(); configurators.forEach(c -> dependencyGraph.addNode(c)); for (ProjectConfiguratorContribution configurator : configurators) { filterCylicDependencies(configurator, configurator.getRunsBefore(), idToConfigurator, dependencyGraph, false); filterCylicDependencies(configurator, configurator.getRunsAfter(), idToConfigurator, dependencyGraph, true); } }
@Test public void edgeOrder_insertion() { MutableNetwork<Integer, String> network = NetworkBuilder.directed().edgeOrder(insertion()).build(); addEdges(network); assertThat(network.edgeOrder()).isEqualTo(ElementOrder.insertion()); assertThat(network.edges()).containsExactly("i", "e", "p").inOrder(); assertThat(network.nodeOrder()).isEqualTo(ElementOrder.insertion()); // default }
@Test public void edgeOrder_default() { MutableNetwork<Integer, String> network = NetworkBuilder.directed().build(); addEdges(network); assertThat(network.edgeOrder()).isEqualTo(ElementOrder.insertion()); assertThat(network.edges()).containsExactly("i", "e", "p").inOrder(); assertThat(network.nodeOrder()).isEqualTo(ElementOrder.insertion()); // default }
@Test public void nodeOrder_default() { MutableGraph<Integer> graph = GraphBuilder.directed().build(); addNodes(graph); assertThat(graph.nodeOrder()).isEqualTo(insertion()); assertThat(graph.nodes()).containsExactly(3, 1, 4).inOrder(); }
@Test public void nodeOrder_default() { MutableCTree<Integer> tree = TreeBuilder.builder().build(); addNodes(tree); assertThat(tree.nodeOrder()).isEqualTo(insertion()); assertThat(tree.nodes()).containsExactly(3, 1, 4).inOrder(); }
@Test public void edgeOrder_natural() { MutableNetwork<Integer, String> network = NetworkBuilder.directed().edgeOrder(ElementOrder.<String>natural()).build(); addEdges(network); assertThat(network.edgeOrder()).isEqualTo(ElementOrder.sorted(Ordering.<String>natural())); assertThat(network.edges()).containsExactly("e", "i", "p").inOrder(); assertThat(network.nodeOrder()).isEqualTo(insertion()); // default }
@Test public void edgeOrder_sorted() { MutableNetwork<Integer, String> network = NetworkBuilder.directed() .edgeOrder(ElementOrder.sorted(Ordering.<String>natural().reverse())) .build(); addEdges(network); assertThat(network.edgeOrder()) .isEqualTo(ElementOrder.sorted(Ordering.<String>natural().reverse())); assertThat(network.edges()).containsExactly("p", "i", "e").inOrder(); assertThat(network.nodeOrder()).isEqualTo(ElementOrder.insertion()); // default }
@Test public void edgeOrder_none() { MutableNetwork<Integer, String> network = NetworkBuilder.directed().edgeOrder(unordered()).build(); assertThat(network.edgeOrder()).isEqualTo(unordered()); assertThat(network.nodeOrder()).isEqualTo(insertion()); // default }
@Test public void equivalent_propertiesDiffer() { MutableCTree<Integer> t1 = TreeBuilder.builder().nodeOrder(ElementOrder.insertion()).build(); t1.putEdge(N1, N2); MutableCTree<Integer> t2 = TreeBuilder.from(t1).nodeOrder(ElementOrder.unordered()).build(); t2.putEdge(N1, N2); assertThat(t1).isEqualTo(t2); }