UNPKG

node-red-contrib-tak-registration

Version:

A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK

53 lines (51 loc) 1.47 kB
import Stack from '../../../../../java/util/Stack' import Subgraph from '../Subgraph' import ArrayList from '../../../../../java/util/ArrayList' import GraphComponent from '../GraphComponent' export default class ConnectedSubgraphFinder { constructor () { this._graph = null const graph = arguments[0] this._graph = graph } addReachable (startNode, subgraph) { const nodeStack = new Stack() nodeStack.add(startNode) while (!nodeStack.empty()) { const node = nodeStack.pop() this.addEdges(node, nodeStack, subgraph) } } findSubgraph (node) { const subgraph = new Subgraph(this._graph) this.addReachable(node, subgraph) return subgraph } getConnectedSubgraphs () { const subgraphs = new ArrayList() GraphComponent.setVisited(this._graph.nodeIterator(), false) for (const i = this._graph.edgeIterator(); i.hasNext();) { const e = i.next() const node = e.getDirEdge(0).getFromNode() if (!node.isVisited()) { subgraphs.add(this.findSubgraph(node)) } } return subgraphs } addEdges (node, nodeStack, subgraph) { node.setVisited(true) for (const i = node.getOutEdges().iterator(); i.hasNext();) { const de = i.next() subgraph.add(de.getEdge()) const toNode = de.getToNode() if (!toNode.isVisited()) nodeStack.push(toNode) } } interfaces_ () { return [] } getClass () { return ConnectedSubgraphFinder } }