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
60 lines (55 loc) • 1.37 kB
JavaScript
import HashMap from '../../../../java/util/HashMap'
import HalfEdge from './HalfEdge'
export default class EdgeGraph {
constructor() {
EdgeGraph.constructor_.apply(this, arguments)
}
static constructor_() {
this._vertexMap = new HashMap()
}
static isValidEdge(orig, dest) {
const cmp = dest.compareTo(orig)
return cmp !== 0
}
insert(orig, dest, eAdj) {
const e = this.create(orig, dest)
if (eAdj !== null)
eAdj.insert(e)
else
this._vertexMap.put(orig, e)
const eAdjDest = this._vertexMap.get(dest)
if (eAdjDest !== null)
eAdjDest.insert(e.sym())
else
this._vertexMap.put(dest, e.sym())
return e
}
create(p0, p1) {
const e0 = this.createEdge(p0)
const e1 = this.createEdge(p1)
e0.link(e1)
return e0
}
createEdge(orig) {
return new HalfEdge(orig)
}
addEdge(orig, dest) {
if (!EdgeGraph.isValidEdge(orig, dest)) return null
const eAdj = this._vertexMap.get(orig)
let eSame = null
if (eAdj !== null)
eSame = eAdj.find(dest)
if (eSame !== null)
return eSame
const e = this.insert(orig, dest, eAdj)
return e
}
getVertexEdges() {
return this._vertexMap.values()
}
findEdge(orig, dest) {
const e = this._vertexMap.get(orig)
if (e === null) return null
return e.find(dest)
}
}