IBM Doors DXL: Rekursiv durch alle Module eines Folders / Iterate recursive all formal modules of a folder

Problem

Es soll durch alle Module eines Ordners / Folders und deren Unterordner / Subfolders iteriert werden.
All modules of a folder in a project (not the project itself) shall be iterated:

Ansatz – Approach

Das Skript aus dem vorherigen Artikel „Iterate all modules“ wird um eine Rekursion erweitert
The script „Iterate all modules…“ will be extended with a recursive call.

Solution – Lösung

string startFolder="/Project/Folder/";
int moduleCount=0;

void forAllModulesInFolder(Folder f)
{
  Item itemRef;
  string shType;
  string sItemNameFull;
  string sItemName;
  Module moduleReference;

  for itemRef in f do
  {
    shType = type(itemRef);
    print shType "\t";

    sItemNameFull = fullName(itemRef);
    print sItemNameFull "\t";

    sItemName = name(itemRef);
    print sItemName "\n";

  if(shType=="Folder")
  {
    string selectedFolder = sItemNameFull;
    Folder f=folder selectedFolder;
    forAllModulesInFolder(f);
  }

  if(shType=="Formal")
  {
    moduleReference = read(sItemNameFull,false,true);
    filtering off;
    // do s.th. with the moduleReference
    close(moduleReference);
    moduleCount++;
  }
}

// Main-Method
void main(void)
{
  string selectedFolder = startFolder;
  Folder f=folder selectedFolder;
  forAllModulesInFolder(f);
  print "Affected Modules: " moduleCount "\n";
}

main();

Für das ganze Projekt siehe auch…
For the whole project also see…

IBM Doors DXL: Durch alle Module eines Projektes Module iterieren/laufen / Iterate all modules in a project

2 Gedanken zu „IBM Doors DXL: Rekursiv durch alle Module eines Folders / Iterate recursive all formal modules of a folder“

  1. Hallo Blörn,

    das Skript ist zwar schon alt, aber falls doch noch mal jemand anderes auf die Seite stößt, noch eine kleine Fehlerkorrektur:

    In der Funktion „forAllModulesInFolder“ fehlt eine abschließende Klammer für die „for“ Schleife oder den Test „if(shType==“Formal“)“, je nachdem wie Du es sehen willst. 😉

    Grüße,
    Matthias

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.