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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 661x 661x 661x 661x 661x 7132x 7132x 661x 661x 524x 524x 52x 52x 52x 524x 524x 524x 661x 661x 823x 823x 661x 661x 3818x 3818x 661x 661x 61x 61x 61x 61x 61x 661x 661x 905x 905x 905x 905x 661x 661x 767x 767x 661x 661x 104x 104x 661x 661x 661x 661x 208x 208x 208x 661x 661x 21x 21x 21x 661x 661x 52x 52x 52x 52x 661x 661x 661x 661x 56x 64x 6x 6x 64x 50x 50x 661x 661x 661x 661x 281x 198x 198x 83x 83x 83x 83x 281x 51x 51x 32x 281x 281x 32x 32x 281x 281x 281x 661x 661x | import {ABAPObject} from "./_abap_object";
import {InfoClassDefinition} from "../abap/4_file_information/_abap_file_information";
import {IClassDefinition} from "../abap/types/_class_definition";
import {Identifier} from "../abap/4_file_information/_identifier";
import {ABAPFile} from "../abap/abap_file";
export enum ClassCategory {
Test = "05",
Persistent = "10",
PersistentFactory = "11",
Exception = "40",
SharedObject = "45",
}
export class Class extends ABAPObject {
private def: IClassDefinition | undefined = undefined;
private parsedXML: {name?: string, description?: string, category?: string} | undefined = undefined;
public getType(): string {
return "CLAS";
}
public getSequencedFiles(): readonly ABAPFile[] {
const sequence = [".clas.locals_def.abap", ".clas.locals_imp.abap", ".clas.abap", ".clas.testclasses.abap"];
const copy = this.getABAPFiles().slice().sort((a, b) => {
const aValue = sequence.findIndex((s) => a.getFilename().endsWith(s));
const bValue = sequence.findIndex((s) => b.getFilename().endsWith(s));
return aValue - bValue;
});
return copy;
}
public setDefinition(def: IClassDefinition | undefined): void {
this.def = def;
}
public getDefinition(): IClassDefinition | undefined {
return this.def;
}
public getAllowedNaming() {
return {
maxLength: 30,
allowNamespace: true,
};
}
public setDirty(): void {
this.def = undefined;
this.parsedXML = undefined;
super.setDirty();
}
public getClassDefinition(): InfoClassDefinition | undefined {
return this.getMainABAPFile()?.getInfo().getClassDefinitionByName(this.getName());
}
public getIdentifier(): Identifier | undefined {
return this.getClassDefinition()?.identifier;
}
// -------------------
public getDescription(): string | undefined {
this.parseXML();
return this.parsedXML?.description;
}
public getNameFromXML(): string | undefined {
this.parseXML();
return this.parsedXML?.name;
}
public getCategory(): string | undefined {
this.parseXML();
// https://blog.mariusschulz.com/2017/10/27/typescript-2-4-string-enums#no-reverse-mapping-for-string-valued-enum-members
return this.parsedXML?.category;
}
public getLocalsImpFile(): ABAPFile | undefined {
for (const file of this.getABAPFiles()) {
if (file.getFilename().endsWith(".clas.locals_imp.abap")) {
return file;
}
}
return undefined;
}
public getTestclassFile(): ABAPFile | undefined {
for (const file of this.getABAPFiles()) {
if (file.getFilename().endsWith(".clas.testclasses.abap")) {
return file;
}
}
return undefined;
}
/////////////////////////
private parseXML() {
if (this.parsedXML !== undefined) {
return;
}
this.parsedXML = {};
const parsed = super.parseRaw2();
if (parsed?.abapGit?.["asx:abap"]?.["asx:values"] === undefined) {
return;
}
const vseo = parsed.abapGit?.["asx:abap"]?.["asx:values"]?.VSEOCLASS;
if (vseo === undefined) {
return;
}
this.parsedXML.category = vseo.CATEGORY;
this.parsedXML.description = vseo.DESCRIPT ? vseo.DESCRIPT : "";
this.parsedXML.name = vseo.CLSNAME ? vseo.CLSNAME : "";
}
}
|