Пример #1
0
        public static void ProcessCsv_NotVbWithErrorHandling(string csvInput)
        {
            using (var csvReader = new StringReader(csvInput))
                using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader))
                {
                    // Skip the header line
                    if (!parser.EndOfData)
                    {
                        parser.ReadFields();
                    }

                    while (!parser.EndOfData)
                    {
                        try
                        {
                            var csvLine   = parser.ReadFields();
                            var name      = csvLine[0];
                            var birthDate = csvLine[1];
                            Console.WriteLine($"{name} was born on {birthDate}");
                        }
                        catch (NotVisualBasic.FileIO.CsvMalformedLineException ex)
                        {
                            Console.Error.WriteLine($"Failed to parse line {ex.LineNumber}: {parser.ErrorLine}");
                        }
                    }
                }
        }
Пример #2
0
 public static IEnumerable <IDictionary <string, string> > ParseCsvWithHeader(string csvInput)
 {
     using (var csvReader = new StringReader(csvInput))
         using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader))
         {
             if (parser.EndOfData)
             {
                 yield break;
             }
             string[] headerFields = parser.ReadFields();
             while (!parser.EndOfData)
             {
                 string[] fields     = parser.ReadFields();
                 int      fieldCount = Math.Min(headerFields.Length, fields.Length);
                 IDictionary <string, string> fieldDictionary = new Dictionary <string, string>(fieldCount);
                 for (var i = 0; i < fieldCount; i++)
                 {
                     string headerField = headerFields[i];
                     string field       = fields[i];
                     fieldDictionary[headerField] = field;
                 }
                 yield return(fieldDictionary);
             }
         }
 }
        public static object[,] GetArrayFromCsvFile(string file)
        {
            List <string[]> rawData = new List <string[]>();

            using (var csvReader = new FileStream(Path.Combine(Directory.GetCurrentDirectory(), file), FileMode.Open))
                using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader))
                {
                    while (!parser.EndOfData)
                    {
                        rawData.Add(parser.ReadFields());
                    }
                }

            var data = new object[rawData.Count, rawData[0].Length];

            for (int i = 0; i < rawData.Count; i++)
            {
                for (int j = 0; j < rawData[0].Length; j++)
                {
                    data[i, j] = rawData[i].GetValue(j);
                }
            }

            return(data);
        }
        public void ReadLine_SampleWithNewlineInQuotedField()
        {
            const string input = @"Name,Birth Date
""Creed, Apollo"",1942-08-17
""Ivan 
Drago"",1961-11-03
""Robert """"Rocky"""" Balboa"",1945-07-06";

            var parserReader = new StringReader(input);
            var parser       = new NotVisualBasic.FileIO.CsvTextFieldParser(parserReader);
            var vbParser     = new Microsoft.VisualBasic.FileIO.TextFieldParser(new StringReader(input));

            vbParser.SetDelimiters(",");

            Assert.Equal(vbParser.ReadFields(), parser.ReadFields());
            Assert.Equal(vbParser.ReadFields(), parser.ReadFields());
            Assert.Equal(vbParser.ReadLine(), parserReader.ReadLine());

            // The readline should have read into the middle of the field, which changes the parsing output
            Assert.Equal(new[] { @"Drago""", "1961-11-03" }, vbParser.ReadFields());
            Assert.Equal(new[] { @"Drago""", "1961-11-03" }, parser.ReadFields());

            Assert.Equal(vbParser.ReadFields(), parser.ReadFields());
            Assert.Null(vbParser.ReadFields());
            Assert.Null(parser.ReadFields());
            Assert.True(vbParser.EndOfData);
            Assert.True(parser.EndOfData);
        }
Пример #5
0
        private List <Tuple <string, int, int?> > ProcessCsv(string filepath, char delimiter = ',', char quoteCharacter = '\"', char quoteEscapeCharacter = '\"')
        {
            List <Tuple <string, int, int?> > result = new List <Tuple <string, int, int?> >();

            using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(filepath))
            {
                parser.SetDelimiter(delimiter);
                parser.SetQuoteCharacter(quoteCharacter);
                parser.SetQuoteEscapeCharacter(quoteEscapeCharacter);

                while (!parser.EndOfData)
                {
                    var line = parser.ReadFields();

                    int startingPage = 0;
                    if (Int32.TryParse(line[1], out startingPage))
                    {
                        int  endingPage      = 0;
                        bool endingPageGiven = (line.Length > 2) && Int32.TryParse(line[2], out endingPage);
                        result.Add(new Tuple <string, int, int?>(line[0], startingPage, endingPageGiven ? (int?)endingPage : null));
                    }
                    else
                    {
                        Properties.Settings.Default.Log += $"The Song \"{line[0]}\" has no page number ({line[1]}, {line[2]})." + System.Environment.NewLine;
                    }
                }
            }
            Properties.Settings.Default.Save();
            return(result);
        }
Пример #6
0
 public static void ProcessReadLineFromReader(string csvInput)
 {
     using (var csvReader = new StringReader(csvInput))
         using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader))
         {
             var fields = parser.ReadFields();
             var line   = csvReader.ReadLine();
         }
 }
Пример #7
0
        public void NotVBTextFieldParser()
        {
            var tr  = TestData.GetTextReader();
            var csv = new NotVisualBasic.FileIO.CsvTextFieldParser(tr);

            while (!csv.EndOfData)
            {
                var fields = csv.ReadFields();
            }
        }
Пример #8
0
        public static void CreateWithConfigurationOptions(TextReader csvReader)
        {
            var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader);

            parser.SetDelimiter('|');
            parser.Delimiters = new[] { "|" };
            parser.SetQuoteCharacter('\'');
            parser.SetQuoteEscapeCharacter('\\');
            parser.HasFieldsEnclosedInQuotes = false;
            parser.TrimWhiteSpace            = true;
        }
Пример #9
0
        public static string ReadLine(this NotVisualBasic.FileIO.CsvTextFieldParser parser)
        {
            var fields = parser.ReadFields();

            if (fields == null)
            {
                return(null);
            }

            return(string.Join(",", fields.Select(SerializeValue)));
        }
Пример #10
0
 public static IEnumerable <string> ProcessReadLineExtensionMethod(string csvInput)
 {
     using (var csvReader = new StringReader(csvInput))
         using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader))
         {
             string line;
             while ((line = parser.ReadLine()) != null)
             {
                 yield return(line);
             }
         }
 }
Пример #11
0
        public static List <string> ProcessCsv(string csvInput)
        {
            using (var csvReader = new StringReader(csvInput))
                using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader))
                {
                    parser.HasFieldsEnclosedInQuotes = true;



                    return(parser.ReadFields().ToList());
                }
        }
Пример #12
0
 public Waypoint(string wptText)
 {
     if (wptText.Length > 0)
     {
         using (var strm = wptText.ToStream())
             using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(strm))
             {
                 parser.SetDelimiter(' ');
                 var csvLine = parser.ReadFields();
                 X         = double.Parse((csvLine[1].Trim('(', ')')));
                 Y         = double.Parse((csvLine[2].Trim('(', ')')));
                 Name      = csvLine[3];
                 TimeStamp = DateTime.Parse(csvLine[4]);
             }
     }
 }
Пример #13
0
        public static IEnumerable <IDictionary <string, string> > ParseCsvWithHeaderIgnoreErrors(string csvInput)
        {
            using (var csvReader = new StringReader(csvInput))
                using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader))
                {
                    if (parser.EndOfData)
                    {
                        yield break;
                    }
                    string[] headerFields;
                    try
                    {
                        headerFields = parser.ReadFields();
                    }
                    catch (NotVisualBasic.FileIO.CsvMalformedLineException ex)
                    {
                        Console.Error.WriteLine($"Failed to parse header line {ex.LineNumber}: {parser.ErrorLine}");
                        yield break;
                    }
                    while (!parser.EndOfData)
                    {
                        string[] fields;
                        try
                        {
                            fields = parser.ReadFields();
                        }
                        catch (NotVisualBasic.FileIO.CsvMalformedLineException ex)
                        {
                            Console.Error.WriteLine($"Failed to parse line {ex.LineNumber}: {parser.ErrorLine}");
                            continue;
                        }

                        int fieldCount = Math.Min(headerFields.Length, fields.Length);
                        IDictionary <string, string> fieldDictionary = new Dictionary <string, string>(fieldCount);
                        for (var i = 0; i < fieldCount; i++)
                        {
                            string headerField = headerFields[i];
                            string field       = fields[i];
                            fieldDictionary[headerField] = field;
                        }
                        yield return(fieldDictionary);
                    }
                }
        }
Пример #14
0
        public List <T> GetRecords <T>(MemoryStream stream) where T : ICsvReadable, new()
        {
            var activate   = ActivatorFactory.Create <T>(_activationMethod);
            var allRecords = new List <T>();

            using (var reader = new StreamReader(stream))
            {
                var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(reader);
                while (!parser.EndOfData)
                {
                    var fields = parser.ReadFields();
                    var record = activate();
                    record.Read(i => fields[i]);
                    allRecords.Add(record);
                }
            }

            return(allRecords);
        }
        public void ReadLine_Sample()
        {
            const string input = @"Name,Birth Date
Apollo Creed,1942-08-17
Ivan Drago,1961-11-03";

            var parserReader = new StringReader(input);
            var parser       = new NotVisualBasic.FileIO.CsvTextFieldParser(parserReader);
            var vbParser     = new Microsoft.VisualBasic.FileIO.TextFieldParser(new StringReader(input));

            vbParser.SetDelimiters(",");

            Assert.Equal(vbParser.ReadLine(), parserReader.ReadLine());
            Assert.Equal(vbParser.ReadLine(), parserReader.ReadLine());
            Assert.Equal(vbParser.ReadLine(), parserReader.ReadLine());
            Assert.Null(vbParser.ReadFields());
            Assert.Null(parser.ReadFields());
            Assert.True(vbParser.EndOfData);
            Assert.True(parser.EndOfData);
        }
Пример #16
0
        public static void ProcessCsv_NotVb(string csvInput)
        {
            using (var csvReader = new StringReader(csvInput))
                using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader))
                {
                    // Skip the header line
                    if (!parser.EndOfData)
                    {
                        parser.ReadFields();
                    }

                    while (!parser.EndOfData)
                    {
                        var csvLine   = parser.ReadFields();
                        var name      = csvLine[0];
                        var birthDate = csvLine[1];
                        Console.WriteLine($"{name} was born on {birthDate}");
                    }
                }
        }
Пример #17
0
        public override async Task <string> Run(string arg, CommercePipelineExecutionContext context)
        {
            var importPolicy = context.GetPolicy <ImportSellableItemsPolicy>();
            var sellableItemComparerByProductId  = new ImportSellableItemComparer(SellableItemComparerConfiguration.ByProductId);
            var sellableItemComparerByImportData = new ImportSellableItemComparer(SellableItemComparerConfiguration.ByImportData);

            LogInitialization(context, importPolicy);

            try
            {
                var filePath = CommerceCommander.Command <GetFileCommand>().Process(context.CommerceContext, importPolicy.FileFolderPath, importPolicy.FilePrefix, importPolicy.FileExtention);
                if (string.IsNullOrEmpty(filePath))
                {
                    context.Logger.LogInformation($"{Name} - Skipping execution as there are no files to process.");
                    return(null);
                }

                using (var reader = new StreamReader(filePath))
                {
                    using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(reader))
                    {
                        parser.SetDelimiter(importPolicy.FileGroupSeparator);
                        // skip header
                        if (!parser.EndOfData)
                        {
                            parser.ReadFields();
                        }

                        while (!parser.EndOfData)
                        {
                            var importRawLines = new List <string[]>();
                            for (int i = 0; !parser.EndOfData && i <= importPolicy.ItemsPerBatch - 1; i++)
                            {
                                importRawLines.Add(parser.ReadFields());
                            }

                            var importItems = await CommerceCommander.Command <TransformImportToSellableItemsCommand>().Process(context.CommerceContext, importRawLines);

                            var existingItems = await CommerceCommander.Command <GetSellableItemsBulkCommand>().Process(context.CommerceContext, importItems);

                            var newItems     = importItems.Except(existingItems, sellableItemComparerByProductId).ToList();
                            var changedItems = existingItems.Except(importItems, sellableItemComparerByImportData).ToList();

                            await CommerceCommander.Command <CopyImportToSellableItemsCommand>().Process(context.CommerceContext, importItems, changedItems);

                            var associationsToCreate = importItems.SelectMany(i => i.GetPolicy <TransientImportSellableItemDataPolicy>().ParentAssociationsToCreateList).ToList();
                            var associationsToRemove = importItems.SelectMany(i => i.GetPolicy <TransientImportSellableItemDataPolicy>().ParentAssociationsToRemoveList).ToList();

                            RemoveTransientData(importItems);

                            await CommerceCommander.Command <PersistEntityBulkCommand>().Process(context.CommerceContext, newItems.Union(changedItems));

                            await CommerceCommander.Command <AssociateToParentBulkCommand>().Process(context.CommerceContext, associationsToCreate);

                            // TODO: Need to test the disassociate, haven't had time yet
                            await CommerceCommander.Command <DisassociateToParentBulkCommand>().Process(context.CommerceContext, associationsToRemove);

                            await Task.Delay(importPolicy.SleepBetweenBatches);
                        }
                    }
                }

                CommerceCommander.Command <MoveFileCommand>().Process(context.CommerceContext, importPolicy.FileArchiveFolderPath, filePath);
            }
            catch (Exception ex)
            {
                context.Abort(await context.CommerceContext.AddMessage(
                                  context.GetPolicy <KnownResultCodes>().Error,
                                  Name,
                                  new object[1] {
                    ex
                },
                                  $"{Name} Import Exception: {ex.Message}"),
                              context);
            }

            return(null);
        }
Пример #18
0
        public static void CreateWithCompatibilityMode(TextReader csvReader)
        {
            var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader);

            parser.CompatibilityMode = true;
        }