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);
        }
Exemple #3
0
 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);
 }
Exemple #4
0
        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);
        }
Exemple #9
0
 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);
            });
        }
Exemple #12
0
 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);
 }