xiot-core-spec-ts
Version:
XIOT Specification Codec
64 lines (63 loc) • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Property_1 = require("../../typedef/instance/Property");
const Spec_1 = require("../../typedef/constant/Spec");
const PropertyDefinitionCodec_1 = require("../definition/PropertyDefinitionCodec");
const DataFormat_1 = require("../../typedef/definition/property/data/DataFormat");
const ValueList_1 = require("../../typedef/definition/property/ValueList");
const ValueRange_1 = require("../../typedef/definition/property/ValueRange");
const Unit_1 = require("../../typedef/definition/property/Unit");
const DescriptionCodec_1 = require("../definition/DescriptionCodec");
class PropertyCodec {
static decodeArray(array) {
const list = [];
if (array != null) {
for (const o of array) {
list.push(PropertyCodec.decode(o));
}
}
return list;
}
static decode(o) {
return new Property_1.Property(o[Spec_1.Spec.IID], PropertyDefinitionCodec_1.PropertyDefinitionCodec.decode(o));
// const p = new Property(o[Spec.IID], PropertyDefinitionCodec.decode(o));
//
// if (o[Spec.X_OPTIONAL] != null) {
// p.type._optional = o[Spec.X_OPTIONAL];
// }
//
// return p;
}
static encode(property) {
const object = {
iid: property.iid,
type: property.type.toString(),
description: DescriptionCodec_1.DescriptionCodec.encode(property.description),
format: DataFormat_1.DataFormatToString(property.format),
access: property.access.toList()
};
if (property.constraintValue != null) {
if (property.constraintValue instanceof ValueList_1.ValueList) {
object[Spec_1.Spec.VALUE_LIST] = property.constraintValue.toJsonArray();
}
if (property.constraintValue instanceof ValueRange_1.ValueRange) {
object[Spec_1.Spec.VALUE_RANGE] = property.constraintValue.toJsonArray();
}
}
if (property.unit !== Unit_1.Unit.NONE) {
object[Spec_1.Spec.UNIT] = Unit_1.UnitToString(property.unit);
}
// if (property.type._optional) {
// object[Spec.X_OPTIONAL] = true;
// }
return object;
}
static encodeArray(properties) {
const array = [];
properties.forEach((property) => {
array.push(PropertyCodec.encode(property));
});
return array;
}
}
exports.PropertyCodec = PropertyCodec;