Exemplo n.º 1
0
        ///// <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();
            }
        }
Exemplo n.º 2
0
        /// <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)
            {
            }
        }