/// <summary> /// Main method: executes all required steps /// </summary> /// <param name="args">Command-line arguments</param> /// <remarks>This method parses the supplied command-line arguments, reads all input files and creates the output file</remarks> protected void Execute(string[] args) { CommandLineParser parser = new CommandLineParser(args, parameters); parser.Parse(); CommandLineParsed(parser); foreach (string input in InputFilenames) { using (Stream inputStream = DataFileTools.OpenInputFile(input)) { Process(inputStream); } } string outputFilename = OutputFilename; Stream outputStream = String.IsNullOrEmpty(outputFilename) ? Console.OpenStandardInput() : new FileStream(outputFilename, FileMode.Create, FileAccess.Write, FileShare.Read); try { SaveOutput(outputStream); } finally { outputStream.Dispose(); } }
private void LoadSpaceSeparatedFile(string filename, EventHandler <RowEventArgs> processEntryDelegate) { if (processEntryDelegate == null) { throw new ArgumentNullException("processEntryDelegate"); } using (var streamReader = new CountingStreamReader(filename, DataFileTools.OpenInputFile(filename), Encoding.UTF8)) { fileReader = streamReader; var reader = new SpaceSeparatedFileParser(streamReader); reader.RowComplete += processEntryDelegate; reader.Parse(); } fileReader = null; }
/// <summary> /// Perform the analysis /// </summary> /// <param name="filename">Filename of the input file</param> private static void Analyze(string filename) { using (stream = DataFileTools.OpenInputFile(filename)) { var settings = new XmlReaderSettings { XmlResolver = null }; using (XmlReader xml = XmlReader.Create(stream, settings)) { dump = new RevisionXmlDumpParser(xml); dump.SiteInfoProcessed += SiteInfoProcessed; dump.PageStart += PageStart; dump.PageComplete += PageComplete; dump.RevisionComplete += RevisionComplete; length = stream.Length; start = DateTime.Now; Console.TreatControlCAsInput = true; try { dump.Parse(); } catch (AbortException) { if (!quiet) { Console.Error.Write("\nAborted"); } } stop = DateTime.Now; Console.Error.WriteLine(); if (!quiet) { Console.Error.WriteLine("{0} pages ({1} revisions) by {2} users analyzed in {3:n0} s", pageCount, totalRevisionCount, users.Count, (stop - start).TotalSeconds); } } } }