@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
JavaScript
"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;