in source/packages/services/assetlibrary/src/devices/devices.assembler.ts [63:137]
public toDeviceItem(node: Node): DeviceItem {
logger.debug(`device.assembler toDeviceItem: in: node: ${JSON.stringify(node)}`);
if (node===undefined) {
logger.debug(`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.debug(`device.assembler toDeviceItem: exit: model: ${JSON.stringify(model)}`);
return model;
}