コード例 #1
0
        /// <summary>
        /// Gets the setting from the database or from the cache
        /// </summary>
        /// <param name="groupName">The setting group</param>
        /// <param name="name">The setting name</param>
        /// <param name="defaultValue">The default value if nothing can be found</param>
        /// <returns>The setting value as a string</returns>
        public string GetString(string groupName, string name, object defaultValue = null)
        {
            string key = string.Format("{0}.{1}", groupName, name);

            if (this._settingsCache.ContainsKey(key))
            {
                return(this._settingsCache[key]);
            }

            //defaultValue = defaultValue == null ? EmptyObject : defaultValue.ToString();
            string defaultReturnValue = defaultValue == null ? null : defaultValue.ToString();

            this.Logger.Debug("Reading setting value for " + name);

            //var defaultSetting = new OtaSetting { Value = defaultValue.ToString() };
            var defaultSetting = new OtaSetting {
                Value = defaultReturnValue
            };

            OtaSetting setting = AsyncHelper.RunSync(
                async() =>
                await this.GetOtaSetting(
                    groupName,
                    name,
                    defaultSetting));

            //string returnValue = setting.Id == default(Guid) ? defaultValue.ToString() : setting.Value;
            string returnValue = setting.Id == default(Guid) ? defaultReturnValue : setting.Value;

            // Lets cache our setting
            this._settingsCache.Add(key, returnValue);
            return(returnValue);
        }
コード例 #2
0
        /// <summary>
        /// Cache the given setting
        /// </summary>
        /// <param name="setting">The setting to cache</param>
        public void CacheSetting(OtaSetting setting)
        {
            string key = string.Format("{0}.{1}", setting.GroupName, setting.Name);

            if (this._settingsCache.ContainsKey(key))
            {
                this._settingsCache[key] = setting.Value;
                return;
            }

            this._settingsCache.Add(key, setting.Value);
        }
コード例 #3
0
        /// <summary>
        /// Write the setting to the database
        /// </summary>
        /// <param name="group">The setting group</param>
        /// <param name="name">The setting name</param>
        /// <param name="value">The setting value</param>
        /// <returns>A boolean task</returns>
        public async Task SetSettingsValue(string group, string name, object value)
        {
            string settingValue = value != null?value.ToString() : string.Empty;

            OtaSetting newSetting = await this.GetExistingSetting(name, group, settingValue);

            List <OtaSetting> settings = new List <OtaSetting> {
                newSetting
            };

            await this.SaveSettings(settings);

            this.CacheSetting(newSetting);
        }
コード例 #4
0
        /// <summary>
        /// Writes the setting into the database and updates if it exists
        /// </summary>
        /// <param name="name">The name of the setting</param>
        /// <param name="group">The group of the setting</param>
        /// <param name="value">The value of the setting</param>
        /// <returns>A boolean task</returns>
        private async Task <OtaSetting> GetExistingSetting(string name, string group, string value)
        {
            // if it is not yet in the database, save it a fresh else update the existing
            OtaSetting existing = await this.GetOtaSetting(group, name);

            if (existing == null)
            {
                return(new OtaSetting {
                    GroupName = group, Name = name, Value = value
                });
            }

            existing.Value    = value;
            existing.Modified = DateTime.Now;
            return(existing);
        }
コード例 #5
0
        /// <summary>
        /// Reads and returns a setting from the database
        /// </summary>
        /// <param name="groupName">The group name</param>
        /// <param name="name">The setting name</param>
        /// <param name="defaultValue">The default value to return if nothing cannot be found</param>
        /// <returns>The given setting</returns>
        private async Task <OtaSetting> GetOtaSetting(string groupName, string name, OtaSetting defaultValue = null)
        {
            CriteriaBuilder criteriaBuilder = new CriteriaBuilder();

            try
            {
                this.Logger.Debug("Reading setting for " + name);
                OtaSetting setting =
                    await
                    this.SettingsController.GetSingleRecord(
                        criteriaBuilder.Add("GroupName", groupName).Add("Name", name));

                return(setting.Id == default(Guid) ? defaultValue : setting);
            }
            catch (Exception exception)
            {
                this.Logger.Error(exception);
                throw;
            }
        }
コード例 #6
0
 /// <summary>
 /// Write the setting to the database
 /// </summary>
 /// <param name="setting">The setting</param>
 /// <returns>A boolean task</returns>
 public async Task SetSettingsValue(OtaSetting setting)
 {
     await this.SetSettingsValue(setting.GroupName, setting.Name, setting.Value);
 }