@abaplint/core
Version:
abaplint - Core API
130 lines • 5.43 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataElement = void 0;
const _abstract_object_1 = require("./_abstract_object");
const ddic_1 = require("../ddic");
const Types = require("../abap/types/basic");
class DataElement extends _abstract_object_1.AbstractObject {
constructor() {
super(...arguments);
this.parsedXML = undefined;
this.parsedType = undefined;
}
getType() {
return "DTEL";
}
getDescription() {
var _a;
this.parse();
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;
}
getAllowedNaming() {
return {
maxLength: 30,
allowNamespace: true,
};
}
setDirty() {
this.parsedXML = undefined;
this.parsedType = undefined;
super.setDirty();
}
getDomainName() {
var _a;
this.parse();
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.domname;
}
getTexts() {
var _a;
this.parse();
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.texts;
}
parseType(reg) {
var _a;
const references = [];
let lookup = undefined;
if (this.parsedXML === undefined) {
lookup = { type: new Types.UnknownType("Data Element " + this.getName() + ", parser error") };
}
else {
if (this.parsedType) {
return this.parsedType;
}
const ddic = new ddic_1.DDIC(reg);
if (this.parsedXML.refkind === "D") {
if (this.parsedXML.domname === undefined || this.parsedXML.domname === "") {
lookup = { type: new Types.UnknownType("DOMNAME unexpectely empty in " + this.getName()) };
}
else {
lookup = ddic.lookupDomain(this.parsedXML.domname, this.getName(), this.getDescription());
}
}
else if (this.parsedXML.refkind === "R") {
if (this.parsedXML.domname === undefined || this.parsedXML.domname === "") {
lookup = { type: new Types.UnknownType("DOMNAME unexpectely empty in " + this.getName()) };
}
else {
lookup = ddic.lookupObject(this.parsedXML.domname);
}
}
else {
if (this.parsedXML.datatype === undefined || this.parsedXML.datatype === "") {
lookup = { type: new Types.UnknownType("DATATYPE unexpectely empty in " + this.getName()) };
}
else {
lookup = { type: ddic.textToType({
text: this.parsedXML.datatype,
length: this.parsedXML.leng,
decimals: this.parsedXML.decimals,
infoText: this.getName(),
qualifiedName: this.getName(),
conversionExit: undefined,
ddicName: this.getName(),
description: (_a = this.parsedXML.texts) === null || _a === void 0 ? void 0 : _a.heading,
}) };
}
}
}
if (lookup.object) {
references.push({ object: lookup.object });
}
reg.getDDICReferences().setUsing(this, references);
if (!(lookup.type instanceof Types.UnknownType)) {
// the referenced type might not exist or contain syntax errors(for CLAS)
// so dont cache it, expect the user to fix it
this.parsedType = lookup.type;
}
return lookup.type;
}
parse() {
var _a, _b, _c;
if (this.parsedXML !== undefined) {
return { updated: false, runtime: 0 };
}
const start = Date.now();
this.parsedXML = {};
const parsed = super.parseRaw2();
if (parsed === undefined) {
return { updated: false, runtime: 0 };
}
const dd04v = (_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.DD04V;
this.parsedXML = {
description: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DDTEXT,
refkind: dd04v === null || dd04v === void 0 ? void 0 : dd04v.REFKIND,
domname: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DOMNAME,
datatype: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DATATYPE,
leng: dd04v === null || dd04v === void 0 ? void 0 : dd04v.LENG,
decimals: dd04v === null || dd04v === void 0 ? void 0 : dd04v.DECIMALS,
texts: {
short: dd04v === null || dd04v === void 0 ? void 0 : dd04v.SCRTEXT_S,
medium: dd04v === null || dd04v === void 0 ? void 0 : dd04v.SCRTEXT_M,
long: dd04v === null || dd04v === void 0 ? void 0 : dd04v.SCRTEXT_L,
heading: dd04v === null || dd04v === void 0 ? void 0 : dd04v.REPTEXT,
},
};
const end = Date.now();
return { updated: true, runtime: end - start };
}
}
exports.DataElement = DataElement;
//# sourceMappingURL=data_element.js.map