All files / src/objects interface.ts

95.4% Statements 83/87
69.23% Branches 18/26
100% Functions 12/12
95.4% Lines 83/87

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 871x 1x 1x 1x 1x 1x 88x 88x 88x 88x 88x 1454x 1454x 88x 88x 109x 109x 88x 88x 56x 56x     56x 56x 88x 88x 375x 375x 88x 88x 47x 47x 88x 88x 47x 47x 88x 88x 27x 27x 27x 27x 27x 88x 88x 127x 127x 127x 127x 88x 88x 5x 5x 5x 88x 88x 71x 71x 71x 88x 88x 88x 88x 76x 52x 52x 24x 24x 24x 24x 24x 76x 18x 18x 6x 6x 76x     76x 6x 6x 6x 76x 88x 88x
import {ABAPObject} from "./_abap_object";
import {IInterfaceDefinition} from "../abap/types/_interface_definition";
import {ABAPFile} from "../abap/abap_file";
import {InfoInterfaceDefinition} from "../abap/4_file_information/_abap_file_information";
import {Identifier} from "../abap/4_file_information/_identifier";
 
export class Interface extends ABAPObject {
  private def: IInterfaceDefinition | undefined = undefined;
  private parsedXML: {name?: string, description?: string} | undefined = undefined;
 
  public getType(): string {
    return "INTF";
  }
 
  public setDefinition(def: IInterfaceDefinition | undefined): void {
    this.def = def;
  }
 
  public getSequencedFiles(): readonly ABAPFile[] {
    const main = this.getMainABAPFile();
    if (main === undefined) {
      return [];
    }
    return [main];
  }
 
  public getDefinition(): IInterfaceDefinition | undefined {
    return this.def;
  }
 
  public getInterface(): InfoInterfaceDefinition | undefined {
    return this.getMainABAPFile()?.getInfo().getInterfaceDefinitionByName(this.getName());
  }
 
  public getIdentifier(): Identifier | undefined {
    return this.getInterface()?.identifier;
  }
 
  public getAllowedNaming() {
    return {
      maxLength: 30,
      allowNamespace: true,
    };
  }
 
  public setDirty(): void {
    this.def = undefined;
    this.parsedXML = undefined;
    super.setDirty();
  }
 
  public getNameFromXML(): string | undefined {
    this.parseXML();
    return this.parsedXML?.name;
  }
 
  public getDescription(): string | undefined {
    this.parseXML();
    return this.parsedXML?.description;
  }
 
/////////////////////////
 
  private parseXML() {
    if (this.parsedXML !== undefined) {
      return;
    }
 
    this.parsedXML = {};
 
    const parsed = super.parseRaw2();
    if (parsed === undefined
        || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
      return;
    }
 
    const vseo = parsed.abapGit["asx:abap"]["asx:values"].VSEOINTERF;
    if (vseo === undefined) {
      this.parsedXML.description = "";
      this.parsedXML.name = "";
    } else {
      this.parsedXML.description = vseo.DESCRIPT ? vseo.DESCRIPT : "";
      this.parsedXML.name = vseo.CLSNAME ? vseo.CLSNAME : "";
    }
  }
 
}