/// <summary> /// Write parameters delimited with OutputFieldSeparator to file line. /// OutputFieldSeparator is removed from within values /// </summary> /// <param name="values">values to be in line</param> public void WriteLine(params string[] values) { lock (this) { string line = FieldPreparation.GetCsvLine(values, Settings.Output.FieldSeparator, false); WriteLine(line); } }
Controller(Route route) { queues = get_queues(route); tw = new StreamWriter(Log.MainSession.Path + "\\output_" + route.Name + ".csv"); foreach (Queue q in queues) { headers.InsertRange(0, q.Outputs.Where(o => o is Queue.Output.Field).Select(f => ((Queue.Output.Field)f).Name)); } headers.Insert(0, "Url"); tw.WriteLine(FieldPreparation.GetCsvLine(headers, FieldPreparation.FieldSeparator.COMMA)); }
void Start() { run = true; while (run) { var ii = get_next_item(); if (ii == null) { return; } ii.Queue.ProcessItem(ii); if (ii.Queue == queues[0]) { List <string> vs = new List <string>(); string url = null; for (; ii != null; ii = ii.ParentItem) { vs.InsertRange(0, ii.OutputValues); if (ii is Queue.InputItem.Url && (url == null || ii.OutputValues.Count > 0) ) { url = ii.Value; } if (ii.ParentItem == null) { break; } if (queues.IndexOf(ii.Queue) >= queues.IndexOf(ii.ParentItem.Queue)) { break; } } vs.Insert(0, url); tw.WriteLine(FieldPreparation.GetCsvLine(vs, FieldPreparation.FieldSeparator.COMMA, true)); tw.Flush(); WriteLine?.Invoke(headers, vs); } } }
static public void Run(Action <int, int> progress) { Log.Main.Inform("STARTED"); progress(0, 0); if (string.IsNullOrWhiteSpace(Settings.General.InputFolder)) { Win.LogMessage.Error("Input Folder is not specified."); return; } if (!Directory.Exists(Settings.General.InputFolder)) { Win.LogMessage.Error("Input folder '" + Settings.General.InputFolder + "' does not exist."); return; } string output_records_file = FileSystemRoutines.CreateDirectory(Settings.General.OutputFolder) + "\\_output.csv"; if (File.Exists(output_records_file)) { File.Delete(output_records_file); } TextWriter tw = new StreamWriter(output_records_file, false); List <Template2> active_templates = Settings.Template2s.Template2s.Where(x => x.Active).OrderBy(x => x.OrderWeight).ThenByDescending(x => { return(Settings.TemplateLocalInfo.GetInfo(x.Template.Name).UsedTime); }).ToList(); if (active_templates.Count < 1) { Win.LogMessage.Error("There is no active template!"); return; } List <string> headers = new List <string> { "File", "Template", "First Page", "Last Page", "Invoice", "Total", "Product Name", "Product Cost" }; tw.WriteLine(FieldPreparation.GetCsvHeaderLine(headers, FieldPreparation.FieldSeparator.COMMA)); List <string> files = FileSystemRoutines.GetFiles(Settings.General.InputFolder, false); files.Remove(output_records_file); files = files.Select(f => new FileInfo(f)).Where(fi => !fi.Attributes.HasFlag(FileAttributes.Hidden)).Select(fi => fi.FullName).ToList(); int processed_files = 0; int total_files = files.Count; List <string> failed_files = new List <string>(); progress(processed_files, total_files); foreach (string f in files) { try { bool?result = PdfProcessor.Process(f, active_templates, (templateName, firstPageI, lastPageI, document) => { { List <string> values = new List <string>() { PathRoutines.GetFileName(f), templateName, firstPageI.ToString(), lastPageI.ToString(), document.Invoice, document.Total, "", "" }; tw.WriteLine(FieldPreparation.GetCsvLine(values, FieldPreparation.FieldSeparator.COMMA)); } foreach (PdfProcessor.Document.Product p in document.Products) { List <string> values = new List <string>() { "", "", "", "", "", "", p.Name, p.Cost }; tw.WriteLine(FieldPreparation.GetCsvLine(values, FieldPreparation.FieldSeparator.COMMA)); } }); if (result != true) { failed_files.Add(f); } } catch (Exception e) { Log.Main.Error("Processing file '" + f + "'", e); failed_files.Add(f); } progress(++processed_files, total_files); } tw.Close(); try { System.Diagnostics.Process.Start(output_records_file); } catch { } Log.Main.Inform("COMPLETED:\r\nTotal files: " + processed_files + "\r\nSuccess files: " + (processed_files - failed_files.Count) + "\r\nFailed files: " + failed_files.Count + "\r\n" + string.Join("\r\n", failed_files)); if (failed_files.Count > 0) { Message.Error("There were " + failed_files.Count + " failed files.\r\nSee details in the log."); } //progress(0, 0); }