private static void addPathRecursively(List<VertexRef> vertexRefs, VertexRef vertexToFind, Map<VertexRef, EdgeRef> incomingEdgeMap) { if (incomingEdgeMap.get(vertexToFind) != null) { vertexRefs.add(0, vertexToFind); addPathRecursively(vertexRefs, ((Edge) incomingEdgeMap.get(vertexToFind)).getSource().getVertex(), incomingEdgeMap); } }
private static void addPathRecursively(List<VertexRef> vertexRefs, VertexRef vertexToFind, Map<VertexRef, EdgeRef> incomingEdgeMap) { if (incomingEdgeMap.get(vertexToFind) != null) { vertexRefs.add(0, vertexToFind); addPathRecursively(vertexRefs, ((Edge) incomingEdgeMap.get(vertexToFind)).getSource().getVertex(), incomingEdgeMap); } }
@Override public final EdgeRef[] getEdgeIdsForVertex(VertexRef vertex) { if (vertex == null) return new EdgeRef[0]; List<EdgeRef> retval = new ArrayList<EdgeRef>(); for (Edge edge : getEdges()) { // If the vertex is connected to the edge then add it if (new RefComparator().compare(edge.getSource().getVertex(), vertex) == 0 || new RefComparator().compare(edge.getTarget().getVertex(), vertex) == 0) { retval.add(edge); } } return retval.toArray(new EdgeRef[0]); }
@Override public final EdgeRef[] getEdgeIdsForVertex(VertexRef vertex) { if (vertex == null) return new EdgeRef[0]; List<EdgeRef> retval = new ArrayList<EdgeRef>(); for (Edge edge : getEdges()) { // If the vertex is connected to the edge then add it if (new RefComparator().compare(edge.getSource().getVertex(), vertex) == 0 || new RefComparator().compare(edge.getTarget().getVertex(), vertex) == 0) { retval.add(edge); } } return retval.toArray(new EdgeRef[0]); }
@Override public final EdgeRef[] getEdgeIdsForVertex(VertexRef vertex) { if (vertex == null) return new EdgeRef[0]; List<EdgeRef> retval = new ArrayList<EdgeRef>(); for (Edge edge : getEdges()) { // If the vertex is connected to the edge then add it if (new RefComparator().compare(edge.getSource().getVertex(), vertex) == 0 || new RefComparator().compare(edge.getTarget().getVertex(), vertex) == 0) { retval.add(edge); } } return retval.toArray(new EdgeRef[0]); }
@Override public final Map<VertexRef, Set<EdgeRef>> getEdgeIdsForVertices(VertexRef... vertices) { List<Edge> edges = getEdges(); Map<VertexRef,Set<EdgeRef>> retval = new HashMap<VertexRef,Set<EdgeRef>>(); for (VertexRef vertex : vertices) { if (vertex == null) continue; Set<EdgeRef> edgeSet = new HashSet<EdgeRef>(); for (Edge edge : edges) { // If the vertex is connected to the edge then add it if (new RefComparator().compare(edge.getSource().getVertex(), vertex) == 0 || new RefComparator().compare(edge.getTarget().getVertex(), vertex) == 0) { edgeSet.add(edge); } } retval.put(vertex, edgeSet); } return retval; }
@Override public final Map<VertexRef, Set<EdgeRef>> getEdgeIdsForVertices(VertexRef... vertices) { List<Edge> edges = getEdges(); Map<VertexRef,Set<EdgeRef>> retval = new HashMap<VertexRef,Set<EdgeRef>>(); for (VertexRef vertex : vertices) { if (vertex == null) continue; Set<EdgeRef> edgeSet = new HashSet<EdgeRef>(); for (Edge edge : edges) { // If the vertex is connected to the edge then add it if (new RefComparator().compare(edge.getSource().getVertex(), vertex) == 0 || new RefComparator().compare(edge.getTarget().getVertex(), vertex) == 0) { edgeSet.add(edge); } } retval.put(vertex, edgeSet); } return retval; }
@Override public final Map<VertexRef, Set<EdgeRef>> getEdgeIdsForVertices(VertexRef... vertices) { List<Edge> edges = getEdges(); Map<VertexRef,Set<EdgeRef>> retval = new HashMap<VertexRef,Set<EdgeRef>>(); for (VertexRef vertex : vertices) { if (vertex == null) continue; Set<EdgeRef> edgeSet = new HashSet<EdgeRef>(); for (Edge edge : edges) { // If the vertex is connected to the edge then add it if (new RefComparator().compare(edge.getSource().getVertex(), vertex) == 0 || new RefComparator().compare(edge.getTarget().getVertex(), vertex) == 0) { edgeSet.add(edge); } } retval.put(vertex, edgeSet); } return retval; }
private edu.uci.ics.jung.graph.DirectedGraph<VertexRef, Edge> convert(final Graph g) { if (!isFullyLevelAware(g)) { throw new IllegalStateException("The graph is not LevelAware. Cannot apply Hierarchy Layout. Aborting"); } // We need to sort the elements. For this purpose we use the DirectedOrderedSparseMultigraph final edu.uci.ics.jung.graph.DirectedGraph<VertexRef, Edge> jungGraph = new DirectedOrderedSparseMultigraph<>(); final Collection<Vertex> displayVertices = g.getDisplayVertices(); // Sort by level final List<Vertex> sortedVertices = displayVertices.stream().filter(v -> v instanceof LevelAware).sorted(new Comparator<Vertex>() { @Override public int compare(Vertex o1, Vertex o2) { return Integer.compare(((LevelAware) o1).getLevel(), ((LevelAware) o2).getLevel()); } }).collect(Collectors.toList()); // Build the graph for(VertexRef v : sortedVertices) { jungGraph.addVertex(v); } // The order of edges does not matter for(Edge e : g.getDisplayEdges()) { jungGraph.addEdge(e, e.getSource().getVertex(), e.getTarget().getVertex()); } return jungGraph; }
@Override public void updateLayout(Graph graph) { final Layout graphLayout = graph.getLayout(); SparseGraph<VertexRef, EdgeRef> jungGraph = new SparseGraph<VertexRef, EdgeRef>(); 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()); } Dimension size = selectLayoutSize(graph); Dimension paddedSize = new Dimension((int)(size.getWidth()*.75), (int)(size.getHeight()*.75)); doISOMLayout(graphLayout, jungGraph, size); doSpringLayout(graphLayout, jungGraph, size, SPRING_LAYOUT_REPULSION); doFRLayout(graphLayout, jungGraph, paddedSize, (int)(size.getWidth()/8.0), (int)(size.getHeight()/8.0)); doSpringLayout(graphLayout, jungGraph, size, SPRING_LAYOUT_REPULSION); }
@Override public void updateLayout(Graph graph) { final Layout graphLayout = graph.getLayout(); SparseGraph<VertexRef, EdgeRef> jungGraph = new SparseGraph<VertexRef, EdgeRef>(); 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()); } Dimension size = selectLayoutSize(graph); Dimension paddedSize = new Dimension((int)(size.getWidth()*.75), (int)(size.getHeight()*.75)); doISOMLayout(graphLayout, jungGraph, size); doSpringLayout(graphLayout, jungGraph, size, SPRING_LAYOUT_REPULSION); doFRLayout(graphLayout, jungGraph, paddedSize, (int)(size.getWidth()/8.0), (int)(size.getHeight()/8.0)); doSpringLayout(graphLayout, jungGraph, size, SPRING_LAYOUT_REPULSION); }
private String getTargetKey(Edge edge) { return m_graphContainer.getTopologyServiceClient().getVertex(edge.getTarget().getVertex(), m_graphContainer.getCriteria()).getKey(); }
private String getSourceKey(Edge edge) { return m_graphContainer.getTopologyServiceClient().getVertex(edge.getSource().getVertex(), m_graphContainer.getCriteria()).getKey(); }
private String getSourceKey(Edge edge) { return m_graphContainer.getTopologyServiceClient().getVertex(edge.getSource().getVertex(), m_graphContainer.getCriteria()).getKey(); }
private String getTargetKey(Edge edge) { return m_graphContainer.getTopologyServiceClient().getVertex(edge.getTarget().getVertex(), m_graphContainer.getCriteria()).getKey(); }
@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))); } }
@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))); } }