UNPKG

@abaplint/core

Version:
91 lines 3.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Domain = void 0; const _abstract_object_1 = require("./_abstract_object"); const Types = require("../abap/types/basic"); const ddic_1 = require("../ddic"); const xml_utils_1 = require("../xml_utils"); class Domain extends _abstract_object_1.AbstractObject { getType() { return "DOMA"; } getDescription() { var _a; return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description; } getConversionExit() { var _a; return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.conversionExit; } getAllowedNaming() { return { maxLength: 30, allowNamespace: true, }; } setDirty() { this.parsedXML = undefined; super.setDirty(); } parseType(reg, dataElement, description) { // dont cache the DOMA parsed type, they are cached on DTEL level // also note that the type carries the name of the DTEL if (this.parsedXML === undefined) { this.parse(); } if (this.parsedXML === undefined) { return new Types.UnknownType("Domain " + this.getName() + " parser error", this.getName()); } const ddic = new ddic_1.DDIC(reg); return ddic.textToType({ text: this.parsedXML.datatype, length: this.parsedXML.length, decimals: this.parsedXML.decimals, infoText: this.getName(), qualifiedName: dataElement, conversionExit: this.parsedXML.conversionExit, ddicName: dataElement, description: description, }); } parse() { var _a, _b, _c, _d, _e, _f, _g; if (this.parsedXML) { return { updated: false, runtime: 0 }; } const start = Date.now(); this.parsedXML = {}; const parsed = super.parseRaw2(); if (parsed === undefined) { return { updated: false, runtime: 0 }; } const dd01v = (_c = (_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.DD01V; const dd07v_tab = (0, xml_utils_1.xmlToArray)((_g = (_f = (_e = (_d = parsed.abapGit) === null || _d === void 0 ? void 0 : _d["asx:abap"]) === null || _e === void 0 ? void 0 : _e["asx:values"]) === null || _f === void 0 ? void 0 : _f.DD07V_TAB) === null || _g === void 0 ? void 0 : _g.DD07V); const values = []; for (const ddo7v of dd07v_tab) { const value = { description: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DDTEXT, low: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DOMVALUE_L, high: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DOMVALUE_H, language: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DDLANGUAGE, }; values.push(value); } this.parsedXML = { description: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DDTEXT, datatype: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DATATYPE, length: dd01v === null || dd01v === void 0 ? void 0 : dd01v.LENG, conversionExit: dd01v === null || dd01v === void 0 ? void 0 : dd01v.CONVEXIT, decimals: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DECIMALS, values: values, }; const end = Date.now(); return { updated: true, runtime: end - start }; } getFixedValues() { var _a, _b; return (_b = (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.values) !== null && _b !== void 0 ? _b : []; } } exports.Domain = Domain; //# sourceMappingURL=domain.js.map