public void Change_Database_Setting_Properties()
        {
            string info1 = "DataProvider changed";
            string info2 = "DataConnectionString changed";
            string result = String.Empty;
            DatabaseSettings settings = new DatabaseSettings();
            settings.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName ==
                    ReflectionUtility.GetPropertyName(() => ((DatabaseSettings)s).DataProvider))
                {
                    result = info1;
                }
                else if(e.PropertyName ==
                    ReflectionUtility.GetPropertyName(() => ((DatabaseSettings)s).DataConnectionString))
                {
                    result = info2;
                }

            };

            settings.DataProvider = "Set Provider";
            Console.Out.WriteLine(settings.DataProvider);
            Assert.AreEqual(info1, result);

            settings.DataConnectionString = "Set Connection String";
            Console.Out.WriteLine(settings.DataConnectionString);
            Assert.AreEqual(info2, result);
        }
 protected DataProviderManagerBase(DatabaseSettings settings)
 {
     AspectF.Define.MustBeNonNull(settings).Do(() =>
     {
         this.Settings = settings;
     });
 }
        public virtual void SaveSettings(DatabaseSettings settings)
        {
            if (settings == null)
                throw new ArgumentNullException("settings");

            string filePath = MapToPhysicalPath(FilePath);
            if (!File.Exists(filePath))
            {
                using (File.Create(filePath))
                {
                    //we use 'using' to close the file after it's created
                }
            }

            var text = ToFormatedString(settings);
            File.WriteAllText(filePath, text);
        }
 public NoSqlDataProviderManager(DatabaseSettings settings)
     : base(settings)
 {
 }
        protected virtual string ToFormatedString(DatabaseSettings settings)
        {
            if (settings == null)
                return "";

            return string.Format("DataProvider: {0}{2}DataConnectionString: {1}{2}",
                                 settings.DataProvider,
                                 settings.DataConnectionString,
                                 Environment.NewLine
                );
        }
        /// <summary>
        /// Convert setting file to DatabaseSetting object
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        protected virtual DatabaseSettings ParseSettings(string text)
        {
            DatabaseSettings settings = new DatabaseSettings();
            if (String.IsNullOrEmpty(text))
                return settings;

            var items = new List<string>();
            using (var reader = new StringReader(text))
            {
                string str;
                while ((str = reader.ReadLine()) != null)
                    items.Add(str);
            }

            foreach (var item in items)
            {
                var keyPair = item.Split(Separator);
                if (keyPair.Count() == 0)
                    continue;
                if (keyPair.Count() != 2)
                    throw new CommonException("Database setting is not correct.");
                string key = keyPair[0];
                string value = keyPair[1];
                DatabaseEnum keyEnum;
                if (!Enum.TryParse(key, true, out keyEnum))
                    keyEnum = DatabaseEnum.Unknown;
                switch (keyEnum) // only get last data provider and data connection string
                {
                    case DatabaseEnum.DataProvider:
                        settings.DataProvider = value;
                        break;
                    case DatabaseEnum.DataConnectionString:
                        settings.DataConnectionString = value;
                        break;
                    default:
                        settings.UnknownItems.Add(key, value);
                        break;
                }
            }

            return settings;
        }