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 124 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 421x 421x 421x 421x 421x 5325x 5325x 421x 421x 372x 372x 27x 27x 27x 372x 372x 372x 421x 421x 547x 547x 421x 421x 2983x 2983x 421x 421x 58x 58x 58x 58x 58x 421x 421x 546x 546x 546x 546x 421x 421x 646x 646x 421x 421x 98x 98x 421x 421x 421x 421x 175x 175x 175x 421x 421x 10x 10x 10x 421x 421x 50x 50x 50x 50x 421x 421x 421x 421x 53x 59x 6x 6x 59x 47x 47x 421x 421x 421x 421x 235x 168x 168x 67x 67x 67x 67x 67x 235x 235x 46x 46x 21x 21x 235x 21x 21x 235x 235x 235x 421x 421x | 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 === undefined
|| parsed.abapGit["asx:abap"] === undefined
|| 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 : "";
}
} |