Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 1x 1x 12x 12x 1x 1x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 6x 3x 3x 3x 3x 3x 3x 3x 3x 3x 6x 2x 2x 1x 6x 6x 6x 6x 6x 6x 6x 1x 1x | import {UnknownType, VoidType} from "../abap/types/basic";
import {AbstractType} from "../abap/types/basic/_abstract_type";
import {DDIC} from "../ddic";
import {IObjectAndToken} from "../_iddic_references";
import {IRegistry} from "../_iregistry";
import {AbstractObject} from "./_abstract_object";
export class MaintenanceAndTransportObject extends AbstractObject {
private parsedXML: {
area?: string,
objectName?: string,
objectType?: string,
} | undefined;
public setDirty() {
super.setDirty();
this.parsedXML = undefined;
}
public getType(): string {
return "TOBJ";
}
public getDescription(): string | undefined {
// todo
return undefined;
}
public getAllowedNaming() {
return {
maxLength: 31,
allowNamespace: true,
};
}
public getArea(): string | undefined {
this.parse();
return this.parsedXML?.area;
}
public getObjectName(): string | undefined {
this.parse();
return this.parsedXML?.objectName;
}
public getObjectType(): string | undefined {
this.parse();
return this.parsedXML?.objectType;
}
public parseType(reg: IRegistry): AbstractType {
this.parse();
const references: IObjectAndToken[] = [];
const ddic = new DDIC(reg);
if (this.parsedXML?.objectName && this.parsedXML.objectType === "S") {
const found = ddic.lookupTableOrView2(this.parsedXML.objectName);
if (found) {
references.push({object: found});
reg.getDDICReferences().setUsing(this, references);
return found.parseType(reg);
} else if (ddic.inErrorNamespace(this.parsedXML.objectName)) {
return new UnknownType(this.parsedXML.objectName + " not found");
} else {
return VoidType.get(this.parsedXML.objectName);
}
} else if (this.parsedXML?.objectType !== "S" && this.parsedXML?.objectName){
return VoidType.get(this.parsedXML.objectName);
} else {
return new UnknownType("Parsing error");
}
}
public parse() {
if (this.parsedXML) {
return {updated: false, runtime: 0};
}
const start = Date.now();
this.parsedXML = {};
const parsed = super.parseRaw2();
if (parsed === undefined
|| parsed.abapGit === undefined
|| parsed.abapGit?.["asx:abap"]?.["asx:values"] === undefined) {
return {updated: false, runtime: 0};
}
this.parsedXML.area = parsed.abapGit?.["asx:abap"]?.["asx:values"]?.TOBJ?.TVDIR?.AREA;
this.parsedXML.objectName = parsed.abapGit?.["asx:abap"]?.["asx:values"]?.OBJH?.OBJECTNAME;
this.parsedXML.objectType = parsed.abapGit?.["asx:abap"]?.["asx:values"]?.OBJH?.OBJECTTYPE;
const end = Date.now();
return {updated: true, runtime: end - start};
}
}
|