Пример #1
0
        public void CanBuildACsvDefinitionByAddingHeadersDirectly()
        {
            var objUt = new CsvDefinition();

            objUt.AddHeaders("Column 1", "Column 2", "TOTAL");

            Assert.NotEmpty(objUt.Headers);
            Assert.Equal(3, objUt.Headers.Count);
        }
Пример #2
0
        public void AddHeadersAndAddRowReturnsTheCsvDefinitionToEnableChaining()
        {
            var objUt = new CsvDefinition()
                        .AddHeaders("Column 1", "Column 2", "TOTAL")
                        .AddRow(10, 20, 30)
                        .AddRow(11, 21, 31);

            Assert.NotEmpty(objUt.Rows);
            Assert.Equal(2, objUt.Rows.Count);
        }
Пример #3
0
        /// <summary>
        /// Gets the object for the provided data.
        /// </summary>
        public static CsvDefinition Get(string[] headers, params object[][] rows)
        {
            var definition = new CsvDefinition()
                             .AddHeaders(headers);

            foreach (var row in rows)
            {
                definition.AddRow(row);
            }

            return(definition);
        }
Пример #4
0
        private void AddHeader <T>(IXLWorksheet worksheet, CsvDefinition <T> definition, T[] rows, int rowid)
        {
            var headers = definition.Columns.SelectMany(column => GetHeaderNames <T>(definition, column, rows)).ToArray();
            var row     = worksheet.Row(rowid);
            var colid   = 1;

            foreach (var header in headers)
            {
                row.Cell(colid).Value = header;
                colid++;
            }
        }
Пример #5
0
        public void Build_WithoutHeaderNames_NamesAreReflected()
        {
            var definition = new CsvDefinition <TestRow>(
                new TextCsvColumn <TestRow>(e => e.Name))
            {
                FirstRowContainsHeaders = true,
                WriteBitOrderMarker     = false
            };

            var result = CsvWriter.CreateStream <TestRow>(definition, oneRow).GetString();

            Assert.AreEqual("\"Name\"\r\n\"OK_NAME\"\r\n", result);
        }
Пример #6
0
        public void Build_NoHeaderNamesInFirstRow_HeaderRowIsSkipped()
        {
            var definition = new CsvDefinition <TestRow>(
                new TextCsvColumn <TestRow>(e => e.Name))
            {
                FirstRowContainsHeaders = false,
                WriteBitOrderMarker     = false
            };

            var result = CsvWriter.CreateStream <TestRow>(definition, oneRow).GetString();

            Assert.AreEqual("\"OK_NAME\"\r\n", result);
        }
        public void Composition_NotInCollection_ThrowsException()
        {
            var rows = this.GetCompositeRows();

            var definition =
                new CsvDefinition <CompositeTestModel>(
                    new TextCsvColumn <CompositeTestModel>(e => e.Name),
                    new ObjectCsvColumn <CompositeTestModel>(e => e.TestColor),
                    new CompositeCsvColumn <CompositeTestModel, string>(e => e.GetTestColors(), Header1, "NotInCollection"))
            {
                FirstRowContainsHeaders = true
            };

            var result = CsvWriter.CreateStream(definition, rows).GetString();
        }
Пример #8
0
        public void Reading_WithStringBasedProperty_ReturnsResult()
        {
            var def = new CsvDefinition <TestModel>(new TextCsvColumn <TestModel>("Name"))
            {
                FirstRowContainsHeaders   = true,
                ElementDelimiter          = ";",
                HasFieldsEnclosedInQuotes = true,
                Encoding = Encoding.UTF8
            };

            var data = "\"Name\";\"TestColors\"\r\n\"OK_NAME\";\"Red\"";

            var mapper = new TableDataMapper <TestModel>(def);
            var result = mapper.FromStream(new MemoryStream(Encoding.UTF8.GetBytes(data)));

            Assert.AreEqual("OK_NAME", result[0].Name);
        }
        public void Composition_FromPropertyWithAllHeaderNames_ResolvesAllHeaderName()
        {
            var rows = new[] {
                new DynamicTestModel
                {
                    Name    = "Main name",
                    Columns = new[] { new TestColumn {
                                          Name = "Test One", Type = 1, Value = "One"
                                      }, new TestColumn {
                                          Name = "Test Two", Type = 2, Value = "Two"
                                      } }
                }
            };

            var definition =
                new CsvDefinition <DynamicTestModel>(
                    new TextCsvColumn <DynamicTestModel>(e => e.Name),
                    new DynamicCsvColumn <DynamicTestModel, TestColumn>(e => e.Columns, column =>
            {
                if (column.Type == 1)
                {
                    return(new TextCsvColumn <TestColumn>(sf => sf.Value)
                    {
                        HeaderName = column.Name
                    });
                }
                else if (column.Type == 2)
                {
                    return(new TextCsvColumn <TestColumn>(sf => sf.Value)
                    {
                        HeaderName = column.Name, Format = (v, c) => v.ToString()
                    });
                }

                throw new InvalidOperationException();
            }))
            {
                FirstRowContainsHeaders = true,
                WriteBitOrderMarker     = false
            };

            var result = CsvWriter.CreateStream(definition, rows).GetString();

            Assert.AreEqual("\"Name\";\"Test One\";\"Test Two\"\r\n\"Main name\";\"One\";\"Two\"\r\n", result);
        }
Пример #10
0
        public void CanBuildACsvDefinitionByAddingARowDirectly()
        {
            var objUt = new CsvDefinition();

            objUt.AddHeaders("Column 1", "Column 2", "TOTAL");
            objUt.AddRow(10, 20, 30);
            objUt.AddRow(11, 21, 31);

            Assert.NotEmpty(objUt.Rows);
            Assert.Equal(2, objUt.Rows.Count);

            Assert.Equal(objUt.Headers[0], objUt.Rows[0][0].Header);
            Assert.Equal(objUt.Headers[1], objUt.Rows[0][1].Header);
            Assert.Equal(objUt.Headers[2], objUt.Rows[0][2].Header);
            Assert.Equal(objUt.Headers[0], objUt.Rows[1][0].Header);
            Assert.Equal(objUt.Headers[1], objUt.Rows[1][1].Header);
            Assert.Equal(objUt.Headers[2], objUt.Rows[1][2].Header);
        }
        public void CompositeProperty_WithoutHeadernames_ShouldGenerateHeadernames()
        {
            var rows = this.GetCompositeRows();

            var definition =
                new CsvDefinition <CompositeTestModel>(
                    new TextCsvColumn <CompositeTestModel>(e => e.Name),
                    new ObjectCsvColumn <CompositeTestModel>(e => e.TestColor),
                    new CompositeCsvColumn <CompositeTestModel, string>(e => e.GetTestColors())) //// Purple is not in the source
            {
                FirstRowContainsHeaders = true,
                WriteBitOrderMarker     = false
            };

            var result = CsvWriter.CreateStream(definition, rows).GetString();

            Assert.AreEqual("\"Name\";\"TestColor\";\"Header1\";\"Header2\";\"Header3\"\r\n"
                            + "\"OK_NAME\";0;\"ValueOne\";\"ValueTwo\";\"ValueThree\"\r\n", result);
        }
        public void Composition_FromPropertyWithAllHeaderNames_ResolvesAllHeaderName()
        {
            var rows = this.GetCompositeRows();

            var definition =
                new CsvDefinition <CompositeTestModel>(
                    new TextCsvColumn <CompositeTestModel>(e => e.Name),
                    new ObjectCsvColumn <CompositeTestModel>(e => e.TestColor),
                    new CompositeCsvColumn <CompositeTestModel, string>(e => e.TestColors, Header1, Header2, Header3))
            {
                FirstRowContainsHeaders = true,
                WriteBitOrderMarker     = false
            };

            var result = CsvWriter.CreateStream(definition, rows).GetString();

            Assert.AreEqual("\"Name\";\"TestColor\";\"Header1\";\"Header2\";\"Header3\"\r\n"
                            + "\"OK_NAME\";0;\"ValueOne\";\"ValueTwo\";\"ValueThree\"\r\n", result);
        }
Пример #13
0
        private static void InMemoryFileWithNoHeader()
        {
            Console.WriteLine("Test In Memory File With No Header");
            var csvDefinition = new CsvDefinition
                {
                    Header = "ClientId|FirstName|LastName|Occupation|City",
                    FieldSeparator = '|'
                };

            var csvWithNoHeader = new CsvFileReader<Client>(
                new StringReader("1|Pascal|Ganaye|CodeMonkey|Macon\r" +
                                 "2|Mick|Jagger|Singer|Dartford"), csvDefinition
                );
            foreach (var c in csvWithNoHeader)
                Console.WriteLine(string.Format("Client #{0}: {1} ({2} in {3})",
                                                c.ClientId,
                                                c.FirstName + (string.IsNullOrEmpty(c.MiddleName) ? " " : " " + c.MiddleName + " ") + c.LastName,
                                                c.Occupation,
                                                c.City));
        }
Пример #14
0
        public void Render_ForceExcelTextCell_AddsSingleQuote()
        {
            var rows = this.GetModelRows();

            var definition =
                new CsvDefinition <ColorArrayModel>(
                    new TextCsvColumn <ColorArrayModel>(e => e.Name)
            {
                ForceNumberToTextFormatting = true
            })
            {
                FirstRowContainsHeaders = true,
                WriteBitOrderMarker     = false
            };

            var result = CsvWriter.CreateStream(definition, rows).GetString();

            Assert.AreEqual("\"Name\"\r\n"
                            + "=\"OK_NAME\"\r\n", result);
        }
Пример #15
0
        public void ACsvDefinitionWithACellForANonExistentHeaderIsInvalid()
        {
            var objUt = new CsvDefinition();

            objUt.Headers.AddItems("Column 1", "Column 2", "TOTAL");
            objUt.Rows.AddItems(
                new CsvRow
            {
                new CsvCell("Column 1", 10),
                new CsvCell("Column 2", 20),
                new CsvCell("TOTAL", 30)
            },
                new CsvRow
            {
                new CsvCell("Column 1", 11),
                new CsvCell("Column 2", 21),
                new CsvCell("Column 3", 31)
            });

            Assert.False(objUt.Validate());
        }
Пример #16
0
        public void CanValidateACsvDefinition()
        {
            var objUt = new CsvDefinition();

            objUt.Headers.AddItems("Column 1", "Column 2", "TOTAL");
            objUt.Rows.AddItems(
                new CsvRow
            {
                new CsvCell("Column 1", 10),
                new CsvCell("Column 2", 20),
                new CsvCell("TOTAL", 30)
            },
                new CsvRow
            {
                new CsvCell("Column 1", 11),
                new CsvCell("Column 2", 21),
                new CsvCell("TOTAL", 31)
            });

            Assert.True(objUt.Validate());
        }
Пример #17
0
        /// <summary>
        /// Writes the array according to the specified definition.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="rows">The rows.</param>
        /// <param name="definition">The definition.</param>
        public void Write <T>(Stream stream, T[] rows, CsvDefinition <T> definition)
        {
            var writer = new StreamWriter(stream, definition.Encoding);


            WriteBitOrderMarker <T>(stream, definition);

            if (definition.FirstRowContainsHeaders)
            {
                this.AddHeader <T>(writer, definition, rows);
            }

            foreach (var row in rows)
            {
                this.AddLine <T>(writer, definition, row);
            }

            writer.Flush();

            stream.Flush();
        }
Пример #18
0
        public static void ImportHeaderHistory(object sender, DoWorkEventArgs e)
        {
            string filename = e.Argument as string;
            BackgroundWorker worker = sender as BackgroundWorker;
            Dictionary<string, Dictionary<DateTime, string>> HeaderRoutes = new Dictionary<string,Dictionary<DateTime,string>>();

            CsvDefinition def = new CsvDefinition() { FieldSeparator = ',' };
            CsvFileReader<HeaderHistory> reader = new CsvFileReader<HeaderHistory>(filename, def);
            string traincode = "";
            int count = 0;
            foreach(HeaderHistory hh in reader)
            {
                if(hh.trainDate < new DateTime(2010,1,1)){count++; continue;}
                if (hh.trainCode != traincode)
                {
                    worker.ReportProgress(0, "Processing... HeaderCode : " + hh.trainCode + "     Lines Processed : " + count.ToString());
                    HeaderRoutes.Add(hh.trainCode, new Dictionary<DateTime, string>());
                    traincode = hh.trainCode;
                }
                HeaderRoutes[traincode].Add(hh.trainDate, hh.trainRoute);
            }

            DataContainer.NeuralNetwork.HeaderRoutes = HeaderRoutes;
        }
Пример #19
0
 protected MetadataCsvAbstract(string filename)
 {
     Filename   = filename;
     Definition = CsvDefinition.SemiColumnDoubleQuote();
 }
Пример #20
0
 private static HeaderCollection GetHeaderNames <T>(CsvDefinition <T> definition, ICsvColumn <T> column, T[] rows)
 {
     return(column.GetWritingHeaderNames(rows));
 }
Пример #21
0
        public static void ImportDelayCombinations(object sender, DoWorkEventArgs e)
        {
            string filename = e.Argument as string;
            BackgroundWorker worker = sender as BackgroundWorker;
            DataContainer.NeuralNetwork.DelayCombinations = new Data.DelayCombinationCollection();

            CsvDefinition def = new CsvDefinition() { FieldSeparator = ',' };
            CsvFileReader<Record> reader = new CsvFileReader<Record>(filename, def);
            DateTime date = new DateTime();
            DelayDay day = new DelayDay();
            int count = 0;
            foreach (Record record in reader)
            {
                if (record.trainDate != date)
                {
                    if (DataContainer.NeuralNetwork.DelayCombinations.dict.ContainsKey(date))
                    {
                        DataContainer.NeuralNetwork.DelayCombinations.dict[date].AddRange(day.FormCombinations());
                    }
                    else
                    {
                        DataContainer.NeuralNetwork.DelayCombinations.dict.Add(date, day.FormCombinations());
                    }
                    date = record.trainDate;
                    day = new DelayDay();
                    worker.ReportProgress(0, new string[] { record.trainDate.ToString(), count.ToString() });
                }
                //if (record.delayCode != string.Empty)// || record.difference > 120)
                //{
                    Delay delay = new Delay();
                    delay.traincode = record.trainCode;
                    delay.WLCheader = record.WLCTrainCode;
                    delay.date = record.trainDate;
                    delay.delaycode = record.delayCode;
                    if (record.locationType == "D") { delay.destinationdelay = record.difference; }
                    else { delay.origindelay = record.difference; }

                    if (day.delays.ContainsKey(delay.traincode)) { ((Delay)day.delays[delay.traincode]).destinationdelay = delay.destinationdelay; }
                    else { day.delays.Add(delay.traincode, delay); }

                //}
                count++;

            }
        }
Пример #22
0
        public void WhenAddingHeadersTheHeadersAreRequired()
        {
            var objUt = new CsvDefinition();

            Assert.Throws <ArgumentException>("headers", () => objUt.AddHeaders());
        }
Пример #23
0
 public ResultSetCsvWriter(string persistancePath, CsvDefinition definition)
     : base(persistancePath)
 {
     Definition = definition;
 }
Пример #24
0
 public ResultSetCsvReader(CsvDefinition definition)
 {
     Definition = definition;
 }
Пример #25
0
 public ResultSetCsvReader(CsvDefinition definition)
 {
     Definition = definition;
 }
Пример #26
0
 public ResultSetCsvWriter(string persistancePath) : base(persistancePath)
 {
     Definition = CsvDefinition.SemiColumnDoubleQuote();
 }
Пример #27
0
 public ResultSetCsvReader() : this(CsvDefinition.SemiColumnDoubleQuote())
 {
 }
Пример #28
0
 public ResultSetCsvWriter(string persistancePath, CsvDefinition definition) : base(persistancePath)
 {
     Definition = definition;
 }
Пример #29
0
        public static void TimetableFromCsv(object sender, DoWorkEventArgs e)
        {
            DateTime ThresholdDate = new DateTime(2010, 1, 1);

            if (DataContainer.model == null)
            {
                DataContainer.model = new railml();
            }
            DataContainer.model.timetable = new timetable();
            Dictionary <string, int> categories = new Dictionary <string, int>();
            string           filename           = e.Argument as string;
            BackgroundWorker worker             = sender as BackgroundWorker;

            CsvDefinition def = new CsvDefinition()
            {
                FieldSeparator = ','
            };
            CsvFileReader <TimetableEntry> reader = new CsvFileReader <TimetableEntry>(filename, def);
            int              count      = 0;
            RuntimeRep       rep        = new RuntimeRep();
            List <StopDelay> stopdelays = new List <StopDelay>();
            string           traincode  = "";

            foreach (TimetableEntry entry in reader)
            {
                if (entry.TrainDate < ThresholdDate)
                {
                    count++; continue;
                }



                string category = entry.TrainOrigin + "to" + entry.TrainDestination;
                if (categories.ContainsKey(category))
                {
                    categories[category] = (int)categories[category] + 1;
                }
                else
                {
                    categories.Add(category, 1);
                    //eCategory cat = new eCategory();
                    //cat.id = category;
                    //cat.name = category;
                    //DataContainer.model.timetable.categories.Add(cat);
                    //eRostering roster = new eRostering();
                    //DataContainer.IDGenerator(roster);
                    //roster.name = category;
                    //DataContainer.model.timetable.rosterings.Add(roster);
                }

                if (entry.TrainDate != date || entry.TrainCode != traincode)
                {
                    AddStopDelays(stopdelays, traincode, date);
                    stopdelays = new List <StopDelay>();
                    if (rep.traincode != null)
                    {
                        trainvariations.AddRep(rep, date);
                    }
                    if (entry.TrainCode != traincode)
                    {
                        if (trainvariations != null)
                        {
                            string cat = categories.FirstOrDefault(x => x.Value == categories.Values.Max()).Key;
                            trainvariations.category = cat;
                            categories = new Dictionary <string, int>();
                            if (!DataContainer.model.timetable.rosterings.Any(x => x.name == cat))
                            {
                                eRostering roster = new eRostering()
                                {
                                    name  = cat,
                                    scope = "scheduled"
                                };
                                DataContainer.IDGenerator(roster);
                                DataContainer.model.timetable.rosterings.Add(roster);
                            }
                            ProcessTimetableVariations(trainvariations);
                        }
                        trainvariations           = new TrainVariations();
                        trainvariations.traincode = entry.TrainCode;
                        worker.ReportProgress(0, new string[] { traincode, count.ToString() });
                        traincode = entry.TrainCode;
                    }

                    rep             = new RuntimeRep();
                    date            = entry.TrainDate;
                    rep.traincode   = entry.TrainCode;
                    rep.destination = entry.TrainDestination;
                    rep.origin      = entry.TrainOrigin;
                }

                if (entry.LocationType == "O")
                {
                    rep.departuretime = default(DateTime).Add(entry.ScheduledDeparture.TimeOfDay);
                }
                else if (entry.LocationType == "D")
                {
                    rep.arrivaltime = default(DateTime).Add(entry.ScheduledArrival.TimeOfDay);
                }
                else if (entry.LocationType == "S")
                {
                    Stop stop = new Stop()
                    {
                        location = entry.LocationCode, arrival = entry.ScheduledArrival, departure = entry.ScheduledDeparture
                    };
                    rep.stops.Add(stop);
                    if (entry.Arrival != default(DateTime) && entry.Departure != default(DateTime))
                    {
                        StopDelay delay = new StopDelay()
                        {
                            location = entry.LocationCode, departuredelay = (entry.Departure - entry.ScheduledDeparture).TotalSeconds, arrivaldelay = (entry.Arrival - entry.ExpectedArrival).TotalSeconds
                        };
                        stopdelays.Add(delay);
                    }
                }

                //if (count > 300000) { break; }
                count++;
            }
            // Append the last trainvariation to the totalvariations list
            if (trainvariations != null)
            {
                string cat = categories.FirstOrDefault(x => x.Value == categories.Values.Max()).Key;
                trainvariations.category = cat;
                categories = new Dictionary <string, int>();
                ProcessTimetableVariations(trainvariations);
                if (!DataContainer.model.timetable.rosterings.Any(x => x.name == cat))
                {
                    eRostering roster = new eRostering()
                    {
                        name  = cat,
                        scope = "scheduled"
                    };
                    DataContainer.IDGenerator(roster);
                    DataContainer.model.timetable.rosterings.Add(roster);
                }
            }

            e.Result = unhandled;
        }
Пример #30
0
 private IEnumerable <string> GetHeaderNames <T>(CsvDefinition <T> definition, ICsvColumn <T> column, T[] rows)
 {
     return(column.GetWritingHeaderNames(rows).Select(header => GetColumnHeaderWithoutEnters(header)));
 }
Пример #31
0
        private void AddHeader <T>(StreamWriter writer, CsvDefinition <T> definition, T[] rows)
        {
            var headers = definition.Columns.SelectMany(column => GetHeaderNames <T>(definition, column, rows)).ToArray();

            writer.WriteLine(string.Join(definition.ElementDelimiter, headers));
        }
        void cellStrings_should_escapeSpecialChars(string input, string expected)
        {
            var result = CsvDefinition <DemoModel> .Escape(input, escapeChars);

            Assert.Equal(expected, result);
        }
Пример #33
0
        public static void ImportDelayCombinations(object sender, DoWorkEventArgs e)
        {
            string           filename = e.Argument as string;
            BackgroundWorker worker   = sender as BackgroundWorker;

            DataContainer.NeuralNetwork.DelayCombinations = new Data.DelayCombinationCollection();

            CsvDefinition def = new CsvDefinition()
            {
                FieldSeparator = ','
            };
            CsvFileReader <Record> reader = new CsvFileReader <Record>(filename, def);
            DateTime date  = new DateTime();
            DelayDay day   = new DelayDay();
            int      count = 0;

            foreach (Record record in reader)
            {
                if (record.trainDate != date)
                {
                    if (DataContainer.NeuralNetwork.DelayCombinations.dict.ContainsKey(date))
                    {
                        DataContainer.NeuralNetwork.DelayCombinations.dict[date].AddRange(day.FormCombinations());
                    }
                    else
                    {
                        DataContainer.NeuralNetwork.DelayCombinations.dict.Add(date, day.FormCombinations());
                    }
                    date = record.trainDate;
                    day  = new DelayDay();
                    worker.ReportProgress(0, new string[] { record.trainDate.ToString(), count.ToString() });
                }
                //if (record.delayCode != string.Empty)// || record.difference > 120)
                //{
                Delay delay = new Delay();
                delay.traincode = record.trainCode;
                delay.WLCheader = record.WLCTrainCode;
                delay.date      = record.trainDate;
                delay.delaycode = record.delayCode;
                if (record.locationType == "D")
                {
                    delay.destinationdelay = record.difference;
                }
                else
                {
                    delay.origindelay = record.difference;
                }

                if (day.delays.ContainsKey(delay.traincode))
                {
                    ((Delay)day.delays[delay.traincode]).destinationdelay = delay.destinationdelay;
                }
                else
                {
                    day.delays.Add(delay.traincode, delay);
                }

                //}
                count++;
            }
        }
Пример #34
0
        private void AddLine <T>(StreamWriter writer, CsvDefinition <T> definition, T item)
        {
            var values = definition.Columns.SelectMany(e => e.Render(definition, item, definition.FormattingCulture, formatter)).ToArray();

            writer.WriteLine(string.Join(definition.ElementDelimiter, values));
        }