All files / src/objects data_definition.ts

77.36% Statements 41/53
75% Branches 6/8
62.5% Functions 5/8
77.36% Lines 41/53

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 541x 1x 1x 1x 1x 1x 2x 2x 2x 2x 1x 1x 2x 2x           2x 2x 1x 1x 2x 2x       2x 2x     2x 2x 2x 2x 2x 2x 2x 1x     1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x  
import {VoidType} from "../abap/types/basic";
import {AbstractType} from "../abap/types/basic/_abstract_type";
import {IRegistry} from "../_iregistry";
import {AbstractObject} from "./_abstract_object";
import {IParseResult} from "./_iobject";
 
export class DataDefinition extends AbstractObject {
  private sqlViewName: string | undefined = undefined;
 
  public getType(): string {
    return "DDLS";
  }
 
  public getAllowedNaming() {
    return {
      maxLength: 40,
      allowNamespace: true,
    };
  }
 
  public getSQLViewName(): string | undefined {
    return this.sqlViewName;
  }
 
  public getDescription(): string | undefined {
    // todo
    return undefined;
  }
 
  public parseType(_reg: IRegistry): AbstractType {
    return new VoidType("DDLS:todo");
  }
 
  public setDirty(): void {
    this.sqlViewName = undefined;
    super.setDirty();
  }
 
  public parse(): IParseResult {
    if (this.isDirty() === false) {
      return {updated: false, runtime: 0};
    }
 
    this.sqlViewName = undefined;
    const asddls = this.getFiles().find(f => f.getFilename().endsWith(".asddls"));
    const match = asddls?.getRaw().match(/@AbapCatalog\.sqlViewName: '(\w+)'/);
    if (match) {
      this.sqlViewName = match[1].toUpperCase();
    }
 
    return {updated: true, runtime: 0};
  }
}