TeamMentor.CoreLib.TM_Xml_Database_Load_And_FileCache.xmlDB_Load_GuidanceItems_and_Create_CacheFile C# (CSharp) Method

xmlDB_Load_GuidanceItems_and_Create_CacheFile() public static method

public static xmlDB_Load_GuidanceItems_and_Create_CacheFile ( this tmFileStorage ) : TM_FileStorage
tmFileStorage this
return TeamMentor.FileStorage.TM_FileStorage
        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;
        }