final Graphs.FrozenGraph<String, DefaultEdge> frozenGraph = Graphs.makeImmutable(graph); assertEquals("[A, B]", frozenGraph.getShortestPath("A", "B").toString()); assertEquals("[[A, B]]", frozenGraph.getPaths("A", "B").toString()); assertEquals("[A, D, E]", frozenGraph.getShortestPath("A", "E").toString()); assertEquals("[[A, B, C, E], [A, D, E]]", frozenGraph.getPaths("A", "E").toString()); assertNull(frozenGraph.getShortestPath("B", "A")); assertNull(frozenGraph.getShortestPath("D", "C")); assertEquals("[[D, E]]", frozenGraph.getPaths("D", "E").toString()); assertEquals("[D, E]", frozenGraph.getShortestPath("D", "E").toString());
final Graphs.FrozenGraph<String, DefaultEdge> frozenGraph = Graphs.makeImmutable(graph); assertEquals("[A, B]", frozenGraph.getShortestPath("A", "B").toString()); assertEquals("[[A, B]]", frozenGraph.getPaths("A", "B").toString()); assertEquals("[A, D, E]", frozenGraph.getShortestPath("A", "E").toString()); assertEquals("[[A, B, C, E], [A, D, E]]", frozenGraph.getPaths("A", "E").toString()); assertNull(frozenGraph.getShortestPath("B", "A")); assertNull(frozenGraph.getShortestPath("D", "C")); assertEquals("[[D, E]]", frozenGraph.getPaths("D", "E").toString()); assertEquals("[D, E]", frozenGraph.getShortestPath("D", "E").toString());
/** * Returns whether {@code table} uses one or more of the tables in * {@code usedTables}. */ private static boolean usesTable( List<String> qualifiedName, Set<RelOptTable> usedTables, Graphs.FrozenGraph<List<String>, DefaultEdge> usesGraph) { for (RelOptTable queryTable : usedTables) { if (usesGraph.getShortestPath(queryTable.getQualifiedName(), qualifiedName) != null) { return true; } } return false; } }
/** * Returns whether {@code table} uses one or more of the tables in * {@code usedTables}. */ private static boolean usesTable( List<String> qualifiedName, Set<RelOptTable> usedTables, Graphs.FrozenGraph<List<String>, DefaultEdge> usesGraph) { for (RelOptTable queryTable : usedTables) { if (usesGraph.getShortestPath(queryTable.getQualifiedName(), qualifiedName) != null) { return true; } } return false; } }
private <V> List<V> shortestPath(DirectedGraph<V, DefaultEdge> g, V source, V target) { return Graphs.makeImmutable(g).getShortestPath(source, target); }
public List<Convention> getShortestPath( Convention fromConvention, Convention toConvention) { return getPathMap().getShortestPath(fromConvention, toConvention); } }
public List<Convention> getShortestPath( Convention fromConvention, Convention toConvention) { return getPathMap().getShortestPath(fromConvention, toConvention); } }
private <V> List<V> shortestPath(DirectedGraph<V, DefaultEdge> g, V source, V target) { return Graphs.makeImmutable(g).getShortestPath(source, target); }