Add Modules to Baseline Set Definition

This dialog provides a simple mechanism to add all the formal modules found below a selected folder to an existing baseline set definition.


// Add module to Baseline Set Definition

/*
 Add all modules below the current folder to a baseline set definition.
*/

pragma runLim, 0

DB dbMain = null
DBE dbeParentFolder = null
DBE dbeSourceFolder = null
DBE dbeBsdList = null
DBE dbeResults = null

Buffer resBuf = create

string dummy[] = {}
 
int modulesAdded = 0
 
/******************************************************************************
 findBsd
******************************************************************************/
BaselineSetDefinition findBsd(Folder f, string bsdName)
{
 BaselineSetDefinition bsd = null
 
 for bsd in f do
 {
  if (name(bsd) == bsdName)
  {
   return(bsd)
  }
 }

 return(null)
}
/******************************************************************************
 addModulesToBsd
******************************************************************************/
void addModulesToBsd(Folder f, BaselineSetDefinition bsd)
{
 string res = ""
 Item i 
 
 for i in f do
 {
  if (isDeleted(i))
  {
   continue
  }
  
  if (type(i) == "Formal")
  {
   res = addModule(module(fullName(i)), bsd)
   
   if (res "" == "")
   {
    modulesAdded++
   }
   else
   {
    resBuf += res ": " fullName(i) "\n"
   }
  }
  else if (type(i) == "Folder" || type(i) == "Project")
  {
   addModulesToBsd(folder(fullName(i)), bsd)
  }
 }
}
/******************************************************************************
 addAllModulesToBaselineSetDefinition
******************************************************************************/
void addAllModulesToBaselineSetDefinition(string fName, string bsdName, string srcFolder)
{
 Folder f = null
 string res = ""
 BaselineSetDefinition bsd = null
 
 f = folder(fName)
 
 if (null f)
 {
  resBuf += "Null folder: " fName
  return
 }
 
 bsd = findBsd(f, bsdName)
 
 if (null bsd)
 {
  resBuf += "Could not find BSD \"" bsdName "\" in folder " fName
  return
 }
 
 res = lock(bsd)
 
 if (res "" != "")
 {
  resBuf += res
 }
 
 addModulesToBsd(folder(srcFolder), bsd)

 res = save(bsd)
 
 if (res "" != "")
 {
  resBuf += res
 }
 
 res = unlock(bsd)
 
 if (res "" != "")
 {
  resBuf += res
 }
}
/******************************************************************************
 refreshBsdList
******************************************************************************/
void refreshBsdList(string fName)
{
 BaselineSetDefinition bsd = null
 int index = 0
 
 empty(dbeBsdList)
 
 for bsd in folder(fName) do
 {
  insert(dbeBsdList, index, name(bsd))
  index++
 }
 
 set(dbeBsdList, index-1)
}
/******************************************************************************
 doBrowseParent
******************************************************************************/
void doBrowseParent(DBE dbe)
{
    string szFolderName = fnMiniExplorer(dbMain, (current Folder), MINI_EXP_FP, "Select Folder", "Select Folder")
 
  if (szFolderName != "" && folder(szFolderName))
    {
  set(dbeParentFolder, szFolderName)
  
  refreshBsdList(szFolderName)
 }
}

/******************************************************************************
 doBrowseSource
******************************************************************************/
void doBrowseSource(DBE dbe)
{
    string szFolderName = fnMiniExplorer(dbMain, (current Folder), MINI_EXP_FP, "Select Folder", "Select Folder")
 
  if (szFolderName != "" && folder(szFolderName))
    {
  set(dbeSourceFolder, szFolderName)
 }
}

/******************************************************************************
 doApply
******************************************************************************/
void doApply(DB db)
{
 string parentFolderName = get(dbeParentFolder)
 string sourceFolderName = get(dbeSourceFolder)
 string bsdName = get(dbeBsdList)
 
 if (!confirm("You are about to add all formal modules below\n" //-
                sourceFolderName "\n" //-
      "to Baseline Set Definition \"" bsdName "\".\n\n" //-
                   "Are you sure you want to continue?"))
 {
  return
 }
 
 addAllModulesToBaselineSetDefinition(parentFolderName, bsdName, sourceFolderName)
 
 if (stringOf(resBuf) "" == "")
 {
  set(dbeResults, modulesAdded " modules were added to the BSD.\nNo errors.")
 }
 else
 {
  set(dbeResults, modulesAdded " modules were added to the BSD.\nThere were errors:\n" stringOf(resBuf))
 }
}
/******************************************************************************
 MAIN
******************************************************************************/
void buildDialog()
{
 dbMain = natsDialog("Add Modules to Baseline Set Definition", styleCentered)
 
 label(dbMain, "This utility will add all formal modules below the selected folder to the baseline set definition.\n")
 
 dbeParentFolder = field(dbMain,  "Folder containing the BSD:", fullName(current Project), 50, true)
 beside dbMain
 button(dbMain, "Browse ...", doBrowseParent, styleStandardSize)
 left dbMain
 
 dbeBsdList = choice(dbMain, "      Baseline Set Definition:", dummy, 0, 30, false)
 
 label(dbMain, " ")
 
 dbeSourceFolder = field(dbMain,  "    Add modules from folder:", fullName(current Folder), 50, true)
 beside dbMain
 button(dbMain, "Browse ...", doBrowseSource, styleStandardSize)
 left dbMain
 
 dbeResults = text(dbMain, "", "", 300, 50, false)
 
 apply(dbMain, doApply)
 
 realize(dbMain)
 
 refreshBsdList(fullName(current Project))

 block(dbMain)
}

/******************************************************************************
 MAIN
******************************************************************************/
buildDialog()