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
76 lines (75 loc) • 1.95 kB
JavaScript
import Collections from '../../../../java/util/Collections'
import DirectedEdge from './DirectedEdge'
import ArrayList from '../../../../java/util/ArrayList'
import Edge from './Edge'
export default class DirectedEdgeStar {
constructor() {
DirectedEdgeStar.constructor_.apply(this, arguments)
}
static constructor_() {
this._outEdges = new ArrayList()
this._sorted = false
}
getNextEdge(dirEdge) {
const i = this.getIndex(dirEdge)
return this._outEdges.get(this.getIndex(i + 1))
}
getCoordinate() {
const it = this.iterator()
if (!it.hasNext()) return null
const e = it.next()
return e.getCoordinate()
}
iterator() {
this.sortEdges()
return this._outEdges.iterator()
}
sortEdges() {
if (!this._sorted) {
Collections.sort(this._outEdges)
this._sorted = true
}
}
remove(de) {
this._outEdges.remove(de)
}
getEdges() {
this.sortEdges()
return this._outEdges
}
getNextCWEdge(dirEdge) {
const i = this.getIndex(dirEdge)
return this._outEdges.get(this.getIndex(i - 1))
}
getIndex() {
if (arguments[0] instanceof Edge) {
const edge = arguments[0]
this.sortEdges()
for (let i = 0; i < this._outEdges.size(); i++) {
const de = this._outEdges.get(i)
if (de.getEdge() === edge) return i
}
return -1
} else if (arguments[0] instanceof DirectedEdge) {
const dirEdge = arguments[0]
this.sortEdges()
for (let i = 0; i < this._outEdges.size(); i++) {
const de = this._outEdges.get(i)
if (de === dirEdge) return i
}
return -1
} else if (Number.isInteger(arguments[0])) {
const i = arguments[0]
let modi = i % this._outEdges.size()
if (modi < 0) modi += this._outEdges.size()
return modi
}
}
add(de) {
this._outEdges.add(de)
this._sorted = false
}
getDegree() {
return this._outEdges.size()
}
}