Search in sources :

Example 1 with Edge

use of org.opennms.features.topology.api.topo.Edge in project opennms by OpenNMS.

the class VEProviderGraphContainerTest method verifyConnectedness.

private static void verifyConnectedness(Graph graph) {
    Collection<Vertex> vertices = graph.getDisplayVertices();
    for (Edge edge : graph.getDisplayEdges()) {
        assertTrue(vertices.contains(edge.getSource().getVertex()));
        assertTrue(vertices.contains(edge.getTarget().getVertex()));
    }
}
Also used : Vertex(org.opennms.features.topology.api.topo.Vertex) AbstractVertex(org.opennms.features.topology.api.topo.AbstractVertex) Edge(org.opennms.features.topology.api.topo.Edge)

Example 2 with Edge

use of org.opennms.features.topology.api.topo.Edge in project opennms by OpenNMS.

the class DefaultTopologyService method getGraph.

@Override
public Graph getGraph(String metaTopologyId, String namespace, Criteria[] criteria, int semanticZoomLevel) {
    Objects.requireNonNull(metaTopologyId);
    Objects.requireNonNull(namespace);
    Objects.requireNonNull(metaTopologyId);
    Objects.requireNonNull(criteria);
    if (semanticZoomLevel < 0) {
        LOG.warn("Semantic Zoom Level was {}. Only values >= 0 are allowed, forcing it to be 1", semanticZoomLevel);
        semanticZoomLevel = 0;
    }
    final GraphProvider graphProvider = getGraphProvider(metaTopologyId, namespace);
    // Determine visible vertices and edges
    final List<Vertex> displayVertices = new ArrayList<>();
    for (Vertex v : graphProvider.getVertices(criteria)) {
        int vzl = graphProvider.getSemanticZoomLevel(v);
        if (vzl == semanticZoomLevel || (vzl < semanticZoomLevel && !graphProvider.hasChildren(v))) {
            displayVertices.add(v);
        }
    }
    final Collection<Edge> displayEdges = graphProvider.getEdges(criteria);
    // Create graph object
    final DefaultGraph graph = new DefaultGraph(displayVertices, displayEdges);
    // Calculate status
    final StatusProvider vertexStatusProvider = serviceLocator != null ? findVertexStatusProvider(graphProvider) : null;
    final EdgeStatusProvider edgeStatusProvider = serviceLocator != null ? findEdgeStatusProvider(graphProvider) : null;
    if (vertexStatusProvider != null) {
        graph.setVertexStatus(vertexStatusProvider.getStatusForVertices(graphProvider, new ArrayList<>(displayVertices), criteria));
    }
    if (edgeStatusProvider != null) {
        graph.setEdgeStatus(edgeStatusProvider.getStatusForEdges(graphProvider, new ArrayList<>(graph.getDisplayEdges()), criteria));
    }
    return graph;
}
Also used : Vertex(org.opennms.features.topology.api.topo.Vertex) EdgeStatusProvider(org.opennms.features.topology.api.topo.EdgeStatusProvider) EdgeStatusProvider(org.opennms.features.topology.api.topo.EdgeStatusProvider) StatusProvider(org.opennms.features.topology.api.topo.StatusProvider) GraphProvider(org.opennms.features.topology.api.topo.GraphProvider) ArrayList(java.util.ArrayList) Edge(org.opennms.features.topology.api.topo.Edge)

Example 3 with Edge

use of org.opennms.features.topology.api.topo.Edge in project opennms by OpenNMS.

the class FRLayoutAlgorithm method updateLayout.

@Override
public void updateLayout(final Graph graph) {
    final Layout graphLayout = graph.getLayout();
    SparseGraph<VertexRef, EdgeRef> jungGraph = new SparseGraph<VertexRef, EdgeRef>();
    Collection<Vertex> vertices = graph.getDisplayVertices();
    for (Vertex v : vertices) {
        jungGraph.addVertex(v);
    }
    Collection<Edge> edges = graph.getDisplayEdges();
    for (Edge e : edges) {
        jungGraph.addEdge(e, e.getSource().getVertex(), e.getTarget().getVertex());
    }
    FRLayout<VertexRef, EdgeRef> layout = new FRLayout<VertexRef, EdgeRef>(jungGraph);
    // Initialize the vertex positions to the last known positions from the layout
    Dimension size = selectLayoutSize(graph);
    layout.setInitializer(initializer(graphLayout, (int) size.getWidth() / 2, (int) size.getHeight() / 2));
    // Resize the graph to accommodate the number of vertices
    layout.setSize(size);
    while (!layout.done()) {
        layout.step();
    }
    // Store the new positions in the layout
    for (Vertex v : vertices) {
        graphLayout.setLocation(v, new Point(layout.getX(v) - (size.getWidth() / 2), (int) layout.getY(v) - (size.getHeight() / 2)));
    }
}
Also used : Vertex(org.opennms.features.topology.api.topo.Vertex) FRLayout(edu.uci.ics.jung.algorithms.layout.FRLayout) Dimension(java.awt.Dimension) Point(org.opennms.features.topology.api.Point) SparseGraph(edu.uci.ics.jung.graph.SparseGraph) Layout(org.opennms.features.topology.api.Layout) FRLayout(edu.uci.ics.jung.algorithms.layout.FRLayout) EdgeRef(org.opennms.features.topology.api.topo.EdgeRef) VertexRef(org.opennms.features.topology.api.topo.VertexRef) Edge(org.opennms.features.topology.api.topo.Edge)

Example 4 with Edge

use of org.opennms.features.topology.api.topo.Edge in project opennms by OpenNMS.

the class CircleLayoutAlgorithm method updateLayout.

@Override
public void updateLayout(final Graph graph) {
    final Layout graphLayout = graph.getLayout();
    SparseGraph<VertexRef, Edge> jungGraph = new SparseGraph<VertexRef, Edge>();
    Collection<? extends Vertex> vertices = graph.getDisplayVertices();
    for (VertexRef v : vertices) {
        jungGraph.addVertex(v);
    }
    for (Edge e : graph.getDisplayEdges()) {
        jungGraph.addEdge(e, e.getSource().getVertex(), e.getTarget().getVertex());
    }
    CircleLayout<VertexRef, Edge> layout = new CircleLayout<VertexRef, Edge>(jungGraph);
    layout.setInitializer(initializer(graphLayout));
    layout.setSize(selectLayoutSize(graph));
    for (VertexRef v : vertices) {
        graphLayout.setLocation(v, new Point(layout.getX(v), layout.getY(v)));
    }
}
Also used : SparseGraph(edu.uci.ics.jung.graph.SparseGraph) CircleLayout(edu.uci.ics.jung.algorithms.layout.CircleLayout) CircleLayout(edu.uci.ics.jung.algorithms.layout.CircleLayout) Layout(org.opennms.features.topology.api.Layout) Point(org.opennms.features.topology.api.Point) VertexRef(org.opennms.features.topology.api.topo.VertexRef) Edge(org.opennms.features.topology.api.topo.Edge)

Example 5 with Edge

use of org.opennms.features.topology.api.topo.Edge in project opennms by OpenNMS.

the class KKLayoutAlgorithm method updateLayout.

@Override
public void updateLayout(final Graph graph) {
    final Layout graphLayout = graph.getLayout();
    SparseGraph<VertexRef, Edge> jungGraph = new SparseGraph<VertexRef, Edge>();
    Collection<? extends Vertex> vertices = graph.getDisplayVertices();
    for (Vertex v : vertices) {
        jungGraph.addVertex(v);
    }
    Collection<? extends Edge> edges = graph.getDisplayEdges();
    for (Edge e : edges) {
        jungGraph.addEdge(e, e.getSource().getVertex(), e.getTarget().getVertex());
    }
    KKLayout<VertexRef, Edge> layout = new KKLayout<VertexRef, Edge>(jungGraph);
    layout.setInitializer(initializer(graphLayout));
    layout.setSize(selectLayoutSize(graph));
    while (!layout.done()) {
        layout.step();
    }
    for (Vertex v : vertices) {
        graphLayout.setLocation(v, new Point(layout.getX(v), layout.getY(v)));
    }
}
Also used : SparseGraph(edu.uci.ics.jung.graph.SparseGraph) Vertex(org.opennms.features.topology.api.topo.Vertex) KKLayout(edu.uci.ics.jung.algorithms.layout.KKLayout) KKLayout(edu.uci.ics.jung.algorithms.layout.KKLayout) Layout(org.opennms.features.topology.api.Layout) Point(org.opennms.features.topology.api.Point) VertexRef(org.opennms.features.topology.api.topo.VertexRef) Edge(org.opennms.features.topology.api.topo.Edge)

Aggregations

Edge (org.opennms.features.topology.api.topo.Edge)37 Vertex (org.opennms.features.topology.api.topo.Vertex)22 VertexRef (org.opennms.features.topology.api.topo.VertexRef)22 EdgeRef (org.opennms.features.topology.api.topo.EdgeRef)11 SparseGraph (edu.uci.ics.jung.graph.SparseGraph)10 Layout (org.opennms.features.topology.api.Layout)10 Point (org.opennms.features.topology.api.Point)8 ArrayList (java.util.ArrayList)7 Dimension (java.awt.Dimension)5 HashSet (java.util.HashSet)5 AbstractEdge (org.opennms.features.topology.api.topo.AbstractEdge)5 AbstractVertex (org.opennms.features.topology.api.topo.AbstractVertex)5 Set (java.util.Set)4 Test (org.junit.Test)4 DefaultVertexRef (org.opennms.features.topology.api.topo.DefaultVertexRef)4 SimpleLeafVertex (org.opennms.features.topology.api.topo.SimpleLeafVertex)4 HashMap (java.util.HashMap)3 CollapsibleCriteria (org.opennms.features.topology.api.topo.CollapsibleCriteria)3 Criteria (org.opennms.features.topology.api.topo.Criteria)3 FRLayout (edu.uci.ics.jung.algorithms.layout.FRLayout)2