Beispiel #1
0
        /// <summary>
        /// Class front-end to ApplySetting. A null value from command-line or settings indicates no value
        /// was given.
        /// </summary>
        /// <typeparam name="TSetting"></typeparam>
        /// <param name="fromCmd"></param>
        /// <param name="fromSettings"></param>
        /// <param name="validate"></param>
        /// <param name="settingName"></param>
        /// <param name="apply"></param>
        /// <param name="defaultValue"></param>
        /// <param name="dataSensitivity"></param>
        public static void ApplySettingClass <TSetting>(TSetting fromCmd, TSetting fromSettings,
                                                        Func <TSetting, string> validate, string settingName, Action <TSetting> apply,
                                                        TSetting defaultValue, Dfo.Controlling.SensitiveData dataSensitivity)

            where TSetting : class
        {
            ApplySetting <TSetting>(fromCmd != null, fromCmd, fromSettings != null, fromSettings, validate,
                                    settingName, apply, defaultValue, dataSensitivity);
        }
Beispiel #2
0
        /// <summary>
        /// Struct front-end to ApplySetting. A null value from command-line or settings indicates no value
        /// was given.
        /// </summary>
        /// <typeparam name="TSetting"></typeparam>
        /// <param name="fromCmd"></param>
        /// <param name="fromSettings"></param>
        /// <param name="validate"></param>
        /// <param name="settingName"></param>
        /// <param name="apply"></param>
        /// <param name="defaultValue"></param>
        /// <param name="suppressValueDisplay"></param>
        public static void ApplySettingStruct <TSetting>(TSetting?fromCmd, TSetting?fromSettings,
                                                         Func <TSetting, string> validate, string settingName, Action <TSetting> apply,
                                                         TSetting defaultValue, Dfo.Controlling.SensitiveData dataSensitivity)

            where TSetting : struct
        {
            ApplySetting <TSetting>(fromCmd.HasValue, fromCmd.HasValue ? fromCmd.Value : default(TSetting),
                                    fromSettings.HasValue, fromSettings.HasValue ? fromSettings.Value : default(TSetting),
                                    validate, settingName, apply, defaultValue, dataSensitivity);
        }
Beispiel #3
0
        /// <summary>
        /// Applies a setting given the command-line value if present, saved setting if present, default,
        /// and a delegate that does the actual applying given the value to apply.
        /// </summary>
        /// <typeparam name="TSetting">Type of the setting.</typeparam>
        /// <param name="cmdHas">Whether a value was specified on the command-line.</param>
        /// <param name="fromCmd">The value from the command-line if one was specified. Otherwise
        /// this parameter is ignored.</param>
        /// <param name="settingsHas">Whether a value was specified in the saved settings.</param>
        /// <param name="fromSettings">The value from the saved settings if one was specified. Otherwise
        /// this parameter is ignored.</param>
        /// <param name="validate">A validation function that returns a non-null error message string if
        /// validation fails or returns null if validation succeeds.</param>
        /// <param name="settingName">The name of the setting (used in logging).</param>
        /// <param name="apply">A delegate that does the actual applying given a setting value.</param>
        /// <param name="defaultValue">A default setting value to use if command-line and saved settings do
        /// not provide a valid value.</param>
        /// <param name="dataSensitivity">The sensitivity level of the setting.</param>
        public static void ApplySetting <TSetting>(bool cmdHas, TSetting fromCmd, bool settingsHas, TSetting fromSettings, Func <TSetting, string> validate, string settingName, Action <TSetting> apply, TSetting defaultValue, Dfo.Controlling.SensitiveData dataSensitivity)
        {
            Logging.Log.DebugFormat("Getting value for setting '{0}'.", settingName);
            TSetting settingValue = default(TSetting);
            bool     valueFound   = false;

            if (!valueFound && cmdHas)
            {
                Logging.Log.DebugFormat("Command-line value found.");

                string error = null;
                if (validate != null)
                {
                    error = validate(fromCmd);
                }

                string valueString = string.Format("{0}", fromCmd).HideSensitiveData(dataSensitivity);
                if (error == null)
                {
                    settingValue = fromCmd;
                    Logging.Log.DebugFormat("{0} = {1} (from command-line)", settingName, valueString);
                    valueFound = true;
                }
                else
                {
                    Logging.Log.ErrorFormat("Error in command-line value for {0} = {1}. {2} Trying settings file.", settingName, valueString, error);
                }
            }

            if (!valueFound && settingsHas)
            {
                Logging.Log.DebugFormat("Settings file value found.");

                string error = null;
                if (validate != null)
                {
                    error = validate(fromSettings);
                }

                string valueString = string.Format("{0}", fromSettings).HideSensitiveData(dataSensitivity);
                if (error == null)
                {
                    Logging.Log.DebugFormat("{0} = {1} (from settings file)", settingName, valueString);
                    settingValue = fromSettings;
                    valueFound   = true;
                }
                else
                {
                    Logging.Log.ErrorFormat("Error in settings file value for {0} = {1}. {2} Using default.", settingName, valueString, error);
                }
            }

            if (!valueFound)
            {
                string valueString = string.Format("{0}", defaultValue).HideSensitiveData(dataSensitivity);
                settingValue = defaultValue;
                valueFound   = true;
                Logging.Log.DebugFormat("{0} = {1} (default)", settingName, valueString);
            }

            apply(settingValue);
        }
Beispiel #4
0
 internal static string HideSensitiveData(this string dataString, Dfo.Controlling.SensitiveData kindOfData)
 {
     return(Dfo.Controlling.DfoControllingLogHelpers.HideSensitiveData(dataString, kindOfData,
                                                                       Logging.SensitiveDataToLog));
 }