Exemplo n.º 1
0
  private void addExecutionVertices(
      Map<ManagementGroupVertex, SWTGroupVertex> groupMap,
      ManagementGraph managementGraph,
      GraphVisualizationData visualizationData) {

    ManagementGraphIterator iterator = new ManagementGraphIterator(managementGraph, true);
    final Map<ManagementVertex, SWTVertex> vertexMap = new HashMap<ManagementVertex, SWTVertex>();
    final Map<ManagementGate, SWTGate> gateMap = new HashMap<ManagementGate, SWTGate>();

    while (iterator.hasNext()) {

      final ManagementVertex mv = iterator.next();
      final SWTGroupVertex parent = groupMap.get(mv.getGroupVertex());

      final SWTVertex visualVertex = new SWTVertex(parent, mv);
      vertexMap.put(mv, visualVertex);

      for (int i = 0; i < mv.getNumberOfOutputGates(); i++) {
        final ManagementGate outputGate = mv.getOutputGate(i);
        final SWTGate visualGate = new SWTGate(visualVertex, outputGate);
        gateMap.put(outputGate, visualGate);
      }

      for (int i = 0; i < mv.getNumberOfInputGates(); i++) {
        final ManagementGate inputGate = mv.getInputGate(i);
        final SWTGate visualGate = new SWTGate(visualVertex, inputGate);
        gateMap.put(inputGate, visualGate);
      }
    }

    iterator = new ManagementGraphIterator(managementGraph, true);

    // Setup connections
    while (iterator.hasNext()) {

      final ManagementVertex source = iterator.next();
      final SWTVertex visualSource = vertexMap.get(source);

      for (int i = 0; i < source.getNumberOfOutputGates(); i++) {

        final ManagementGate sourceGate = source.getOutputGate(i);
        final SWTGate visualSourceGate = gateMap.get(sourceGate);

        for (int j = 0; j < sourceGate.getNumberOfForwardEdges(); j++) {

          final ManagementEdge forwardEdge = sourceGate.getForwardEdge(j);
          final SWTVertex visualTarget = vertexMap.get(forwardEdge.getTarget().getVertex());
          final SWTGate visualTargetGate = gateMap.get(forwardEdge.getTarget());

          visualSource.connectTo(visualTarget);
          visualSourceGate.connectTo(visualTargetGate);
        }
      }
    }
  }