public AbstractNode findNode(String identifier) { final String uid = registry.nodeUniqueId(id); Iterator it = nodes.values().iterator(); while (it.hasNext()) { AbstractNode node = (AbstractNode) it.next(); if (uid.equals(node.getId())) { return node; } } return null; } }
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))); }
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")); }
cluster.addNode(topicId) .setLabel(String.format("Topic: %s", topic)) .addAssociation(topicId, processorId); }); } else if (node instanceof TopologyDescription.Processor) { processorNode.addAssociation(predecessorId, processorId); processorNode.addAssociation(processorId, storeId); sinkNode.addAssociation(predecessorId, processorId); sinkNode.addAssociation(processorId, topicId);
public String render() { return root.render(); }