UNPKG

@p2olab/pimad-core

Version:

PiMAd (Process-industry-Modular-Automation-description) High level access to automation of modular plants.

77 lines (76 loc) 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseDataItemFactory = void 0; const Utils_1 = require("../Utils"); const ModuleAutomationObject_1 = require("./ModuleAutomationObject"); class ADataItem extends ModuleAutomationObject_1.AModuleAutomationObject { constructor() { super(); //this.cIData = {} as CommunicationInterfaceData; this.dataType = 'DataType: not initialized!'; // this.value = 'Value: not initialized'; this.initialized = false; } getCommunicationInterfaceData(callback) { this.genericPiMAdGetter(this.cIData, callback); } getDataType(callback) { this.genericPiMAdGetter(this.dataType, callback); } initialize(instructions) { if (!this.initialized) { this.dataType = instructions.dataType; this.name = instructions.name; if (instructions.ciData) { this.cIData = instructions.ciData; this.initialized = (JSON.stringify(this.cIData) === JSON.stringify(instructions.ciData) && this.dataType === instructions.dataType && this.moduleAutomationObjectInitialize({ dataSourceIdentifier: instructions.dataSourceIdentifier, defaultValue: instructions.defaultValue, description: instructions.description, metaModelRef: instructions.metaModelRef, name: instructions.name, pimadIdentifier: instructions.pimadIdentifier, })); } else { this.initialized = (this.dataType === instructions.dataType && this.moduleAutomationObjectInitialize({ dataSourceIdentifier: instructions.dataSourceIdentifier, defaultValue: instructions.defaultValue, description: instructions.description, metaModelRef: instructions.metaModelRef, name: instructions.name, pimadIdentifier: instructions.pimadIdentifier, value: instructions.value })); } return this.initialized; } else { return false; } } } class BaseDataItem extends ADataItem { } /** * This one is a abstract DataItemFactory, actually without deeper purpose. In future this one is a extra abstraction layer. */ class ADataItemFactory { } /** * This factory creates objects of the class BaseDataItems. */ class BaseDataItemFactory extends ADataItemFactory { /** * */ create() { const dataItem = new BaseDataItem(); Utils_1.logger.debug(this.constructor.name + ' creates a ' + dataItem.constructor.name); return dataItem; } } exports.BaseDataItemFactory = BaseDataItemFactory;