in source/packages/services/assetlibrary-export/src/devices/devices.assembler.ts [71:160]
public toDeviceItem(node: Node): DeviceItem {
logger.silly(`device.assembler toDeviceItem: in: node: ${JSON.stringify(node)}`);
if (node === undefined) {
logger.silly(`device.assembler toDeviceItem: exit: model: undefined`);
return undefined;
}
const model = new DeviceItem();
if (node.types.indexOf(TypeCategory.Component) >= 0) {
model.category = TypeCategory.Component;
} else {
model.category = TypeCategory.Device;
}
model.templateId = node.types.filter(
(t) => t !== TypeCategory.Device && t !== TypeCategory.Component
)[0];
model.version = node.version;
Object.keys(node.attributes).forEach((key) => {
switch (key) {
case 'deviceId':
model.deviceId = <string>(
this.fullAssembler.extractPropertyValue(node.attributes[key])
);
break;
case 'awsIotThingArn':
model.awsIotThingArn = <string>(
this.fullAssembler.extractPropertyValue(node.attributes[key])
);
break;
case 'description':
model.description = <string>(
this.fullAssembler.extractPropertyValue(node.attributes[key])
);
break;
case 'imageUrl':
model.imageUrl = <string>(
this.fullAssembler.extractPropertyValue(node.attributes[key])
);
break;
case 'connected':
model.connected = <boolean>(
this.fullAssembler.extractPropertyValue(node.attributes[key])
);
break;
case 'state':
model.state = <DeviceState>(
this.fullAssembler.extractPropertyValue(node.attributes[key])
);
break;
default:
model.attributes[key] = this.fullAssembler.extractPropertyValue(
node.attributes[key]
);
}
});
this.assembleRelated(model, node.in, 'in');
this.assembleRelated(model, node.out, 'out');
// remove any empty collection attributes
if (model.groups && model.groups.in && Object.keys(model.groups.in).length === 0) {
delete model.groups.in;
}
if (model.groups && model.groups.out && Object.keys(model.groups.out).length === 0) {
delete model.groups.out;
}
if (Object.keys(model.groups).length === 0) {
delete model.groups;
}
if (model.devices && model.devices.in && Object.keys(model.devices.in).length === 0) {
delete model.devices.in;
}
if (model.devices && model.devices.out && Object.keys(model.devices.out).length === 0) {
delete model.devices.out;
}
if (Object.keys(model.devices).length === 0) {
delete model.devices;
}
if (model.components && model.components.length === 0) {
delete model.components;
}
logger.silly(`device.assembler toDeviceItem: exit: model: ${JSON.stringify(model)}`);
return model;
}