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 46x 46x 46x 46x 188x 188x 46x 46x 46x 46x 6x 6x 6x 6x 6x 46x 46x 11x 11x 11x 46x 46x 51x 51x 51x 46x 46x 34x 34x 34x 34x 46x 46x 11x 11x 11x 14x 10x 10x 14x 1x 1x 46x 46x 46x 46x 56x 28x 28x 28x 28x 28x 28x 28x 28x 28x 28x 56x 28x 56x 56x 56x 56x 56x 3x 3x 56x 33x 33x 25x 46x 46x | 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));
}
}
} |