UNPKG

@p2olab/pimad-core

Version:

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

104 lines (103 loc) 3.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AttributeFactoryVendor = void 0; const Utils_1 = require("../Utils"); const Backbone_1 = require("../Backbone"); var PiMAdResponseVendor = Backbone_1.Backbone.PiMAdResponseVendor; var AttributeGetterVariables; (function (AttributeGetterVariables) { AttributeGetterVariables[AttributeGetterVariables["DATATYPE"] = 0] = "DATATYPE"; AttributeGetterVariables[AttributeGetterVariables["NAME"] = 1] = "NAME"; AttributeGetterVariables[AttributeGetterVariables["VALUE"] = 2] = "VALUE"; })(AttributeGetterVariables || (AttributeGetterVariables = {})); class AAttribute { constructor() { this.dataType = 'dataType: undefined'; this.name = 'name: undefined'; this.initialized = false; this.responseVendor = new PiMAdResponseVendor(); this.value = 'value: undefined'; } getter(variable) { let response; if (this.initialized) { response = this.responseVendor.buySuccessResponse(); switch (variable) { case AttributeGetterVariables.DATATYPE: response.initialize('Success!', { data: this.dataType }); break; case AttributeGetterVariables.NAME: response.initialize('Success!', { data: this.name }); break; case AttributeGetterVariables.VALUE: response.initialize('Success!', { data: this.value }); break; } } else { response = this.responseVendor.buyErrorResponse(); response.initialize('Attribute is not initialized!', {}); } return response; } getDataType() { return this.getter(AttributeGetterVariables.DATATYPE); } getName() { return this.getter(AttributeGetterVariables.NAME); } getValue() { return this.getter(AttributeGetterVariables.VALUE); } initialize(data) { if (!this.initialized) { this.dataType = data.DataType; this.name = data.Name; this.value = data.Value; this.initialized = (this.dataType === data.DataType && this.name === data.Name && this.value === data.Value); return this.initialized; } else { return false; } } } class ServiceAttribute extends AAttribute { initialize(data) { return super.initialize(data); } } class ProcedureAttribute extends AAttribute { initialize(data) { return super.initialize(data); } } class AAttributeFactory { } class ServiceAttributeFactory extends AAttributeFactory { create() { const localeAttribute = new ServiceAttribute(); Utils_1.logger.debug(this.constructor.name + ' creates a ' + localeAttribute.constructor.name); return localeAttribute; } } class ProcedureAttributeFactory extends AAttributeFactory { create() { const localeAttribute = new ProcedureAttribute(); Utils_1.logger.debug(this.constructor.name + ' creates a ' + localeAttribute.constructor.name); return localeAttribute; } } class AttributeFactoryVendor { buyServiceAttributeFactory() { const localAttributeFactory = new ServiceAttributeFactory(); Utils_1.logger.debug(this.constructor.name + ' sells a ' + localAttributeFactory.constructor.name); return localAttributeFactory; } buyProcedureAttributeFactory() { const localAttributeFactory = new ProcedureAttributeFactory(); Utils_1.logger.debug(this.constructor.name + ' sells a ' + localAttributeFactory.constructor.name); return localAttributeFactory; } } exports.AttributeFactoryVendor = AttributeFactoryVendor;