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 518x 518x 518x 518x 518x 6278x 6278x 518x 518x 432x 432x 42x 42x 42x 432x 432x 432x 518x 518x 663x 663x 518x 518x 3404x 3404x 518x 518x 61x 61x 61x 61x 61x 518x 518x 673x 673x 673x 673x 518x 518x 764x 764x 518x 518x 102x 102x 518x 518x 518x 518x 200x 200x 200x 518x 518x 17x 17x 17x 518x 518x 52x 52x 52x 52x 518x 518x 518x 518x 56x 64x 6x 6x 64x 50x 50x 518x 518x 518x 518x 269x 190x 190x 79x 79x 79x 79x 269x 51x 51x 28x 269x 269x 28x 28x 269x 269x 269x 518x 518x | 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 : "";
}
}
|