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