public static TM_FileStorage xmlDB_Load_GuidanceItems_and_Create_CacheFile(this TM_FileStorage tmFileStorage)
{
var tmXmlDatabase = tmFileStorage.tmXmlDatabase();
if (tmFileStorage.isNull() || tmXmlDatabase.isNull())
return tmFileStorage;
var pathXmlLibraries = tmFileStorage.Path_XmlLibraries;
if (pathXmlLibraries.notNull() && pathXmlLibraries.notNull())
lock (pathXmlLibraries)
{
"[TM_FileStorage] in xmlDB_Load_GuidanceItems, creating cache file".debug();
var o2Timer = new O2Timer("[TM_FileStorage] loaded GuidanceItems from disk").start();
//Load GuidanceItem from the disk
foreach (var item in tmFileStorage.GuidanceExplorers_Paths)
{
var guidanceExplorer = item.Key;
var pathToLibraryGuidanceItems = item.Value.parentFolder();
var libraryId = guidanceExplorer.library.name.guid();
"libraryId: {0} : {1}".info(libraryId, pathToLibraryGuidanceItems);
var filesToLoad = pathToLibraryGuidanceItems.files(true, "*.xml");
tmXmlDatabase.xmlDB_Load_GuidanceItemsV3(libraryId, filesToLoad);
}
//save it to the local cache file (reduces load time from 8s to 0.5s)
tmFileStorage.save_GuidanceItemsToCache();
tmXmlDatabase.ensureFoldersAndViewsIdsAreUnique();
tmXmlDatabase.removeMissingGuidanceItemsIdsFromViews();
o2Timer.stop();
}
return tmFileStorage;
}