Esempio n. 1
0
        /// <summary> Checks that the settings file exists and generates an empty one if not. </summary>
        private void ValidateFileExistence()
        {
            if (!_settingsFile.Exists)
            {
                LogInfo(ECoreLogMessage.SettingsFileNotFound_CreatingNewOne.FormatFluently(_settingsFile.Name));

                GenerateSettingsFile();

                LogInfo(ECoreLogMessage.Created.FormatFluently(EWord.File));
                SettingsFileStatus = ESettingsFileStatus.NotFoundAndGenerated;
            }
            _settings.ReplaceBy(GetSettingsFromFile());
        }
Esempio n. 2
0
        /// <summary> Creates a new settings manager. </summary>
        /// <param name="settingsFileName"> The name of the settings file to attach to this manager. </param>
        /// <param name="fileManager"> An instance of a file manager. </param>
        /// <param name="requiredSettingNames"> Names of required settings. </param>
        /// <param name="loggers"> Instances of loggers. </param>
        public SettingsManager(IFileManager fileManager, string settingsFileName, IEnumerable <string> requiredSettingNames, params IConfiguredLogger[] loggers)
            : base(ECoreLogCategory.SettingsManager, loggers)
        {
            _fileManager          = fileManager;
            _requiredSettingNames = requiredSettingNames;
            _settingsFile         = new FileInfo(settingsFileName);
            _settings             = new Dictionary <string, string>();

            SettingsFileStatus = ESettingsFileStatus.Pending;
            Initialize();

            LogDebug(ECoreLogMessage.Created.FormatFluently(ECoreLogCategory.SettingsManager));
        }
Esempio n. 3
0
        /// <summary>
        /// Checks the settings file for required settings.
        /// If not all required settings are present, a backup is made, valid settings are moved over, and an automated resolution is attempted.
        /// In an event of only one required setting missing with one setting in the file unrecognized, the two settings are considered related and the situation is resolved.
        /// Otherwise direct intervention is necessary to move unrecognized settings over to the newly generated file.
        /// </summary>
        private void ValidateFileSettings()
        {
            var missingSettingNames      = _requiredSettingNames.Except(_settings.Keys);
            var recognizedSettingNames   = _requiredSettingNames.Intersect(_settings.Keys);
            var unrecognizedSettingNames = _settings.Keys.Except(recognizedSettingNames);

            if (missingSettingNames.Any())
            {
                _fileManager.BackUpFile(_settingsFile);
                GenerateSettingsFile();

                foreach (var recognizedSettingName in recognizedSettingNames)
                {
                    Save(recognizedSettingName, _settings[recognizedSettingName]);
                }

                if (missingSettingNames.HasSingle() && unrecognizedSettingNames.HasSingle()) // It is assumed that a setting was renamed.
                {
                    var missingSettingName      = missingSettingNames.First();
                    var unrecognizedSettingName = unrecognizedSettingNames.First();
                    var settingValue            = _settings[unrecognizedSettingName];

                    Save(missingSettingName, settingValue);

                    _settings.Add(missingSettingName, settingValue);
                    _settings.Remove(unrecognizedSettingName);

                    SettingsFileStatus = ESettingsFileStatus.FoundAndAutomaticallyUpdated;
                }
                else
                {
                    SettingsFileStatus = ESettingsFileStatus.FoundAndNeedsManualUpdate;

                    throw new SettingsFileRegeneratedException();
                }
            }
            else
            {
                SettingsFileStatus = ESettingsFileStatus.FoundAndUpToDate;
            }
        }