String processorId = String.format("node-%s", node.name()); cluster.addNode(processorId) .setLabel(String.format("Source: %s", node.name())); String topicId = String.format("topic-%s", topic); cluster.addNode(topicId) .setLabel(String.format("Topic: %s", topic)) .addAssociation(topicId, processorId); }); String processorId = String.format("node-%s", node.name()); DotGraph.AbstractNode processorNode = cluster.addNode(processorId) .setLabel(String.format("Processor: %s", node.name())); String processorId = String.format("node-%s", node.name()); DotGraph.AbstractNode sinkNode = cluster.addNode(processorId).setLabel(String.format("Sink: %s", node.name()));
private static void printTopics(TopologyDescription topologyDescription, DotGraph.Digraph digraph) { final Stream<String> sourceTopics = topologyDescription.subtopologies().stream() .flatMap(subtopology -> subtopology.nodes().stream()) .filter(node -> node instanceof TopologyDescription.Source) .flatMap(node -> { final String topics = ((TopologyDescription.Source) node).topics(); return Stream.of(topics.substring(1, topics.length() - 1).split(",")); }) .map(String::trim); final Stream<String> sinkTopics = topologyDescription.subtopologies().stream() .flatMap(subtopology -> subtopology.nodes().stream()) .filter(node -> node instanceof TopologyDescription.Sink) .map(node -> ((TopologyDescription.Sink) node).topic()); Stream.concat(sourceTopics, sinkTopics) .distinct() .forEach(topic -> digraph .addNode(String.format("topic-%s", topic)) .setOptions("shape=cds") .setLabel(String.format("Topic: %s", topic))); }
public Node addNode(Object id) { final String uid = registry.nodeUniqueId(id); Node node = (Node) nodes.get(uid); if (node == null) { node = new Node(registry, uid); nodes.put(uid, node); } return node; }
public Node addPossibleNode(Object id) { final String uid = registry.existingUniqueId(id); if (uid == null) { return null; } Node node = (Node) nodes.get(uid); if (node == null) { node = new Node(registry, uid); nodes.put(uid, node); } return node; }
private static void printStores(TopologyDescription topologyDescription, DotGraph.Digraph digraph) { topologyDescription.subtopologies().stream() .flatMap(subtopology -> subtopology.nodes().stream()) .filter(node -> node instanceof TopologyDescription.Processor) .flatMap(node -> ((TopologyDescription.Processor) node).stores().stream()) .distinct() .forEach(topic -> digraph .addNode(String.format("store-%s", topic)) .setLabel(String.format("Store: %s", topic)) .setOptions("shape=box3d")); }