private static void addExecutionVertices( Map<ExecutionGroupVertex, ManagementGroupVertex> groupMap, ExecutionGraph executionGraph) { ExecutionGraphIterator iterator = new ExecutionGraphIterator(executionGraph, true); final Map<ExecutionVertex, ManagementVertex> vertexMap = new HashMap<ExecutionVertex, ManagementVertex>(); final Map<ExecutionGate, ManagementGate> gateMap = new HashMap<ExecutionGate, ManagementGate>(); while (iterator.hasNext()) { final ExecutionVertex ev = iterator.next(); final ManagementGroupVertex parent = groupMap.get(ev.getGroupVertex()); final AbstractInstance instance = ev.getAllocatedResource().getInstance(); final ManagementVertex managementVertex = new ManagementVertex( parent, ev.getID().toManagementVertexID(), (instance.getInstanceConnectionInfo() != null) ? instance.getInstanceConnectionInfo().toString() : instance.toString(), instance.getType().toString(), ev.getIndexInVertexGroup()); managementVertex.setExecutionState(ev.getExecutionState()); vertexMap.put(ev, managementVertex); for (int i = 0; i < ev.getNumberOfOutputGates(); i++) { final ExecutionGate outputGate = ev.getOutputGate(i); final ManagementGate managementGate = new ManagementGate(managementVertex, new ManagementGateID(), i, false); gateMap.put(outputGate, managementGate); } for (int i = 0; i < ev.getNumberOfInputGates(); i++) { final ExecutionGate inputGate = ev.getInputGate(i); final ManagementGate managementGate = new ManagementGate(managementVertex, new ManagementGateID(), i, true); gateMap.put(inputGate, managementGate); } } iterator = new ExecutionGraphIterator(executionGraph, true); // Setup connections while (iterator.hasNext()) { final ExecutionVertex source = iterator.next(); for (int i = 0; i < source.getNumberOfOutputGates(); i++) { final ExecutionGate outputGate = source.getOutputGate(i); final ManagementGate manangementOutputGate = gateMap.get(outputGate); final ChannelType channelType = outputGate.getChannelType(); for (int j = 0; j < outputGate.getNumberOfEdges(); j++) { final ExecutionEdge outputChannel = outputGate.getEdge(j); final ManagementGate managementInputGate = gateMap.get(outputChannel.getInputGate()); final ManagementEdgeID sourceEdgeID = new ManagementEdgeID(outputChannel.getOutputChannelID()); final ManagementEdgeID targetEdgeID = new ManagementEdgeID(outputChannel.getInputChannelID()); new ManagementEdge( sourceEdgeID, targetEdgeID, manangementOutputGate, j, managementInputGate, outputChannel.getInputGateIndex(), channelType); } } } }