public static ConsumptionDataReader CreateConsumptionDataReader(ConsumptionDataReaderKind kind)
 {
     switch (kind)
     {
     case ConsumptionDataReaderKind.VnStatXml:
         return(new ConsumptionDataReaderVnStatXml());
     }
     return(null);
 }
Beispiel #2
0
        static bool ParseCommandLineArguments(string[] args, ref string inputFile, ref string dbUsername, ref string dbPassword, ref string dbDatabase, ref string dbHost, ref ConsumptionDbAccessKind wantedDb, ref ConsumptionDataReaderKind wantedReader, ref byte verbosity)
        {
            int idx = 0;

            while (idx < args.Length)
            {
                if (!args [idx].StartsWith("-") || args [idx] == "-")
                {
                    inputFile = args [idx];
                }
                else
                {
                    if (args [idx].StartsWith("-v"))
                    {
                        verbosity = (byte)(args [idx].Length - 1);
                        // don't care if there is something else than a "v"
                        if (verbosity > 3)
                        {
                            verbosity = 3;
                            Console.WriteLine("Verbosity can't be more than 3!");
                        }
                    }
                    else
                    {
                        if (args [idx] == "--filetype")
                        {
                            idx++;
                            var requestedFileType = args [idx];
                            if (!Enum.TryParse <ConsumptionDataReaderKind> (requestedFileType, out wantedReader))
                            {
                                Console.WriteLine("Unknown filetype \"{0}\"", requestedFileType);
                                return(false);
                            }
                        }
                        else
                        {
                            if (args [idx] == "--dbtype")
                            {
                                idx++;
                                var requestedDbType = args [idx];
                                if (!Enum.TryParse <ConsumptionDbAccessKind> (requestedDbType, out wantedDb))
                                {
                                    Console.WriteLine("Unknown database type \"{0}\"", requestedDbType);
                                    return(false);
                                }
                            }
                            else
                            {
                                if (args [idx] == "--credentials")
                                {
                                    idx++;
                                    var thisArg = args[idx];
                                    if (args[idx].Contains(":") && args[idx].Contains("@") && args[idx].Contains("#"))
                                    {
                                        if (!ParseCredentials(thisArg, ref dbUsername, ref dbPassword, ref dbDatabase, ref dbHost))
                                        {
                                            return(false);
                                        }
                                    }
                                    else
                                    {
                                        if (File.Exists(thisArg))
                                        {
                                            var allLines = File.ReadAllLines(thisArg);
                                            if (allLines.Length < 1)
                                            {
                                                Console.WriteLine("File {0} does not contain a line with credentials.", thisArg);
                                                return(false);
                                            }
                                            bool credentialsParsed = false;
                                            int  lineNumber        = 0;
                                            while (!credentialsParsed)
                                            {
                                                if (!allLines[lineNumber].StartsWith("#"))
                                                {
                                                    if (!ParseCredentials(allLines[lineNumber], ref dbUsername, ref dbPassword, ref dbDatabase, ref dbHost))
                                                    {
                                                        return(false);
                                                    }
                                                    credentialsParsed = true;
                                                }
                                                lineNumber++;
                                                if (lineNumber >= allLines.Length)
                                                {
                                                    Console.WriteLine("File {0} does not contain a line with credentials.", thisArg);
                                                    return(false);
                                                }
                                            }
                                        }
                                        else
                                        {
                                            Console.WriteLine("Specify credentials in format username:password@database#host or supply a readable file.");
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                idx++;
            }
            return(true);
        }