Exemple #1
0
  /**
   * @param v1Number the number of the first vertex v1
   * @param v2Number the number of the second vertex v2
   * @return exists the edge from v1 to v2
   */
  public boolean hasEdge(int v1Number, int v2Number) {
    V v1, v2;
    Boolean containsEdge = null;

    if (cacheEdges) {
      containsEdge = adjMatrix[v1Number][v2Number];
    }

    if (!cacheEdges || (containsEdge == null)) {
      v1 = getVertex(v1Number);
      v2 = getVertex(v2Number);
      containsEdge = graph.containsEdge(v1, v2);
    }

    if (cacheEdges && (adjMatrix[v1Number][v2Number] == null)) {
      adjMatrix[v1Number][v2Number] = containsEdge;
    }

    return containsEdge;
  }
  @Override
  public void generateGraph(
      Graph<V, E> veGraph, VertexFactory<V> vVertexFactory, Map<String, V> stringVMap) {

    Map<Integer, V> intToNodeMap = new HashMap<Integer, V>();

    for (Integer nodeID : selected.vertices.keySet()) {
      V node = vVertexFactory.createVertex();
      if (!veGraph.containsVertex(node)) veGraph.addVertex(node);
      intToNodeMap.put(nodeID, node);
    }

    for (PajekArc arc : selected.arcs) {
      V source = intToNodeMap.get(arc.source);
      V target = intToNodeMap.get(arc.target);
      E edge = null;
      if (!veGraph.containsEdge(source, target)) edge = veGraph.addEdge(source, target);
      else edge = veGraph.getEdge(source, target);

      if (veGraph instanceof WeightedGraph)
        ((WeightedGraph) veGraph).setEdgeWeight(edge, arc.weight);
    }
  }