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
97 lines (95 loc) • 2.7 kB
JavaScript
import HashSet from '../../../../java/util/HashSet'
import Node from './Node'
import NodeMap from './NodeMap'
import DirectedEdge from './DirectedEdge'
import ArrayList from '../../../../java/util/ArrayList'
import Edge from './Edge'
export default class PlanarGraph {
constructor() {
PlanarGraph.constructor_.apply(this, arguments)
}
static constructor_() {
this._edges = new HashSet()
this._dirEdges = new HashSet()
this._nodeMap = new NodeMap()
}
findNodesOfDegree(degree) {
const nodesFound = new ArrayList()
for (let i = this.nodeIterator(); i.hasNext(); ) {
const node = i.next()
if (node.getDegree() === degree) nodesFound.add(node)
}
return nodesFound
}
dirEdgeIterator() {
return this._dirEdges.iterator()
}
edgeIterator() {
return this._edges.iterator()
}
remove() {
if (arguments[0] instanceof Edge) {
const edge = arguments[0]
this.remove(edge.getDirEdge(0))
this.remove(edge.getDirEdge(1))
this._edges.remove(edge)
edge.remove()
} else if (arguments[0] instanceof DirectedEdge) {
const de = arguments[0]
const sym = de.getSym()
if (sym !== null) sym.setSym(null)
de.getFromNode().remove(de)
de.remove()
this._dirEdges.remove(de)
} else if (arguments[0] instanceof Node) {
const node = arguments[0]
const outEdges = node.getOutEdges().getEdges()
for (let i = outEdges.iterator(); i.hasNext(); ) {
const de = i.next()
const sym = de.getSym()
if (sym !== null) this.remove(sym)
this._dirEdges.remove(de)
const edge = de.getEdge()
if (edge !== null)
this._edges.remove(edge)
}
this._nodeMap.remove(node.getCoordinate())
node.remove()
}
}
findNode(pt) {
return this._nodeMap.find(pt)
}
getEdges() {
return this._edges
}
nodeIterator() {
return this._nodeMap.iterator()
}
contains() {
if (arguments[0] instanceof Edge) {
const e = arguments[0]
return this._edges.contains(e)
} else if (arguments[0] instanceof DirectedEdge) {
const de = arguments[0]
return this._dirEdges.contains(de)
}
}
add() {
if (arguments[0] instanceof Node) {
const node = arguments[0]
this._nodeMap.add(node)
} else if (arguments[0] instanceof Edge) {
const edge = arguments[0]
this._edges.add(edge)
this.add(edge.getDirEdge(0))
this.add(edge.getDirEdge(1))
} else if (arguments[0] instanceof DirectedEdge) {
const dirEdge = arguments[0]
this._dirEdges.add(dirEdge)
}
}
getNodes() {
return this._nodeMap.values()
}
}