public static TM_Xml_Database ensureFoldersAndViewsIdsAreUnique(this TM_Xml_Database tmDatabase, bool verbose = false)
{
var conflictsDetected = 0;
//"[TM_Xml_Database] in ensureFoldersAndViewsIdsAreUnique".info();
var mappedItems = new List<string>();
foreach(var view in tmDatabase.xmlDB_Views())
{
if(mappedItems.contains(view.id))
{
conflictsDetected++;
if (verbose)
"[TM_Xml_Database][ensureFoldersAndViewsIdsAreUnique] there was repeated viewId for view {0}: {1}".error(view.caption, view.id);
view.id = Guid.NewGuid().str();
if (verbose)
"[TM_Xml_Database][ensureFoldersAndViewsIdsAreUnique] new Guid assigned to view {0}: {1}".debug(view.caption, view.id);
}
mappedItems.Add(view.id);
}
foreach(var folder in tmDatabase.xmlDB_Folders())
{
if(mappedItems.contains(folder.folderId))
{
if (verbose)
"[TM_Xml_Database][ensureFoldersAndViewsIdsAreUnique] there was repeated folderId for folder {0}: {1}".error(folder.caption, folder.folderId);
folder.folderId = Guid.NewGuid().str();
if (verbose)
"[TM_Xml_Database][ensureFoldersAndViewsIdsAreUnique] new Guid assigned to view {0}: {1}".debug(folder.caption, folder.folderId);
conflictsDetected++;
}
mappedItems.Add(folder.folderId);
}
if (conflictsDetected > 0)
{
"[TM_Xml_Database][ensureFoldersAndViewsIdsAreUnique] There were {0} fixes made: {0}".info(conflictsDetected);
tmDatabase.xmlDB_Save_GuidanceExplorers();
}
return tmDatabase;
}