///// <summary> ///// Calculate total taxa count by red list category. ///// </summary> ///// <param name="analysisManager">Analysis manager.</param> ///// <param name="redListTaxonCategories"></param> ///// <returns>Red listed taxa count.</returns> //public static long GetTotalRedListTaxaCount(this IAnalysisManager analysisManager, List<string> redListTaxonCategories) //{ // var criteria = new AnalysisSearchCriteria(); // if (redListTaxonCategories.IsNotNull() && redListTaxonCategories.Count > 0) // { // criteria.TaxonCategories = redListTaxonCategories; // } // criteria.RedListCategories = new List<int>(); // var categories = RedListedHelper.GetRedListCategoriesDdToNt(); // foreach (var cat in categories) // { // criteria.RedListCategories.Add((int)cat); // } // var result = GetTaxonIds(analysisManager, criteria); // if (result.IsNotEmpty()) // { // return result.Count; // } // return 0; //} /// <summary> /// Init analysis cache. /// </summary> /// <param name="analysisManager">Analysis manager.</param> /// <param name="userContext">The user context.</param> public static void InitAnalysisCache(this IAnalysisManager analysisManager, IUserContext userContext) { mCache = null; string cacheFileName = GetCacheFileName(); try { // Try to read from cached file. if (File.Exists(cacheFileName)) { using (FileStream stream = File.Open( cacheFileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { var formatter = new BinaryFormatter(); mCache = (AnalysisCache)formatter.Deserialize(stream); stream.Close(); if (!mCache.IsOk()) { mCache = null; } } } } // ReSharper disable once EmptyGeneralCatchClause catch (Exception) { } if (mCache.IsNull()) { //Logger.Debug("Invalid definition of AnalysisCache, start updating..."); UpdateCache(); //Logger.Debug("AnalysisCache updated..."); } if (!Configuration.Debug) { // Start cache update thread. var thread = new Thread(StartCacheUpdate); thread.Start(); } }
/// <summary> /// Update analysis cache. /// </summary> private static void UpdateCache() { var cache = new AnalysisCache(); cache.Init(CoreData.UserManager.GetApplicationContext()); mCache = cache; try { // Save cache to file. string cacheFileName = GetCacheFileName(); if (File.Exists(cacheFileName)) { // ReSharper disable once AssignNullToNotNullAttribute File.Delete(cacheFileName); } FileSystemManager.EnsureFolderExists(cacheFileName); using (FileStream stream = File.Open( cacheFileName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)) { var formatter = new BinaryFormatter(); formatter.Serialize(stream, mCache); stream.Flush(true); stream.Close(); } Logger.WriteMessage("Analysis redlist cache updated"); } // ReSharper disable once EmptyGeneralCatchClause catch (Exception) { } }