/// <summary>
        /// Parse settings
        /// </summary>
        /// <param name="text">Text of settings file</param>
        /// <returns>Parsed data settings</returns>
        protected virtual DataSettings ParseSettings(string text)
        {
            var shellSettings = new DataSettings();

            if (String.IsNullOrEmpty(text))
            {
                return(shellSettings);
            }

            var settings = new List <string>();

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

            foreach (var setting in settings)
            {
                var separatorIndex = setting.IndexOf(separator);
                if (separatorIndex == -1)
                {
                    continue;
                }
                string key   = setting.Substring(0, separatorIndex).Trim();
                string value = setting.Substring(separatorIndex + 1).Trim();

                switch (key)
                {
                case "DataProvider":
                    shellSettings.DataProvider = value;
                    break;

                case "DataConnectionString":
                    shellSettings.DataConnectionString = value;
                    break;

                default:
                    shellSettings.RawDataSettings.Add(key, value);
                    break;
                }
            }

            return(shellSettings);
        }
        /// <summary>
        /// Save settings to a file
        /// </summary>
        /// <param name="settings"></param>
        public virtual void SaveSettings(DataSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            string filePath = Path.Combine(MapPath("~/App_Data/"), filename);

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

            var text = ComposeSettings(settings);

            File.WriteAllText(filePath, text);
        }
        /// <summary>
        /// Load settings
        /// </summary>
        public virtual DataSettings LoadSettings(string filePath = null, bool reloadSettings = false)
        {
            if (!reloadSettings && _dataSettings != null)
            {
                return(_dataSettings);
            }

            if (string.IsNullOrEmpty(filePath))
            {
                filePath = Path.Combine(CommonHelper.MapPath("~/App_Data/"), filename);
            }

            if (!File.Exists(filePath))
            {
                return(new DataSettings());
            }

            var text = File.ReadAllText(filePath);

            _dataSettings = ParseSettings(text);
            return(_dataSettings);
        }
 public MongoDBDataProviderManager(DataSettings settings) : base(settings)
 {
 }