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
152 lines (133 loc) • 2.36 kB
JavaScript
import Collection from './Collection'
import Iterator from './Iterator'
import NoSuchElementException from './NoSuchElementException'
import OperationNotSupported from './OperationNotSupported'
import Set from './Set'
/**
* @see http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html
*
* @extends {javascript.util.Set}
* @constructor
* @private
*/
export default class HashSet extends Set {
constructor () {
super()
this.array_ = []
if (arguments[0] instanceof Collection) {
this.addAll(arguments[0])
}
}
/**
* @override
*/
contains (o) {
for (var i = 0, len = this.array_.length; i < len; i++) {
var e = this.array_[i]
if (e === o) {
return true
}
}
return false
}
/**
* @override
*/
add (o) {
if (this.contains(o)) {
return false
}
this.array_.push(o)
return true
}
/**
* @override
*/
addAll (c) {
for (var i = c.iterator(); i.hasNext();) {
this.add(i.next())
}
return true
}
/**
* @override
*/
remove (o) {
// throw new javascript.util.OperationNotSupported()
throw new Error()
}
/**
* @override
*/
size () {
return this.array_.length
}
/**
* @override
*/
isEmpty () {
return this.array_.length === 0
}
/**
* @override
*/
toArray () {
var array = []
for (var i = 0, len = this.array_.length; i < len; i++) {
array.push(this.array_[i])
}
return array
}
/**
* @override
*/
iterator () {
return new Iterator_(this)
}
}
/**
* @extends {Iterator}
* @param {HashSet} hashSet
* @constructor
* @private
*/
class Iterator_ extends Iterator {
constructor (hashSet) {
super()
/**
* @type {HashSet}
* @private
*/
this.hashSet_ = hashSet
/**
* @type {number}
* @private
*/
this.position_ = 0
}
/**
* @override
*/
next () {
if (this.position_ === this.hashSet_.size()) {
throw new NoSuchElementException()
}
return this.hashSet_.array_[this.position_++]
}
/**
* @override
*/
hasNext () {
if (this.position_ < this.hashSet_.size()) {
return true
} else {
return false
}
}
/**
* @override
*/
remove () {
throw new OperationNotSupported()
}
}