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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 47x 47x 47x 47x 203x 203x 47x 47x 47x 47x 6x 6x 6x 6x 6x 47x 47x 12x 12x 12x 47x 47x 52x 52x 52x 47x 47x 35x 35x 35x 35x 47x 47x 11x 11x 11x 14x 10x 10x 14x 1x 1x 47x 47x 47x 47x 58x 29x 29x 29x 29x 29x 29x 29x 29x 29x 29x 58x 29x 58x 58x 58x 58x 58x 3x 3x 58x 34x 34x 26x 47x 47x | import {AbstractObject} from "./_abstract_object";
import {Message} from "../abap/types/message";
import {xmlToArray, unescape} from "../xml_utils";
export type parsedMessageClass = {
topName: string | undefined,
description: string | undefined,
parsedMessages: Message[] | undefined
};
export class MessageClass extends AbstractObject {
private xml: parsedMessageClass | undefined = undefined;
public getType(): string {
return "MSAG";
}
public getDescription(): string | undefined {
this.parseXML();
return this.xml?.description;
}
public getAllowedNaming() {
return {
maxLength: 20,
allowNamespace: true,
};
}
public getParsed(): parsedMessageClass | undefined {
this.parseXML();
return this.xml;
}
public setDirty(): void {
this.xml = undefined;
super.setDirty();
}
public getMessages(): readonly Message[] {
this.parseXML();
const msg = this.xml?.parsedMessages;
return msg ? msg : [];
}
public getByNumber(num: string): Message | undefined {
this.parseXML();
// todo, optimize performance,
for (const message of this.getMessages()) {
if (message.getNumber() === num) {
return message;
}
}
return undefined;
}
/////////////////////////////////
private parseXML() {
if (this.xml !== undefined) {
return;
}
this.xml = {
topName: undefined,
description: undefined,
parsedMessages: [],
};
const parsed = super.parseRaw2();
if (parsed === undefined) {
return;
}
this.xml.topName = parsed?.abapGit?.["asx:abap"]["asx:values"]?.T100A?.ARBGB;
this.xml.description = parsed?.abapGit?.["asx:abap"]["asx:values"]?.T100A?.STEXT;
const t100 = parsed?.abapGit?.["asx:abap"]["asx:values"]?.T100;
if (t100 === undefined) {
return;
}
for (const msg of xmlToArray(t100.T100)) {
this.xml!.parsedMessages!.push(new Message(msg.MSGNR, unescape(msg.TEXT), msg.ARBGB));
}
}
} |