private TSVData FillValues() { string[] headers = noParseData[0].Split('\t'); var tsv = new TSVData(); tsv.Headers = headers.ToList(); noParseData.Skip(1).ToList().ForEach((line) => { string[] values = line.Split('\t'); var row = new TSVRow(); for (int i = 0; i < tsv.Headers.Count; i++) { row.Cells.Add(new TSVCell() { Value = values[i], ColumnTitle = tsv.Headers[i], ColumnIndex = i, RowIndex = noParseData.IndexOf(line) }); } tsv.Rows.Add(row); }); return(tsv); }
public TSVData Parse() { TSVData data = FillValues(); data = SetTypes(data); return(data); }
public static TSVData FilterProject(this TSVData data, int id, string header = "Project") { data.Rows.RemoveAll( (row) => row.Cells.First((cel) => cel.ColumnTitle == header).Value != id.ToString() ); return(data); }
public void Print(TSVData TSVData) { string headers = string.Join("\t|", TSVData.Headers); Console.WriteLine(headers); TSVData.Rows.ForEach((row) => { List <string> values = row.Cells.Select((cel) => cel.Value).ToList(); string line = string.Join("\t", values); Console.WriteLine(line); }); }
private TSVData SetTypes(TSVData data) { data.Rows.ForEach((row) => { row.Cells.ForEach((cell) => { cell.Type = GetType(cell.Value, cell.ColumnTitle); }); }); return(data); }
private static TSVData FilterTSV(TSVData data, bool sortByDate, int?projectIdFilter) { data.ClearNULLs(new string[] { "Savings amount", "Currency" }); if (projectIdFilter != null) { data = data.FilterProject((int)projectIdFilter); } if (sortByDate) { data = data.OrderByDate(); } return(data); }
private static TSVData ReadTSV(string path) { var validator = new TSVValidation.TSVValidator(path); bool isTSVFileValid = validator.IsValid(); if (isTSVFileValid) { ITSVParser parser = new TSVParser(validator.TSVContent); TSVData data = parser.Parse(); return(data); } throw new Exception("Invalid TSV file."); }
public void HeadersCount() { string path = Path.Combine(RootFolder, @"Example Data\CorrectExample.tsv"); var validator = new TSVValidator(path); bool valid = validator.IsValid(); Assert.True(valid); ITSVParser parser = new TSVParser(validator.TSVContent); TSVData data = parser.Parse(); Assert.IsTrue(data.Headers.Count == 8); }
public static TSVData ClearNULLs(this TSVData data, string[] headers, string oldValue = "NULL", string replValue = "") { data.Rows.ForEach((line) => { var cells = line.Cells.Where((c) => headers.Contains(c.ColumnTitle)).ToList(); cells.ForEach((cell) => { if (cell.Value == oldValue) { cell.Value = replValue; } }); }); return(data); }
public void DateTimeFormatExist() { string path = Path.Combine(RootFolder, @"Example Data\CorrectExample.tsv"); var validator = new TSVValidator(path); bool valid = validator.IsValid(); Assert.True(valid); ITSVParser parser = new TSVParser(validator.TSVContent); TSVData data = parser.Parse(); var row = data.Rows.First(); Assert.NotNull(row); var cell = row.Cells.FirstOrDefault(x => x.Type.FullName == DateTime.Now.GetType().FullName); Assert.NotNull(cell); }
public static void PrintData(CommandLineApplication command) { CommandOption file = command.Option("-file", "Full path to the input file.", CommandOptionType.SingleValue); CommandOption sort = command.Option("-sortByStartDate", "Sort results by column 'Start date' in ascending order.", CommandOptionType.SingleOrNoValue); CommandOption project = command.Option("-projectId", "filter results by column 'Project'.", CommandOptionType.SingleOrNoValue); command.OnExecute(() => { int?projectIdFilter = null; bool sortByDateFilter = false; string pathToFile = string.Empty; projectIdFilter = projectIdFilter.TryParseNullable(project.Value()); bool.TryParse(sort.Value(), out sortByDateFilter); pathToFile = file.Value(); TSVData data = ReadTSV(pathToFile); TSVData filteredData = FilterTSV(data, sortByDateFilter, projectIdFilter); IOutput @out = new ConsoleOutput(); @out.Print(filteredData); }); }
public static TSVData OrderByDate(this TSVData data) { data.Rows = data.Rows .OrderBy((row) => row.Cells.First((c) => c.Type.FullName == DateTime.Now.GetType().FullName)).ToList(); return(data); }