Exemplo n.º 1
0
        /// <summary>
        /// 得到缺省的设置
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public static UserRecentData GetDefaultSettings(string userID)
        {
            userID.CheckStringIsNullOrEmpty("userID");

            UserRecentData settings = new UserRecentData();

            settings.UserID = userID;
            settings.InitFromConfiguration();

            return(settings);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 载入用户的最近数据
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public static UserRecentData LoadSettings(string userID)
        {
            UserRecentData settings = GetDefaultSettings(userID);

            UserRecentData settingsFromDB = LoadFromDB(userID);

            if (settingsFromDB != null)
            {
                settings.ImportProperties(settingsFromDB);
            }

            return(settings);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 导入别的UserSettings的属性值,如果类别或属性名称不存在,则忽略
        /// </summary>
        /// <param name="srcSettings"></param>
        private void ImportProperties(UserRecentData srcSettings)
        {
            foreach (UserRecentDataCategory category in this.Categories)
            {
                if (srcSettings.Categories.ContainsKey(category.Name))
                {
                    UserRecentDataCategory srcCategory = srcSettings.Categories[category.Name];

                    if (srcCategory != null)
                    {
                        category.ImportValues(srcCategory);
                    }
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 根据用户ID获取指定的配置
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public static UserRecentData GetSettings(string userID)
        {
            userID.CheckStringIsNullOrEmpty("userID");

            UserRecentData result = UserRecentDataCache.Instance.GetOrAddNewValue(userID, (cache, key) =>
            {
                UserRecentData settings = LoadSettings(userID);

                MixedDependency mixedDependency = new MixedDependency(
                    new UdpNotifierCacheDependency(),
                    new UserRecentDataCacheItemDependency(),
                    new MemoryMappedFileNotifierCacheDependency());

                cache.Add(key, settings, mixedDependency);

                return(settings);
            });

            return(result);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 从数据库中加载
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        private static UserRecentData LoadFromDB(string userID)
        {
            string sql = string.Format("SELECT CATEGORY,DATA FROM USER_RECENT_DATA WHERE USER_ID = {0}",
                                       TSqlBuilder.Instance.CheckQuotationMark(userID, true));

            UserRecentData result = new UserRecentData()
            {
                UserID = userID
            };

            result.InitFromConfiguration();

            using (DbContext dbi = DbContext.GetContext(ConnectionDefine.UserRelativeInfoConnectionName))
            {
                Database db = DatabaseFactory.Create(dbi);

                using (var dr = db.ExecuteReader(System.Data.CommandType.Text, sql))
                {
                    while (dr.Read())
                    {
                        var catDataString = dr.GetString(1);

                        if (catDataString != null)
                        {
                            XElementFormatter formatter = new XElementFormatter();

                            formatter.OutputShortType = false;

                            XElement root = XElement.Parse(catDataString);

                            var loadedCatData = (UserRecentDataCategory)formatter.Deserialize(root);

                            result.Categories[(string)dr.GetString(0)].ImportValues(loadedCatData);
                        }
                    }
                }
            }

            return(result);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 导入别的UserSettings的属性值,如果类别或属性名称不存在,则忽略
        /// </summary>
        /// <param name="srcSettings"></param>
        private void ImportProperties(UserRecentData srcSettings)
        {
            foreach (UserRecentDataCategory category in this.Categories)
            {
                if (srcSettings.Categories.ContainsKey(category.Name))
                {
                    UserRecentDataCategory srcCategory = srcSettings.Categories[category.Name];

                    if (srcCategory != null)
                        category.ImportValues(srcCategory);
                }
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// 从数据库中加载
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        private static UserRecentData LoadFromDB(string userID)
        {
            string sql = string.Format("SELECT CATEGORY,DATA FROM USER_RECENT_DATA WHERE USER_ID = {0}",
                TSqlBuilder.Instance.CheckQuotationMark(userID, true));

            UserRecentData result = new UserRecentData() { UserID = userID };
            result.InitFromConfiguration();

            using (DbContext dbi = DbContext.GetContext(ConnectionDefine.UserRelativeInfoConnectionName))
            {
                Database db = DatabaseFactory.Create(dbi);

                using (var dr = db.ExecuteReader(System.Data.CommandType.Text, sql))
                {
                    while (dr.Read())
                    {
                        var catDataString = dr.GetString(1);

                        if (catDataString != null)
                        {
                            XElementFormatter formatter = new XElementFormatter();

                            formatter.OutputShortType = false;

                            XElement root = XElement.Parse(catDataString);

                            var loadedCatData = (UserRecentDataCategory)formatter.Deserialize(root);

                            result.Categories[(string)dr.GetString(0)].ImportValues(loadedCatData);
                        }
                    }
                }
            }

            return result;
        }
Exemplo n.º 8
0
        /// <summary>
        /// 得到缺省的设置
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public static UserRecentData GetDefaultSettings(string userID)
        {
            userID.CheckStringIsNullOrEmpty("userID");

            UserRecentData settings = new UserRecentData();

            settings.UserID = userID;
            settings.InitFromConfiguration();

            return settings;
        }