* refactor the code to make it more OOP and extensible
[reactos.git] / irc / TechBot / TechBot.Library / NtStatusCommand.cs
index 034df26..4833c57 100644 (file)
@@ -3,35 +3,37 @@ using System.Xml;
 \r
 namespace TechBot.Library\r
 {\r
-       public class NtStatusCommand : BaseCommand, ICommand\r
+       public class NtStatusCommand : XmlCommand\r
        {\r
-               private IServiceOutput serviceOutput;\r
-               private string ntstatusXml;\r
-               private XmlDocument ntstatusXmlDocument;\r
-\r
-               public NtStatusCommand(IServiceOutput serviceOutput,\r
-                                      string ntstatusXml)\r
+        public NtStatusCommand(TechBotService techBot)\r
+            : base(techBot)\r
                {\r
-                       this.serviceOutput = serviceOutput;\r
-                       this.ntstatusXml = ntstatusXml;\r
-                       ntstatusXmlDocument = new XmlDocument();\r
-                       ntstatusXmlDocument.Load(ntstatusXml);\r
                }\r
-               \r
+\r
+        public override string XmlFile\r
+        {\r
+            get { return Settings.Default.NtStatusXml; }\r
+        }\r
+\r
+        public override string[] AvailableCommands\r
+        {\r
+            get { return new string[] { "ntstatus" }; }\r
+        }\r
+/*             \r
                public bool CanHandle(string commandName)\r
                {\r
                        return CanHandle(commandName,\r
                                         new string[] { "ntstatus" });\r
                }\r
-\r
-               public void Handle(MessageContext context,\r
+*/\r
+               public override void Handle(MessageContext context,\r
                                   string commandName,\r
                                   string parameters)\r
                {\r
                        string ntstatusText = parameters;\r
                        if (ntstatusText.Equals(String.Empty))\r
                        {\r
-                               serviceOutput.WriteLine(context,\r
+                               TechBot.ServiceOutput.WriteLine(context,\r
                                                        "Please provide a valid NTSTATUS value.");\r
                                return;\r
                        }\r
@@ -40,7 +42,7 @@ namespace TechBot.Library
                        long ntstatus = np.Parse(ntstatusText);\r
                        if (np.Error)\r
                        {\r
-                               serviceOutput.WriteLine(context,\r
+                TechBot.ServiceOutput.WriteLine(context,\r
                                                        String.Format("{0} is not a valid NTSTATUS value.",\r
                                                                      ntstatusText));\r
                                return;\r
@@ -49,27 +51,27 @@ namespace TechBot.Library
                        string description = GetNtstatusDescription(ntstatus);\r
                        if (description != null)\r
                        {\r
-                               serviceOutput.WriteLine(context,\r
+                TechBot.ServiceOutput.WriteLine(context,\r
                                                        String.Format("{0} is {1}.",\r
                                                                      ntstatusText,\r
                                                                      description));\r
                        }\r
                        else\r
                        {\r
-                               serviceOutput.WriteLine(context,\r
+                TechBot.ServiceOutput.WriteLine(context,\r
                                                        String.Format("I don't know about NTSTATUS {0}.",\r
                                                                      ntstatusText));\r
                        }\r
                }\r
-               \r
-               public string Help()\r
+\r
+        public override string Help()\r
                {\r
                        return "!ntstatus <value>";\r
                }\r
                \r
                public string GetNtstatusDescription(long ntstatus)\r
                {\r
-                       XmlElement root = ntstatusXmlDocument.DocumentElement;\r
+                       XmlElement root = base.m_XmlDocument.DocumentElement;\r
                        XmlNode node = root.SelectSingleNode(String.Format("Ntstatus[@value='{0}']",\r
                                                                           ntstatus.ToString("X8")));\r
                        if (node != null)\r