Bläddra i källkod

update packages in qdr.fnd.qconsole, cleanup code

Dalibor Votruba 2 år sedan
förälder
incheckning
be0533b411

+ 1 - 1
qdr.fnd.core.qconsole/Argument/FlagArgument.cs

@@ -11,7 +11,7 @@ namespace Quadarax.Foundation.Core.QConsole.Argument
 
         public void Set()
         {
-            Value.Set(!(bool)DefaultValue.Get());
+            Value.Set(!(bool?)DefaultValue.Get());
             Hit();
         }
 

+ 22 - 14
qdr.fnd.core.qconsole/Command/Base/AbstractCommand.cs

@@ -45,6 +45,14 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
 
         protected AbstractCommand(Engine engine)
         {
+            // ReSharper disable once VirtualMemberCallInConstructor
+            Notes = string.Empty;
+            // ReSharper disable once VirtualMemberCallInConstructor
+            Examples = string.Empty;
+            // ReSharper disable once VirtualMemberCallInConstructor
+            CustomUsage = string.Empty;
+
+
             _engine = engine ?? throw new ArgumentNullException(nameof(engine));
             _log = engine.Configuration.DefaultLoggerFactory?.GetLogger(GetType());
             _arguments = new Dictionary<string, AbstractArgument>();
@@ -63,7 +71,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
         #region *** Public operations ***
         public Result Execute(string input)
         {
-            ConsoleWriter writer = null;
+            ConsoleWriter? writer = null;
             try
             {
                 writer = new ConsoleWriter(ConsoleColor.Green);
@@ -118,7 +126,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
                 var arg = args[i];
                 var index = i - 1;
                 WriteDebugInfo($"Parsing argument [index={index}] by value string '{arg}' in progress..");
-                AbstractArgument argument = null;
+                AbstractArgument? argument = null;
                 if (arg.StartsWith(Engine.Configuration.CharacterNamedArgumentSeparator))
                 {
                     //Named
@@ -281,11 +289,11 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
                 using (var writerYellow = new ConsoleWriter(ConsoleColor.Magenta))
                 {
                     writer.WriteLine("Engine context:");
-                    writerBlue.Write(_engine.Context.ToString()).Write(" : ");
-                    writerYellow.WriteLine(_engine.Context.Status);
+                    writerBlue.Write((_engine?.Context?.ToString() ?? String.Empty)).Write(" : ");
+                    writerYellow.WriteLine((_engine?.Context?.Status ?? string.Empty));
                     writer.WriteLine("Command context:");
-                    writerBlue.Write(_context.ToString()).Write(" : ");
-                    writerYellow.WriteLine(_context.Status);
+                    writerBlue.Write((_context?.ToString() ?? string.Empty)).Write(" : ");
+                    writerYellow.WriteLine((_context?.Status ?? string.Empty));
                 }
             }
         }
@@ -333,12 +341,11 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
         {
             return incommingResult;
         }
-
-        protected virtual void Log(LogSeverityEnum type, int code, string message, Exception e = null)
+        protected virtual void Log(LogSeverityEnum type, int code, string message, Exception? e = null)
         {
             _log?.Log(type, code, message,e);
         }
-        protected void Log(LogSeverityEnum type, string message, Exception e = null)
+        protected void Log(LogSeverityEnum type, string message, Exception? e = null)
         {
             Log(type,0, message,e);
         }
@@ -358,19 +365,19 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
             return _arguments.Values.Where(x => x.IsPositional()).Skip(ordinalPosition).FirstOrDefault();
         }
 
-        protected TValue GetArgumentValueOrDefault<TValue>(string code, TValue defalutValue)
+        protected TValue? GetArgumentValueOrDefault<TValue>(string code, TValue defalutValue)
         {
             if (!ContainsArgument(code)) return defalutValue;
-            return (TValue) GetArgumentValueOrDefault<TValue>(code);
+            return (TValue?) GetArgumentValueOrDefault<TValue>(code);
         }
-        protected TValue GetArgumentValueOrDefault<TValue>(string code)
+        protected TValue? GetArgumentValueOrDefault<TValue>(string code)
         {
             if (!ContainsArgument(code)) throw new ArgumentOutOfRangeException(code, $"Argument '{code}' not defined.");
             var arg = GetArgument(code);
             var value = arg.Value.Get() ?? arg.DefaultValue.Get();
             if (typeof(TValue).IsEnum)
-                return (TValue)Enum.Parse(typeof(TValue), value?.ToString(),true);
-            return (TValue) value;
+                return (TValue)Enum.Parse(typeof(TValue), value?.ToString() ?? string.Empty,true);
+            return (TValue?) value;
         }
 
         protected bool WasArgumentSpecified(string code)
@@ -383,6 +390,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
         protected void ValidateArgumentValueEnum(string argumentName, Type enumType)
         {
             var argVal = GetArgumentValueOrDefault<string>(argumentName);
+            if (argVal == null) throw new ArgumentException($"Cannot obtain enumeration value from argument '{argumentName}'. Value is empty.");
             if (!Enum.GetNames(enumType).Select(x => x.ToLower()).Contains(argVal.ToLower()))
                 throw new ArgumentOutOfRangeException(
                     $"Argument '{argumentName}' value must be set as following: {string.Join(",", Enum.GetNames(enumType))}");

+ 5 - 5
qdr.fnd.core.qconsole/Command/Base/AbstractListCommand.cs

@@ -104,7 +104,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
                                         writerWhite.WriteLine(
                                             $"Type special character [{QConsole.Defaults.RoleCharacters.InputIncrementPageCharacter}/{QConsole.Defaults.RoleCharacters.InputDecrementPageCharacter}/{QConsole.Defaults.RoleCharacters.InputFirstPageCharacter}/{QConsole.Defaults.RoleCharacters.InputLastPageCharacter}] or direct page value or ENTER to skip.");
                                         writerCyan.Write($"[{GetFirstPage()}-{GetLastPage()}]>");
-                                        var pageString = writerCyan.ReadLine().Trim();
+                                        var pageString = writerCyan.ReadLine()?.Trim();
                                         try
                                         {
                                             isSelected = true;
@@ -144,7 +144,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
                                             else
                                             {
                                                 //direct page
-                                                var pageNo = int.Parse(pageString);
+                                                var pageNo = int.Parse(pageString ?? "0");
                                                 SetCurrentPage(pageNo);
                                             }
                                         }
@@ -212,7 +212,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
         private bool IsPagingMode()
         {
             var argPageMode = GetArgument(Constants.Arguments.Lists.PageMode.Code);
-            return (bool) argPageMode.Value.Get();
+            return (bool) (argPageMode.Value.Get() ?? false);
         }
 
         private int GetItemsPerPage()
@@ -220,13 +220,13 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
             if (!IsPagingMode())
                 return _items.Count;
             var argPageItems = GetArgument(Constants.Arguments.Lists.ItemsPerPage.Code);
-            return (int) argPageItems.Value.Get();
+            return (int) (argPageItems.Value.Get() ?? false);
         }
 
         private int GetCurrentPage()
         {
             var argPage = GetArgument(Constants.Arguments.Lists.Page.Code);
-            return (int) argPage.Value.Get();
+            return (int) (argPage.Value.Get() ?? false);
         }
 
         private void SetCurrentPage(int page)

+ 2 - 2
qdr.fnd.core.qconsole/Command/Base/AbstractSelectionCommand.cs

@@ -72,7 +72,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
             ClearSelected();
             var nCnt = Items.Count();
             var selectionEnabled = GetArgument(Constants.Arguments.Selection.Code);
-            if ((bool) selectionEnabled.Value.Get() == false)
+            if ((bool) (selectionEnabled.Value.Get() ?? false) == false)
                 return result;
             using (var writer = new ConsoleWriter(ConsoleColor.White))
             {
@@ -81,7 +81,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Base
                     writer.WriteLine($"Select ordinal values separated by '{Engine.Configuration.CharacterSelectionInputValueSeparator}'...");
                     writer.WriteLine($"Must be selected at least {MinSelections} ordinals and maximal {MaxSelections} ordinals.");
                     writerCyan.Write($"[1-{nCnt}]>");
-                    var ordinalString = writerCyan.ReadLine();
+                    var ordinalString = writerCyan.ReadLine() ?? String.Empty;
                     var ordinals = ordinalString.Split(new[] {Engine.Configuration.CharacterSelectionInputValueSeparator}, StringSplitOptions.RemoveEmptyEntries);
                     
                     if (!(MinSelections<=ordinals.Length && ordinals.Length <= MaxSelections))

+ 3 - 1
qdr.fnd.core.qconsole/Command/Defaults/CmdPrint.cs

@@ -50,6 +50,7 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Defaults
                 using (var writerYellow = new ConsoleWriter(ConsoleColor.Yellow))
                 {
                     var valueArgument = GetArgument(0);
+                    if (valueArgument == null) throw new Exception("Value argument with ordinal 0 is required.");
                     var value = valueArgument.Value.AsString();
                     if (!value.StartsWith(QConsole.Defaults.RoleCharacters.SelectionVariablePrefixCharacter))
                         throw new Exception($"Variable is defined as {QConsole.Defaults.RoleCharacters.SelectionVariablePrefixCharacter}<selection_ordinal>.<property_name>");
@@ -74,7 +75,8 @@ namespace Quadarax.Foundation.Core.QConsole.Command.Defaults
                     writerYellow.WriteLine(selection.GetPropertyValueAsString(parts[1]));
 
                     var argument = GetArgument(Constants.Commands.Print.ArgCommandClipboard.Code);
-                    if ((bool) argument.Value.Get())
+                    if (argument == null) throw new Exception($"Argument with code '{Constants.Commands.Print.ArgCommandClipboard.Code}' is required.");
+                    if ((bool) (argument.Value.Get() ?? false))
                     {
                         writerGreen.WriteLine("Value was stored in clipboard.");
                     }

+ 16 - 15
qdr.fnd.core.qconsole/Configuration/StartupConfiguration.cs

@@ -19,18 +19,19 @@ namespace Quadarax.Foundation.Core.QConsole.Configuration
         #endregion
 
         #region *** Properties ***
+
         /// <summary>
         /// Name of console application, If not defined uses default name from entryAssembly.
         /// </summary>
-        public string ConsoleName { get; }
+        public string ConsoleName { get; } = string.Empty;
         /// <summary>
         /// Console application version. If not defined uses version of entryAssembly.
         /// </summary>
-        public Version ConsoleVersion { get; }
+        public Version ConsoleVersion { get; } = Version.Parse("0.0.0.0");
         /// <summary>
         /// Console application copyright message. If not set skip this info.
         /// </summary>
-        public string ConsoleCopyright { get; set; }
+        public string ConsoleCopyright { get; set; } = string.Empty;
         /// <summary>
         /// Defines if console is initialized from XML definition.
         /// </summary>
@@ -39,39 +40,39 @@ namespace Quadarax.Foundation.Core.QConsole.Configuration
         /// <summary>
         /// Left introducing of interactive mode character.
         /// </summary>
-        public string CharacterLineIntroduce { get; set; }
+        public string CharacterLineIntroduce { get; set; } = string.Empty;
 
         /// <summary>
         /// Separator between two ordinal arguments
         /// </summary>
-        public string CharacterOrdinalArgumentSeparator { get; set; }
+        public string CharacterOrdinalArgumentSeparator { get; set; } = string.Empty;
 
         /// <summary>
         /// Named argument prefix character.
         /// </summary>
-        public string CharacterNamedArgumentSeparator { get; set; }
+        public string CharacterNamedArgumentSeparator { get; set; } = string.Empty;
         /// <summary>
         /// Named argument postfix character {defines end of argument code and value)
         /// </summary>
-        public string CharacterNamedArgumentValueSeparator { get; set; }
+        public string CharacterNamedArgumentValueSeparator { get; set; } = string.Empty;
         /// <summary>
         /// Start end end string value character
         /// </summary>
-        public string CharacterTextValueBraceSeparator { get; set; }
+        public string CharacterTextValueBraceSeparator { get; set; } = string.Empty;
 
         /// <summary>
         /// Separator between two selection inputs
         /// </summary>
-        public string CharacterSelectionInputValueSeparator { get; set; }
+        public string CharacterSelectionInputValueSeparator { get; set; } = string.Empty;
 
         /// <summary>
         /// Date input/output value format
         /// </summary>
-        public string DateFormat { get; set; }
+        public string DateFormat { get; set; } = string.Empty;
         /// <summary>
         /// Time input/output value format
         /// </summary>
-        public string TimeFormat { get; set; }
+        public string TimeFormat { get; set; } = string.Empty;
         /// <summary>
         /// Defines if interactive mode is enabled
         /// </summary>
@@ -84,7 +85,7 @@ namespace Quadarax.Foundation.Core.QConsole.Configuration
         /// <summary>
         /// Defines assembly list where custom commands are defined (in case explicit command definition).
         /// </summary>
-        public Assembly[] CommandDefinitionAssebmly { get; set; }
+        public Assembly[] CommandDefinitionAssembly { get; set; } = Array.Empty<Assembly>();
 
         /// <summary>
         /// Returns name of command classes that will be disabled (hidden)
@@ -107,7 +108,7 @@ namespace Quadarax.Foundation.Core.QConsole.Configuration
         /// <summary>
         /// Handler when no arguments input specified. If not set then do nothing.
         /// </summary>
-        public NothingToDo HandlerNothingToDo { get; set; }
+        public NothingToDo? HandlerNothingToDo { get; set; }
 
         public bool IsConsoleDebug {
             get
@@ -169,7 +170,7 @@ namespace Quadarax.Foundation.Core.QConsole.Configuration
             return EnableCommands(_defaultCommands);
         }
 
-        public StartupConfiguration EnableCommands(params string[] commandClassNames)
+        public StartupConfiguration EnableCommands(params string[]? commandClassNames)
         {
             if (commandClassNames == null)
                 return this;
@@ -182,7 +183,7 @@ namespace Quadarax.Foundation.Core.QConsole.Configuration
             return this;
         }
 
-        public StartupConfiguration DisableCommands(params string[] commandClassNames)
+        public StartupConfiguration DisableCommands(params string[]? commandClassNames)
         {
             if (commandClassNames == null)
                 return this;

+ 6 - 6
qdr.fnd.core.qconsole/Engine.cs

@@ -114,7 +114,7 @@ namespace Quadarax.Foundation.Core.QConsole
                         _isExitSignal = true;
                     }
 
-                    var args = input.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);
+                    var args = (input ?? String.Empty).Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);
                     if (args.Length == 0)
                     {
                         if (_isExitSignal == true && !Configuration.AllowInteractive &&
@@ -135,7 +135,7 @@ namespace Quadarax.Foundation.Core.QConsole
                         continue;
                     }
 
-                    var result = command.Execute(input);
+                    var result = command.Execute((input ?? String.Empty));
                     if (result.IsSuccess)
                     {
                         using (var writerSucc = new ConsoleWriter(ConsoleColor.Green))
@@ -183,7 +183,7 @@ namespace Quadarax.Foundation.Core.QConsole
             WriteDebugInfo("Console stopped.");
         }
 
-        public AbstractCommand GetCommand(string commandName)
+        public AbstractCommand? GetCommand(string commandName)
         {
             return _commands.FirstOrDefault(x => x.Name.ToUpper() == commandName.ToUpper());            
         }
@@ -265,9 +265,9 @@ namespace Quadarax.Foundation.Core.QConsole
             var defaultTypes = Assembly.GetExecutingAssembly().GetTypes().Where(type => type.GetCustomAttributes(attribute.GetType(), true).Length > 0).Distinct().ToList();
             
             var customTypes = new List<Type>();
-            if (_configuration.CommandDefinitionAssebmly != null)
+            if (_configuration.CommandDefinitionAssembly != null)
             {
-                foreach (var assembly in _configuration.CommandDefinitionAssebmly)
+                foreach (var assembly in _configuration.CommandDefinitionAssembly)
                 {
                     customTypes.AddRange(assembly.GetTypes().Where(type => type.GetCustomAttributes(attribute.GetType(), true).Length > 0).Distinct().ToArray());
                     WriteDebugInfo(assembly.GetName().Name + " was scanned for commands.");
@@ -301,7 +301,7 @@ namespace Quadarax.Foundation.Core.QConsole
             }
         }
 
-        private void DumpException(ConsoleWriter writer, Exception e)
+        private void DumpException(ConsoleWriter writer, Exception? e)
         {
             while (e != null)
             {                                         

+ 4 - 3
qdr.fnd.core.qconsole/Value/AbstractValue.cs

@@ -4,7 +4,7 @@ namespace Quadarax.Foundation.Core.QConsole.Value
 {
     public abstract class AbstractValue
     {
-        private object _value;
+        private object? _value;
 
         /// <summary>
         /// Defines if value is set. Not null.
@@ -18,6 +18,7 @@ namespace Quadarax.Foundation.Core.QConsole.Value
 
         public AbstractValue()
         {
+            ValueType = typeof(object);
             Reset();
         }
 
@@ -44,12 +45,12 @@ namespace Quadarax.Foundation.Core.QConsole.Value
             Set(ConvertStringToValue(valueAsString));
         }
 
-        public virtual void Set(object value)
+        public virtual void Set(object? value)
         {
             _value = value;
         }
 
-        public object Get()
+        public object? Get()
         {
             return _value;
         }

+ 4 - 2
qdr.fnd.core.qconsole/Value/BoolValue.cs

@@ -1,4 +1,6 @@
-namespace Quadarax.Foundation.Core.QConsole.Value
+using System;
+
+namespace Quadarax.Foundation.Core.QConsole.Value
 {
     public class BoolValue : AbstractValue
     {
@@ -17,7 +19,7 @@
 
         public override string AsString()
         {
-            return HasValue ? Get().ToString() : string.Empty;
+            return (HasValue ? Get()?.ToString() : string.Empty) ?? String.Empty;
         }
     }
 }

+ 1 - 1
qdr.fnd.core.qconsole/Value/DateTimeValue.cs

@@ -20,7 +20,7 @@ namespace Quadarax.Foundation.Core.QConsole.Value
 
         public override string AsString()
         {
-            return HasValue ? Get().ToString() : string.Empty;
+            return (HasValue ? Get()?.ToString() : string.Empty) ?? String.Empty;
         }
     }
 }

+ 2 - 2
qdr.fnd.core.qconsole/Value/DateValue.cs

@@ -9,7 +9,7 @@ namespace Quadarax.Foundation.Core.QConsole.Value
 
         public DateValue() : base()
         {
-
+            _dateformat = string.Empty;
         }
 
         public DateValue(DateTime value, string dateFormat) : base(typeof(DateTime), value)
@@ -28,7 +28,7 @@ namespace Quadarax.Foundation.Core.QConsole.Value
 
         public override string AsString()
         {
-            return HasValue ? ((DateTime)Get()).ToString(_dateformat) : string.Empty;
+            return (HasValue ? ((DateTime?)Get())?.ToString(_dateformat) : string.Empty) ?? String.Empty;
         }
     }
 }

+ 4 - 2
qdr.fnd.core.qconsole/Value/DecimalValue.cs

@@ -1,4 +1,6 @@
-namespace Quadarax.Foundation.Core.QConsole.Value
+using System;
+
+namespace Quadarax.Foundation.Core.QConsole.Value
 {
     public class DecimalValue : AbstractValue
     {
@@ -18,7 +20,7 @@
 
         public override string AsString()
         {
-            return HasValue ? Get().ToString() : string.Empty;
+            return (HasValue ? Get()?.ToString() : string.Empty) ?? String.Empty;
         }
     }
 }

+ 1 - 1
qdr.fnd.core.qconsole/Value/GuidValue.cs

@@ -20,7 +20,7 @@ namespace Quadarax.Foundation.Core.QConsole.Value
 
         public override string AsString()
         {
-            return HasValue ? Get().ToString() : string.Empty;
+            return (HasValue ? Get()?.ToString() : string.Empty) ?? string.Empty;
         }
     }
 }

+ 1 - 1
qdr.fnd.core.qconsole/Value/IntegerValue.cs

@@ -19,7 +19,7 @@
 
         public override string AsString()
         {
-            return HasValue ? Get().ToString() : string.Empty;
+            return (HasValue ? Get()?.ToString() : string.Empty) ?? string.Empty;
         }
     }
 }

+ 1 - 1
qdr.fnd.core.qconsole/Value/StringValue.cs

@@ -20,7 +20,7 @@ namespace Quadarax.Foundation.Core.QConsole.Value
 
         public override string AsString()
         {
-            return HasValue ? Get().ToString() : string.Empty;
+            return (HasValue ? Get()?.ToString() : string.Empty) ?? string.Empty;
         }
     }
 }

+ 1 - 1
qdr.fnd.core.qconsole/Value/TimeSpanValue.cs

@@ -12,7 +12,7 @@ namespace Quadarax.Foundation.Core.QConsole.Value
 
         public override string AsString()
         {
-            return HasValue ? Get().ToString() : string.Empty;
+            return (HasValue ? Get()?.ToString() : string.Empty) ?? string.Empty;
         }
     }
 }

+ 6 - 6
qdr.fnd.core.qconsole/qdr.fnd.core.qconsole.csproj

@@ -12,16 +12,16 @@
     <Company>Quadarax</Company>
     <Product>Quadarax.Foundation</Product>
     <Description>Quadarax.Foundation.Core.QConsole - abstract console engine under foundation library</Description>
-    <Copyright>Copyright © 2023 Quadarax</Copyright>
+    <Copyright>Copyright © 2023,2024 Quadarax</Copyright>
     <PackageIcon>quadarax_dll.png</PackageIcon>
     <PackageTags>QDR;FND;CORE;CONSOLE</PackageTags>
-    <AssemblyVersion>0.0.3.0</AssemblyVersion>
-    <FileVersion>0.0.3.0</FileVersion>
-    <Version>0.0.3.0-alpha</Version>
+    <AssemblyVersion>0.0.4.0</AssemblyVersion>
+    <FileVersion>0.0.4.0</FileVersion>
+    <Version>0.0.4.0-alpha</Version>
     <Nullable>enable</Nullable>
     <PackageReadmeFile>releasenotes.md</PackageReadmeFile>
     <PackageReleaseNotes>
-      Date:30.11.2023
+      Date:24.3.2024
       - update dependencies packages (qdr.fnd.core)
     </PackageReleaseNotes>
   </PropertyGroup>
@@ -41,7 +41,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="qdr.fnd.core" Version="0.0.3-alpha" />
+    <PackageReference Include="qdr.fnd.core" Version="0.0.4-alpha" />
   </ItemGroup>
 
   <ItemGroup>

+ 4 - 0
qdr.fnd.core.qconsole/releasenotes.md

@@ -1,6 +1,10 @@
 # Quadarax.Foundation.Core.QConsole * Release notes
 Ordered by version descending
 
+## 0.0.4.0
+Date:__24.3.2024__
+- update dependencies packages (qdr.fnd.core)
+---
 ## 0.0.3.0
 Date:__30.11.2023__
 - update dependencies packages (qdr.fnd.core)