public static ConsumptionDataReader CreateConsumptionDataReader(ConsumptionDataReaderKind kind) { switch (kind) { case ConsumptionDataReaderKind.VnStatXml: return(new ConsumptionDataReaderVnStatXml()); } return(null); }
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); }