UNPKG

openhab

Version:
123 lines (110 loc) 3 kB
const Semantics = Java.type('org.openhab.core.model.script.actions.Semantics'); /** * Class representing the Semantic features of an openHAB Item. * * @memberof items * @hideconstructor */ class ItemSemantics { constructor (rawItem, getItem) { this.rawItem = rawItem; this.getItem = getItem; } /** * The type of the semantic equipment or `null` if none is set. * @type {string|null} */ get equipmentType () { try { return Java.typeName(Semantics.getEquipmentType(this.rawItem)).replace('org.openhab.core.semantics.model.equipment.', ''); } catch { return null; } } /** * The type of the semantic location or `null` if none is set. * @type {string|null} */ get locationType () { try { return Java.typeName(Semantics.getLocationType(this.rawItem)).replace('org.openhab.core.semantics.model.location.', ''); } catch (error) { return null; } } /** * The type of the semantic point or `null` if none is set. * @type {string|null} */ get pointType () { try { return Java.typeName(Semantics.getPointType(this.rawItem)).replace('org.openhab.core.semantics.model.point.', ''); } catch { return null; } } /** * The type of the semantic property or `null` if none is set. * @type {string|null} */ get propertyType () { try { return Java.typeName(Semantics.getPropertyType(this.rawItem)).replace('org.openhab.core.semantics.model.property.', ''); } catch { return null; } } /** * Determines the semantic type (i.e. a subtype of Location, Equipment or Point) or `null` if no semantics are set. * @type {string|null} */ get semanticType () { if (Semantics.isEquipment(this.rawItem)) { return 'Equipment'; } else if (Semantics.isLocation(this.rawItem)) { return 'Location'; } else if (Semantics.isPoint(this.rawItem)) { return 'Point'; } else { return null; } } /** * Whether the Item is a Location * @type {boolean} */ get isLocation () { return Semantics.isLocation(this.rawItem); } /** * Whether the Item is an Equipment * @type {boolean} */ get isEquipment () { return Semantics.isEquipment(this.rawItem); } /** * Whether the Item is a Point * @type {boolean} */ get isPoint () { return Semantics.isPoint(this.rawItem); } /** * The Location Item where this Item is situated or `null` if it's not in a Location. * @type {Item|null} */ get location () { const rawLoc = Semantics.getLocation(this.rawItem); return (rawLoc === null) ? null : this.getItem(rawLoc.getName()); } /** * The Equipment Item where this Item is situated or `null` if it's not in an Equipment. * @type {Item|null} */ get equipment () { const rawEqu = Semantics.getEquipment(this.rawItem); return (rawEqu === null) ? null : this.getItem(rawEqu.getName()); } } module.exports = ItemSemantics;