AbstractArgument.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Text;
  3. using Quadarax.Foundation.Core.QConsole.Value;
  4. namespace Quadarax.Foundation.Core.QConsole.Argument
  5. {
  6. public abstract class AbstractArgument
  7. {
  8. #region *** Properties ***
  9. /// <summary>
  10. /// Defines access code to argument
  11. /// <example>
  12. /// c, a, file, path, ...
  13. /// </example>
  14. /// </summary>
  15. public string Code { get; }
  16. /// <summary>
  17. /// Defines name of value in short displaying form
  18. /// <example>
  19. /// file_name, name_of_database, number, ...
  20. /// </example>
  21. /// </summary>
  22. public string Hint { get; }
  23. /// <summary>
  24. /// Full description for argument
  25. /// </summary>
  26. public string Description { get; }
  27. /// <summary>
  28. /// Defines if argument is mandatory. If True, then if argument is not specified, then error occures.
  29. /// </summary>
  30. public bool IsMandatory { get; }
  31. /// <summary>
  32. /// Current value of argument
  33. /// </summary>
  34. public AbstractValue Value { get; }
  35. /// <summary>
  36. /// Default value of argument, uses if argument is not specified.
  37. /// </summary>
  38. public AbstractValue DefaultValue { get; }
  39. public bool WasUsed { get; private set; }
  40. #endregion
  41. #region *** Constructors ***
  42. #endregion
  43. #region *** Public operations ***
  44. public AbstractArgument(string code, string description, string hint, TypeValuesEnum valueType, string defaultValue, bool isMandatory)
  45. {
  46. if (string.IsNullOrEmpty(code))
  47. throw new ArgumentNullException();
  48. Code = code;
  49. Description = description;
  50. Hint = hint;
  51. IsMandatory = isMandatory;
  52. Value = AbstractValue.Create(valueType);
  53. DefaultValue = AbstractValue.Create(valueType);
  54. DefaultValue.Set(defaultValue);
  55. }
  56. #endregion
  57. public void SetValueAsDefault()
  58. {
  59. if (DefaultValue.HasValue)
  60. Value.Set(DefaultValue.Get());
  61. }
  62. public void Hit()
  63. {
  64. WasUsed = true;
  65. }
  66. public override string ToString()
  67. {
  68. var sb = new StringBuilder();
  69. sb.Append("[").Append(Code).Append("] ").Append(Hint);
  70. return sb.ToString();
  71. }
  72. }
  73. }