Пример #1
0
        public void ParseCsvFileTest()
        {
            string filePath = Path.Combine(this.TestContext.TestDeploymentDir, "Files\\1095_Import_Employees.csv");

            ICsvFileParser parser = new CsvFileParser(filePath);
            IDictionary <int, IList <string> > fileErrors = new Dictionary <int, IList <string> >();
            IObjectValidator validator = new ObjectValidator();

            int rowIndex = parser.RowStart;

            foreach (dynamic row in parser.ParseFile())
            {
                List <string> errors = new List <string>();

                Employee rowObj = FileIOUtilities.MapObject <Employee>(row, rowIndex, validator, null, ref errors);
                //rowObj.MapValues(rowIndex, row, validator, ref errors);
                validator.TryValidate(rowObj, ref errors);

                if (errors.Count > 0)
                {
                    fileErrors.Add(rowIndex, errors);
                }
                rowIndex++;
            }

            Assert.IsTrue(fileErrors.Count >= 2);
        }
Пример #2
0
        public static void CsvImport1(string path)
        {
            Console.WriteLine("Running CsvImport1");
            ICsvFileParser parser = new CsvFileParser(path);

            IImportFileParameters <Company> insertParameters = new ImportFileParameters <Company>(parser, "dbo.ImportCompanies", "Company_Import_tt");

            insertParameters.ProcedureParameterName = "@data";
            insertParameters.CustomSqlMapper        = Common.MapValues;
            insertParameters.ErrorColumnName        = "ImportErrors";

            var repo = new FileDataImportRepository();

            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString))
            {
                conn.Open();

                using (SqlTransaction tran = conn.BeginTransaction())
                {
                    repo.ImportFile <Company>(tran, insertParameters);

                    tran.Commit();
                }
            }
        }
        private static ParseResult <TransactionFileRecordModel> ParseFile(Stream stream)
        {
            var parser = new CsvFileParser <TransactionFileRecordModel, TransactionFileRecordMap> {
                Delimiter = ";"
            };

            using (stream)
            {
                return(parser.Parse(stream));
            }
        }
Пример #4
0
        private void PrepareInitialDataProvider()
        {
            CsvFileParser               csvParser            = new CsvFileParser();
            ParsingResultValidator      validator            = new ParsingResultValidator();
            InitialDataFilePathProvider filePathProviderMock = new InitialDataFilePathProvider {
                FilePath = _initialDataFilePath
            };
            FileValidationOperationResultLogger resultLogger = new FileValidationOperationResultLogger(new FileOperations());

            _initialDataProvider = new CsvDataProvider(csvParser, validator, filePathProviderMock, resultLogger);
        }
Пример #5
0
        public ActionResult ImportorEditor()
        {
            HttpFileCollection files  = System.Web.HttpContext.Current.Request.Files;
            string             outmsg = string.Empty;
            bool success = false;

            if (files.Count > 0)
            {
                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFile file1    = files[i];
                    Stream         stream   = file1.InputStream;
                    DataTable      dt       = new DataTable();
                    string         fileName = System.IO.Path.GetFileNameWithoutExtension(file1.FileName);
                    string         fileType = System.IO.Path.GetExtension(file1.FileName).ToLower();
                    switch (fileType)
                    {
                    case ".csv":
                        CsvFileParser cfp = new CsvFileParser();
                        dt = cfp.TryParse(stream, out outmsg);
                        break;

                    case ".xls":
                    case ".xlsx":
                        success = false;
                        //outmsg = "文件:" + fileName + "的文件格式接口待开发!<br />";
                        IExcel  excel = ExcelFactory.CreateDefault();
                        DataSet ds    = excel.Read(stream);
                        dt = ds.Tables[0];
                        break;

                    default:
                        success = false;
                        outmsg += "文件:" + fileName + "格式不支持!<br />";
                        break;
                    }
                    success = new Manager.PayManager().ImportInsurance(dt, fileName, ref outmsg);
                }
            }
            else
            {
                outmsg += "未获取到文件,请重试!<br />";
            }
            if (success)
            {
                outmsg = "上传成功!<br />" + outmsg;
            }
            else
            {
                outmsg = "上传失败!<br />" + outmsg;
            }
            return(Json(outmsg));
        }
Пример #6
0
        public IntoConstraints <TLine, TResultSet> Into(Expression <Func <TLine, TMember> > intoMember)
        {
            if (_columnName.IsEmpty())
            {
                CsvFileParser.AddColumn(_columnIndex, intoMember, _inThisWay, _validator);
            }
            else
            {
                CsvFileParser.AddColumn(_columnName, intoMember, _inThisWay, _validator);
            }

            return(new IntoConstraints <TLine, TResultSet>(CsvFileParser, ResultSet));
        }
Пример #7
0
        private CsvFileParser <TLine> GetParser <TLine>()
            where TLine : new()
        {
            var parser = new CsvFileParser <TLine>(CsvParameters.Source,
                                                   CsvParameters.DataSplitter, CsvParameters.CultureInfo)
            {
                ColumnDelimiter          = CsvParameters.ColumnDelimiter,
                LineDelimiter            = CsvParameters.EndLineDelimiter,
                HeadersAsCaseInsensitive = CsvParameters.HeaderCaseInsensitive,
            };

            if (CsvParameters.FirstLineHasHeader)
            {
                parser.DeclareFirstLineHasHeader();
            }

            return(parser);
        }
Пример #8
0
        private static CsvFileParser Initialize()
        {
            CsvFileParser parser = null;

            while (parser == null)
            {
                ShowStartupMenu();

                var choice = Console.ReadKey().KeyChar.ToString();
                Console.WriteLine(Environment.NewLine);
                try
                {
                    switch (choice)
                    {
                    case "1":
                        SetPathsMenu();
                        SetFileExtensionForTr1();
                        parser = BuildTr1FileParser();
                        break;

                    case "2":
                        SetPathsMenu();
                        SetFileExtensionForTr2();
                        parser = BuildTr2FileParser();
                        break;

                    case "3":
                        Environment.Exit(0);
                        break;

                    default:
                        Console.WriteLine($"Prosze wybrac Poprawna opcje! {Environment.NewLine}");
                        continue;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.WriteLine(Environment.NewLine);
                }
            }

            return(parser);
        }
Пример #9
0
        private static void Main(string[] args)
        {
            fileParser = Initialize();

            try
            {
                fileParser.Parse();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                fileParser.Cleanup();
            }

            Console.WriteLine($"{Environment.NewLine}Program zakonczyl dzialanie. Nacisnij dowolny przycisk by zamknac okno...");
            Console.ReadKey();
        }
        public void RunTest_TabularItem()
        {
            var csvStringBuilder = new StringBuilder();

            csvStringBuilder.AppendLine("12, 9,7,6,4");
            csvStringBuilder.AppendLine("12,11,8,7,5");
            csvStringBuilder.AppendLine("13,10,9,6,3");
            csvStringBuilder.Append("12,8,6,4,2");
            var csvString       = csvStringBuilder.ToString();
            var csvStringReader = new StringReader(csvString);

            var parser    = new IntegerParser <string>();
            var csvParser = new CsvFileParser <ITabularItem, int, string, string>(
                "new_line",
                "comma",
                (i, j) => parser);

            csvParser.AddIgnoreType("space");
            csvParser.AddIgnoreType("carriage_return");

            var csvSymbolReader = new StringSymbolReader(csvStringReader, true, false);
            var adder           = new TabularItemAdder <int>();
            var tabularItem     = new TabularListsItem();

            csvParser.Parse(csvSymbolReader, tabularItem, adder);

            var integerDomain        = new IntegerDomain();
            var numberTdecomposition = new IntegerMinWeightTdecomposition <int>(
                Comparer <int> .Default,
                integerDomain);

            var result          = numberTdecomposition.Run(18, tabularItem);
            var expectedMedians = new List <int>()
            {
                3, 5, 5, 5
            };

            Assert.AreEqual(17, result.Cost);
            CollectionAssert.AreEquivalent(expectedMedians, result.Medians.ToList());
        }
Пример #11
0
        public static IList <Company> ReadCsvFile1()
        {
            Console.WriteLine("Running ReadCsvFile1");
            var parser     = new CsvFileParser(Common.CsvDataPath);
            var fileErrors = new Dictionary <int, IList <string> >();
            var validator  = new ObjectValidator();

            //parser.Delimiters // can adjust the delimiters
            //parser.FixedWidths // can parse fixed widths

            var rowIndex  = parser.RowStart;
            var companies = new List <Company>();

            foreach (dynamic row in parser.ParseFile())
            {
                var errors = new List <string>();

                var rowObj = FileIOUtilities.MapObject <Company>(row, rowIndex, validator, null, ref errors);
                validator.TryValidate(rowObj, ref errors);
                companies.Add(rowObj);

                if (errors.Count > 0)
                {
                    fileErrors.Add(rowIndex, errors);
                }
                rowIndex++;
            }

            foreach (var errs in fileErrors)
            {
                foreach (var err in errs.Value)
                {
                    Console.WriteLine("Line:{0}, Error: {1}", errs.Key, err);
                }
            }

            return(companies);
        }
Пример #12
0
        static void Main(string[] args)
        {
            var entries = CsvFileParser.ParseFile(@"D:\temp\temperatures.csv").ToList();

            Console.WriteLine($"Total number of entries: {entries.Count}");

            var analyzer = new TemperatureAnalyzer(entries);

            var firstEntryBelowZero = analyzer.FirstEntryBelowZero();
            var coldest             = analyzer.ColdestEntry();
            var warmest             = analyzer.WarmestEntry();

            Console.WriteLine($"First entry below zero: {firstEntryBelowZero}");
            Console.WriteLine($"Coldest: {coldest}");
            Console.WriteLine($"Warmest: {warmest}");

            var averages = analyzer.AveragePerDay();

            foreach (var averageTemp in averages)
            {
                Console.WriteLine($"{averageTemp.Date.ToShortDateString()}: {Math.Round(averageTemp.Average, 1)}");
            }
        }
Пример #13
0
 protected ParserContainer(CsvFileParser <T> parser, TResultSet resultSet)
 {
     CsvFileParser = parser;
     ResultSet     = resultSet ?? throw new ArgumentNullException(nameof(resultSet));
 }
Пример #14
0
 public ColumnsBuilder(CsvFileParser <TLine> parser, TResultSet resultSet)
 {
     Put = new ColumnFluentBuilder <TLine, TResultSet>(parser, resultSet);
 }
Пример #15
0
 internal ChoiceBetweenAsAndInto(CsvFileParser <TLine> parser, string columnName, TResultSet resultSet, Func <string, Data> validation = null) : base(parser, resultSet)
 {
     _intoBuilder      = new IntoBuilder <TLine, string, TResultSet>(CsvFileParser, columnName, resultSet, validator: validation);
     _asBuilder        = new AsBuilder <TLine, TResultSet>(CsvFileParser, columnName, resultSet, validation);
     _inThisWayBuilder = new InThisWayBuilder <TLine, string, TResultSet>(CsvFileParser, columnName, resultSet, validation);
 }
Пример #16
0
        public void UpdateData(IWizardImporterSettings settings)
        {
            var data = CsvFileParser.ParseFileToDataTable(settings.PathToFile, true);

            settings.Data = data;
        }
Пример #17
0
        public void UpdatePreview(IWizardImporterSettings settings)
        {
            var preview = CsvFileParser.ParseFileToDataTable(settings.PathToFile, true, null, null, 10);

            settings.Preview = preview;
        }
Пример #18
0
 internal IntoConstraints(CsvFileParser <TLine> csvParameters, TResultSet resultSet) : base(csvParameters, resultSet)
 {
     Put = new ColumnFluentBuilder <TLine, TResultSet>(CsvFileParser, resultSet);
 }
Пример #19
0
 public TResultSet GetAll()
 {
     return(CsvFileParser.Parse(ResultSet));
 }
Пример #20
0
 internal AsBuilder(CsvFileParser <TLine> parser, string columnName, TResultSet resultSet, Func <string, Data> dataValidation = null) : base(parser, resultSet)
 {
     _columnName     = columnName;
     _dataValidation = dataValidation;
 }
Пример #21
0
 internal AsBuilder(CsvFileParser <TLine> parser, int columnIndex, TResultSet resultSet, Func <string, Data> dataValidation = null) : base(parser, resultSet)
 {
     _columnIndex    = columnIndex;
     _dataValidation = dataValidation;
 }
Пример #22
0
 internal AsMethods(CsvFileParser <TLine> parser, string columnName, TResultSet resultSet, Func <string, Data> dataValidator = null) : base(parser, resultSet)
 {
     _inThisWayBuilder = new InThisWayBuilder <TLine, TMember, TResultSet>(CsvFileParser, columnName, resultSet, dataValidator);
     _intoBuilder      = new IntoBuilder <TLine, TMember, TResultSet>(CsvFileParser, columnName, resultSet, validator: dataValidator);
 }
Пример #23
0
 internal ChooseWithValidation(CsvFileParser <TLine> parser, int columnIndex, TResultSet resultSet) : base(parser, columnIndex, resultSet)
 {
     _parser      = parser;
     _columnIndex = columnIndex;
     _resultSet   = resultSet;
 }
Пример #24
0
 internal ChooseWithValidation(CsvFileParser <TLine> parser, string columnName, TResultSet resultSet) : base(parser, columnName, resultSet)
 {
     _parser     = parser;
     _columnName = columnName;
     _resultSet  = resultSet;
 }
Пример #25
0
 public void SetUp()
 {
     _csvFileParser = new CsvFileParser();
 }
Пример #26
0
 public ColumnFluentBuilder(CsvFileParser <TLine> parser, TResultSet resultSet) : base(parser, resultSet)
 {
 }
Пример #27
0
 internal InThisWayBuilder(CsvFileParser <TLine> csvParameters, string columnName, TResultSet resultSet, Func <string, Data> dataValidation = null) : base(csvParameters, resultSet)
 {
     _columnName     = columnName;
     _dataValidation = dataValidation;
 }
Пример #28
0
 public CsvFileParserTests()
 {
     _csvFileParser = new CsvFileParser();
 }
Пример #29
0
        /// <summary>
        /// Searches for WaterOneFlow service info in a DataTable, and adds info about those services to the data grid view
        /// </summary>
        /// <param name="pathToFile">Path to CSV file</param>
        /// <param name="e">Parameters from the BackgroundWorker</param>
        /// <returns>Parameters (task type, output message, rows to add to view) to be processed by a BackgroundWorker event handler</returns>
        private object[] AddServicesFromDataTable(string pathToFile, DoWorkEventArgs e)
        {
            // Build parameters to pass to the background worker
            object[] parameters = new object[3];
            parameters[0] = BackgroundWorkerTasks.AddServicesFromFile;
            parameters[1] = "Operation cancelled";

            // Read the CSV file into a DataTable
            bgwMain.ReportProgress(0, "Opening file, please wait...");

            DataTable dataTable = null;

            try
            {
                dataTable = CsvFileParser.ParseFileToDataTable(pathToFile, true);
            }
            catch (Exception ex)
            {
                throw new Exception("Could not read file. " + ex.Message);
            }

            // Get the columns from the table
            int colTitle    = dataTable.Columns.IndexOf("Title");
            int colUrl      = dataTable.Columns.IndexOf("URL");
            int colCode     = dataTable.Columns.IndexOf("Code");
            int colCitation = dataTable.Columns.IndexOf("Citation");
            int colAbstract = dataTable.Columns.IndexOf("Abstract");
            int colWebsite  = dataTable.Columns.IndexOf("Website");
            int colName     = dataTable.Columns.IndexOf("Contact");
            int colEmail    = dataTable.Columns.IndexOf("Email");

            if (colUrl == -1)
            {
                throw new Exception("URL column not found in CSV file");
            }

            // Find items with an element providing the URL to a WaterOneFlow service
            int totalSteps  = dataTable.Rows.Count;
            int currentStep = 0;

            List <string[]> rowsToAdd = new List <string[]> ();

            foreach (DataRow dataRow in dataTable.Rows)
            {
                // Update progress
                if (bgwMain.CancellationPending)
                {
                    e.Cancel = true;
                    return(parameters);
                }

                currentStep++;
                bgwMain.ReportProgress(100 * currentStep / totalSteps, "Searching for WaterOneFlow service info: " + currentStep + " of " + totalSteps + "...");

                // Build service info from the row
                string title = "";
                if (colTitle != -1)
                {
                    title = dataRow[colTitle].ToString();
                }
                string url = "";
                if (colUrl != -1)
                {
                    url = dataRow[colUrl].ToString();
                    try
                    {
                        url = WebOperations.GetCanonicalUri(url, true);
                    }
                    catch
                    {
                        url = "";
                    }
                }
                string code = "";
                if (colCode != -1)
                {
                    code = dataRow[colCode].ToString();
                }
                string citation = "";
                if (colCitation != -1)
                {
                    citation = dataRow[colCitation].ToString();
                }
                string serviceAbstract = "";
                if (colAbstract != -1)
                {
                    serviceAbstract = dataRow[colAbstract].ToString();
                }
                string website = "";
                if (colWebsite != -1)
                {
                    website = dataRow[colWebsite].ToString();
                }
                string name = "";
                if (colName != -1)
                {
                    name = dataRow[colName].ToString();
                }
                string email = "";
                if (colEmail != -1)
                {
                    email = dataRow[colEmail].ToString();
                }

                // Create an item to add to the data grid view
                if (url != String.Empty)
                {
                    string[] row = { title, url, code, citation, serviceAbstract, website, name, email };

                    rowsToAdd.Add(row);
                }
            }

            // Prepare a message to the user
            string message       = "";
            int    servicesAdded = rowsToAdd.Count;

            if (servicesAdded == 0)
            {
                message = "No services found in file";
            }
            else if (servicesAdded == 1)
            {
                message = "1 service found in file";
            }
            else
            {
                message = servicesAdded.ToString() + " services found in file";
            }

            parameters[1] = message;
            parameters[2] = rowsToAdd;

            return(parameters);
        }
Пример #30
0
 internal IntoBuilder(CsvFileParser <TLine> parser, string columnName, TResultSet resultSet, Func <string, TMember> inThisWay = null, Func <string, Data> validator = null) : base(parser, resultSet)
 {
     _columnName = columnName;
     _inThisWay  = inThisWay;
     _validator  = validator;
 }