private DefaultDirectedGraph<ErrorTypeDefinition, Pair<ErrorTypeDefinition, ErrorTypeDefinition>> toGraph(ErrorTypeDefinition<?>[] errorTypesEnum) { final DefaultDirectedGraph<ErrorTypeDefinition, Pair<ErrorTypeDefinition, ErrorTypeDefinition>> graph = new DefaultDirectedWeightedGraph<>(ImmutablePair::new); Stream.of(errorTypesEnum).forEach(error -> addType(error, graph)); detectCycleReferences(graph); return graph; }
public static WeightedGraph<Long, RoadSegment> create(RoadNetwork roadNetwork) { DefaultDirectedWeightedGraph<Long, RoadSegment> graph = new DefaultDirectedWeightedGraph<>(RoadSegment.class); HashMap<RoadSegment, Node> connections = Maps.newLinkedHashMap(); for (final RoadSegment roadSegment : roadNetwork) { LOG.info("created graph with {} edges and {} nodes", graph.edgeSet().size(), graph.vertexSet().size()); for (RoadSegment roadSegment : roadNetwork) { long fromVertex = roadSegment.getOriginNode().getId(); long toVertex = roadSegment.getDestinationNode().getId(); graph.addVertex(fromVertex); graph.addVertex(toVertex); graph.addEdge(fromVertex, toVertex, roadSegment); graph.setEdgeWeight(roadSegment, roadSegment.roadLength()); LOG.info("weight={}, roadSegment={}", graph.getEdgeWeight(roadSegment), roadSegment);
/** * Perform the entire sort operation */ private void sort() { DefaultDirectedWeightedGraph<RuleProvider, DefaultEdge> graph = new DefaultDirectedWeightedGraph<>( DefaultEdge.class); for (RuleProvider provider : providers) { graph.addVertex(provider); } addProviderRelationships(graph); checkForCycles(graph); List<RuleProvider> result = new ArrayList<>(this.providers.size()); TopologicalOrderIterator<RuleProvider, DefaultEdge> iterator = new TopologicalOrderIterator<>(graph); while (iterator.hasNext()) { RuleProvider provider = iterator.next(); result.add(provider); } this.providers = Collections.unmodifiableList(result); int index = 0; for (RuleProvider provider : this.providers) { if (provider instanceof AbstractRuleProvider) ((AbstractRuleProvider) provider).setExecutionIndex(index++); } }
private void addExecuteAfterRelationship(DefaultDirectedWeightedGraph<RuleProvider, DefaultEdge> graph, RuleProvider provider, List<String> errors, Class<? extends RuleProvider> clz) { RuleProvider otherProvider = getByClass(clz); if (otherProvider == null) { errors.add("RuleProvider " + provider.getMetadata().getID() + " is specified to execute after class: " + clz.getName() + " but this class could not be found."); } else graph.addEdge(otherProvider, provider); }
/** * Perform the entire sort operation */ private void sort() { DefaultDirectedWeightedGraph<RuleProvider, DefaultEdge> graph = new DefaultDirectedWeightedGraph<>( DefaultEdge.class); for (RuleProvider provider : providers) { graph.addVertex(provider); } addProviderRelationships(graph); checkForCycles(graph); List<RuleProvider> result = new ArrayList<>(this.providers.size()); TopologicalOrderIterator<RuleProvider, DefaultEdge> iterator = new TopologicalOrderIterator<>(graph); while (iterator.hasNext()) { RuleProvider provider = iterator.next(); result.add(provider); } this.providers = Collections.unmodifiableList(result); int index = 0; for (RuleProvider provider : this.providers) { if (provider instanceof AbstractRuleProvider) ((AbstractRuleProvider) provider).setExecutionIndex(index++); } }
private void addExecuteBeforeRelationship(DefaultDirectedWeightedGraph<RuleProvider, DefaultEdge> graph, RuleProvider provider, List<String> errors, Class<? extends RuleProvider> clz) { RuleProvider otherProvider = getByClass(clz); if (otherProvider == null) { errors.add("RuleProvider " + provider.getMetadata().getID() + " is specified to execute before: " + clz.getName() + " but this class could not be found."); } else graph.addEdge(provider, otherProvider); }
/** * Create a builder for this kind of graph. * * @param edgeSupplier the edge supplier * @param <V> the graph vertex type * @param <E> the graph edge type * @return a builder for this kind of graph */ public static <V, E> GraphBuilder<V, E, ? extends DefaultDirectedWeightedGraph<V, E>> createBuilder( Supplier<E> edgeSupplier) { return new GraphBuilder<>(new DefaultDirectedWeightedGraph<>(null, edgeSupplier)); }
private void addExecuteBeforeRelationship(DefaultDirectedWeightedGraph<RuleProvider, DefaultEdge> graph, RuleProvider provider, List<String> errors, Class<? extends RuleProvider> clz) { RuleProvider otherProvider = getByClass(clz); if (otherProvider == null) { errors.add("RuleProvider " + provider.getMetadata().getID() + " is specified to execute before: " + clz.getName() + " but this class could not be found."); } else graph.addEdge(provider, otherProvider); }
/** * Create a builder for this kind of graph. * * @param edgeClass class on which to base factory for edges * @param <V> the graph vertex type * @param <E> the graph edge type * @return a builder for this kind of graph */ public static <V, E> GraphBuilder<V, E, ? extends DefaultDirectedWeightedGraph<V, E>> createBuilder( Class<? extends E> edgeClass) { return new GraphBuilder<>(new DefaultDirectedWeightedGraph<>(edgeClass)); }
private void addExecuteAfterRelationship(DefaultDirectedWeightedGraph<RuleProvider, DefaultEdge> graph, RuleProvider provider, List<String> errors, Class<? extends RuleProvider> clz) { RuleProvider otherProvider = getByClass(clz); if (otherProvider == null) { errors.add("RuleProvider " + provider.getMetadata().getID() + " is specified to execute after class: " + clz.getName() + " but this class could not be found."); } else graph.addEdge(otherProvider, provider); }
private DefaultDirectedGraph<ErrorTypeDefinition, Pair<ErrorTypeDefinition, ErrorTypeDefinition>> toGraph(ErrorTypeDefinition<?>[] errorTypesEnum) { final DefaultDirectedGraph<ErrorTypeDefinition, Pair<ErrorTypeDefinition, ErrorTypeDefinition>> graph = new DefaultDirectedWeightedGraph<>(ImmutablePair::new); Stream.of(errorTypesEnum).forEach(error -> addType(error, graph)); detectCycleReferences(graph); return graph; }
new DefaultDirectedWeightedGraph<>( this.originalGraph.getVertexSupplier(), this.originalGraph.getEdgeSupplier()), new HashMap<>(), false);
static public <V> DefaultDirectedWeightedGraph<V, Edge<V>> getDiGraph(SparseMatrixFuzzyRead<V, V> source) { final SimpleEdgeFactory<V> factory = new SimpleEdgeFactory<V>(); final DefaultDirectedWeightedGraph<V, Edge<V>> g = new DefaultDirectedWeightedGraph<V, Edge<V>>(factory); for (V v1 : source.getRows()) { for (V v2 : source.getColumns()) { final Double entry = source.getEntry(v1, v2); if (entry != null) { // Graphs.addEdgeWithVertices(g, v1, v2, // entry.doubleValue()); Graphs.addEdgeWithVertices(g, v1, v2); } } } return g; }
return new DefaultDirectedWeightedGraph<>(vertexSupplier, edgeSupplier); } else { return new DefaultDirectedGraph<>(vertexSupplier, edgeSupplier, false);