using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlServerCe; using Foo.DataAccessLayer.DataTypes; namespace Foo.DataAccessLayer { public enum UserSetting { ON_LAUNCH_CLOSEPREVIOUS_WORKSPACE, } public class dUserSettings { /// /// Quick Check if there is already a Setting Information available for this Table /// /// a Setting enum /// true if the DB has setting information for this setting internal bool DoesSettingHaveAnEntry(UserSetting setting) { object obj = null; lock (this) { string sql = "SELECT [SettingName] FROM UserSettings WHERE [SettingName] = @settingname"; SqlCeParameter[] sqlparams = new SqlCeParameter[] { new SqlCeParameter("@settingname", setting.ToString()) }; obj = DB.RunSQLCommandTextExecuteScalar(sql, sqlparams); } return (obj != null); } /// /// Retrieve Setting Value for the Setting as a string /// /// a Setting enum /// setting value string, or empty.string if not found public string GetSettingValueStr(UserSetting setting) { object obj = null; lock (this) { string sql = "SELECT [SettingValue] FROM UserSettings WHERE [SettingName] = @settingname"; SqlCeParameter[] sqlparams = new SqlCeParameter[] { new SqlCeParameter("@settingname", setting.ToString()) }; obj = DB.RunSQLCommandTextExecuteScalar(sql, sqlparams); if (obj != null) return obj.ToString(); } return String.Empty; } /// /// Set a Setting Value for the Setting as a string /// /// a Setting enum /// a string value to store for a setting /// true if successfully inserted or updated, false otherwise public bool SetSettingValueStr(UserSetting setting, string strSettingValue) { // Ensure Value Integrity if (String.IsNullOrEmpty(strSettingValue)) return false; lock (this) { // First Determine if we need to update or insert bool bUpdate = DoesSettingHaveAnEntry(setting); if (!bUpdate) // we need to insert { string sql = "INSERT INTO UserSettings ([SettingName],[SettingValue]) VALUES (@settingname,@settingvalue)"; SqlCeParameter[] sqlparams = new SqlCeParameter[] { new SqlCeParameter("@settingname", setting.ToString()), new SqlCeParameter("@settingvalue", strSettingValue), }; int nResult = DB.RunSQLCommandTextExecuteNonQuery(sql, sqlparams); return (nResult == 1); } else // we need to update { string sql2 = "UPDATE UserSettings SET [SettingValue]=@settingvalue WHERE [SettingName]=@settingname"; SqlCeParameter[] sqlparams2 = new SqlCeParameter[] { new SqlCeParameter("@settingname", setting.ToString()), new SqlCeParameter("@settingvalue", strSettingValue), }; int nResult2 = DB.RunSQLCommandTextExecuteNonQuery(sql2, sqlparams2); return (nResult2 == 1); } } } #region Helper Getter/Setters public bool GetSettingValueBool(UserSetting setting) { try { string strValue = GetSettingValueStr(setting); if(!String.IsNullOrEmpty(strValue)) { bool bRet = bool.Parse(strValue); return bRet; } } catch(Exception){ /* ignore */ } return false; } public int GetSettingValueInt(UserSetting setting) { try { string strValue = GetSettingValueStr(setting); if (!String.IsNullOrEmpty(strValue)) { int bRet = int.Parse(strValue); return bRet; } } catch (Exception) { /* ignore */ } return int.MinValue; } public DateTime GetSettingValueDateTime(UserSetting setting) { try { string strValue = GetSettingValueStr(setting); if (!String.IsNullOrEmpty(strValue)) { DateTime bRet = DateTime.Parse(strValue); return bRet; } } catch (Exception) { /* ignore */ } return DateTime.MinValue; } public double GetSettingValueDouble(UserSetting setting) { try { string strValue = GetSettingValueStr(setting); if (!String.IsNullOrEmpty(strValue)) { double bRet = double.Parse(strValue); return bRet; } } catch (Exception) { /* ignore */ } return double.MinValue; } public bool SetSettingValueBool(UserSetting setting, bool settingValue) { return SetSettingValueStr(setting, settingValue.ToString()); } public bool SetSettingValueInt(UserSetting setting, int settingValue) { return SetSettingValueStr(setting, settingValue.ToString()); } public bool SetSettingValueDateTime(UserSetting setting, DateTime settingValue) { return SetSettingValueStr(setting, settingValue.ToString()); } public bool SetSettingValueDouble(UserSetting setting, double settingValue) { return SetSettingValueStr(setting, settingValue.ToString()); } #endregion } }