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 405x 405x 405x 405x 405x 5183x 5183x 405x 405x 363x 363x 27x 27x 27x 363x 363x 363x 405x 405x 528x 528x 405x 405x 2636x 2636x 405x 405x 58x 58x 58x 58x 58x 405x 405x 526x 526x 526x 526x 405x 405x 646x 646x 405x 405x 98x 98x 405x 405x 405x 405x 175x 175x 175x 405x 405x 10x 10x 10x 405x 405x 1x 1x 1x 1x 405x 405x 405x 405x 53x 59x 6x 6x 59x 47x 47x 405x 405x 405x 405x 186x 123x 123x 63x 63x 63x 63x 63x 186x 186x 44x 44x 19x 19x 186x 19x 19x 186x 186x 186x 405x 405x | 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 : ""; } } |