예제 #1
0
        public void CSVParseTestSuccess()
        {
            var dataSource         = new WindowsFileSystem(_csvDataFilePath);
            var dataFromFileSystem = dataSource.FetchData();

            var dataToImport = new CSVDataToImport(dataFromFileSystem);

            var dataSourceLocation         = new CSVDataSourceLocation(6, 3);
            var dataDateTimeSourceLocation = new CSVDataSourceLocation(6, 0);

            var parser = new CellParser(new DefaultParserFactory());

            var parseDoubleResult = parser.Parse(dataToImport, dataSourceLocation, typeof(double));

            Assert.NotNull(parseDoubleResult);
            Assert.AreEqual(parseDoubleResult.Level, ResultLevel.INFO);
            Assert.AreEqual(parseDoubleResult.Message, "Parsing value successfully");
            Assert.AreEqual(0.3, ((IParsingResult)parseDoubleResult).Value);

            var parseDateTimeResult = parser.Parse(dataToImport, dataDateTimeSourceLocation, typeof(DateTime));

            Assert.NotNull(parseDateTimeResult);
            Assert.AreEqual(parseDateTimeResult.Level, ResultLevel.INFO);
            Assert.AreEqual(parseDateTimeResult.Message, "Parsing value successfully");
            Assert.AreEqual(new DateTime(2013, 12, 12, 14, 0, 0), ((IParsingResult)parseDateTimeResult).Value);
        }
예제 #2
0
        public IEnumerable <ResultMessageViewModel> ImportLocalFiles()
        {
            var results = new List <ResultMessageViewModel>();

            var request = HttpContext.Current.Request;

            XMLDataToImport headerFileXMLFileToImport = null;

            if (request.Files.AllKeys.Contains(HeaderFileInputElementName))
            {
                var headerFile     = request.Files[HeaderFileInputElementName];
                var headerFileData = new DataFromFileSystem(headerFile.FileName, headerFile.InputStream);
                headerFileXMLFileToImport = new XMLDataToImport(headerFileData);
            }
            else
            {
                results.Add(new ResultMessageViewModel(ResultMessageViewModel.RESULT_LEVEL_WARN, "Header file is not uploaded, use default value."));
            }

            var sampleFile    = request.Files[SampleFileInputElementName];
            var chemistryFile = request.Files[ChemistryFileInputElementName];

            var sampleFileData            = new DataFromFileSystem(sampleFile.FileName, sampleFile.InputStream);
            var sampleFileCSVFileToImport = new CSVDataToImport(sampleFileData);

            var chemistryFileData        = new DataFromFileSystem(chemistryFile.FileName, chemistryFile.InputStream);
            var chemistryCSVFileToImport = new CSVDataToImport(chemistryFileData);

            var esdatDataToImport = new ESDATDataToImport(headerFileXMLFileToImport, sampleFileCSVFileToImport, chemistryCSVFileToImport);
            var importer          = ESDATDataImportHelper.BuildESDATDataImporter(_wqDefaultValueProvider);

            results.AddRange(PersistESDATData(esdatDataToImport, importer));

            return(results);
        }
        public void CSVParseTestSuccess()
        {

            var dataSource = new WindowsFileSystem(_csvDataFilePath);
            var dataFromFileSystem = dataSource.FetchData();

            var dataToImport = new CSVDataToImport(dataFromFileSystem);

            var dataSourceLocation = new CSVDataSourceLocation(6, 3);
            var dataDateTimeSourceLocation = new CSVDataSourceLocation(6, 0);
            
            var parser = new CellParser(new DefaultParserFactory());

            var parseDoubleResult = parser.Parse(dataToImport, dataSourceLocation, typeof(double));

            Assert.NotNull(parseDoubleResult);
            Assert.AreEqual(parseDoubleResult.Level, ResultLevel.INFO);
            Assert.AreEqual(parseDoubleResult.Message, "Parsing value successfully");
            Assert.AreEqual(0.3, ((IParsingResult)parseDoubleResult).Value);

            var parseDateTimeResult = parser.Parse(dataToImport, dataDateTimeSourceLocation, typeof(DateTime));

            Assert.NotNull(parseDateTimeResult);
            Assert.AreEqual(parseDateTimeResult.Level, ResultLevel.INFO);
            Assert.AreEqual(parseDateTimeResult.Message, "Parsing value successfully");
            Assert.AreEqual(new DateTime(2013, 12, 12, 14, 0, 0), ((IParsingResult)parseDateTimeResult).Value);
        }
예제 #4
0
        private CSVDataToImport CreateCSVDataToImport(string filePath)
        {
            var dataSource         = new WindowsFileSystem(filePath);
            var dataFromFileSystem = dataSource.FetchData();
            var dataToImport       = new CSVDataToImport(dataFromFileSystem);

            return(dataToImport);
        }
예제 #5
0
        public void CSVDataToImportReadDatFileTest()
        {
            var dataSource         = new WindowsFileSystem(_datDataFilePath);
            var dataFromFileSystem = dataSource.FetchData();

            var dataToImport = new CSVDataToImport(dataFromFileSystem);

            AssertData(Path.GetFileName(_datDataFilePath), dataToImport);
        }
        public void GetDataTest()
        {
            var xmlDataToImport  = new XMLDataToImport("test.xml", new System.Xml.Linq.XDocument());
            var csvDataToImport1 = new CSVDataToImport("test1.csv", new string[][] {});
            var csvDataToImport2 = new CSVDataToImport("test2.csv", new string[][] { });

            var dataToImport = new ESDATDataToImport(xmlDataToImport, csvDataToImport1, csvDataToImport2);

            Assert.AreEqual(dataToImport, dataToImport.Data);
        }
예제 #7
0
        private IDataToImport GetDataToImport(string fileName)
        {
            var path               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", fileName);
            var dataSource         = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();

            var dataToImport = new CSVDataToImport(dataFromFileSystem);

            return(dataToImport);
        }
예제 #8
0
        private void AssertData(string fileName, CSVDataToImport csvDataToImport)
        {
            Assert.AreEqual(fileName, csvDataToImport.FileName);
            Assert.NotNull(csvDataToImport);
            var castedData = csvDataToImport.Data as string[][];

            Assert.NotNull(castedData);
            Assert.AreEqual(12, castedData.Count());
            Assert.AreEqual("TOA5", castedData[0][0]);
        }
예제 #9
0
        private IExtractConfiguration CreateSampleFileDataExtractConfiguration()
        {
            var path               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "SampleFileExample.csv");
            var dataSource         = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();
            var dataToImport       = new CSVDataToImport(dataFromFileSystem);

            var simpleValueAssginer = new SimpleValueAssigner();

            var sampleDataImporter = ESDATTestHelper.BuildSampleDataFileImporter();

            var childObjectExtractConfiguration = new SampleFileChildObjectExtractConfiguration(sampleDataImporter, "SampleFileData", simpleValueAssginer);

            return(childObjectExtractConfiguration);
        }
예제 #10
0
        public void ExtractChemistryFileDataTest()
        {
            var path               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "ChemistryFileExample.csv");
            var dataSource         = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();

            var dataToImport = new CSVDataToImport(dataFromFileSystem);

            var chemistryFileImporter = BuildChemistryFileImporter();

            var extractResult = chemistryFileImporter.Extract <ChemistryFileData>(dataToImport);

            var allFailResults = extractResult.AllParsingResults.Where(x => x.Level == ResultLevel.ERROR).ToList();

            Assert.NotNull(extractResult);
            Assert.AreEqual(ResultLevel.ERROR, extractResult.ThresholdLevel);
            Assert.False(allFailResults.Any());
            Assert.AreEqual(true, extractResult.IsExtractedSuccess);
            Assert.AreEqual(9, extractResult.ExtractedEntities.Count());

            var firstEntity = extractResult.ExtractedEntities.FirstOrDefault();

            Assert.NotNull(firstEntity);
            Assert.AreEqual("5828314", firstEntity.SampleCode);
            Assert.AreEqual("100-41-4", firstEntity.ChemCode);
            Assert.AreEqual("Ethylbenzene", firstEntity.OriginalChemName);
            Assert.AreEqual("<", firstEntity.Prefix);
            Assert.AreEqual(0.0005, firstEntity.Result);
            Assert.AreEqual("mg/L", firstEntity.ResultUnit);
            Assert.AreEqual("T", firstEntity.TotalOrFiltered);
            Assert.AreEqual("REG", firstEntity.ResultType);
            Assert.AreEqual("Inorganic", firstEntity.MethodType);
            Assert.AreEqual("TO 0332", firstEntity.MethodName);
            Assert.AreEqual(new DateTime(2014, 9, 23), firstEntity.ExtractionDate);
            Assert.AreEqual(new DateTime(2014, 9, 24), firstEntity.AnalysedDate);
            Assert.AreEqual(0.0005, firstEntity.EQL);
            Assert.AreEqual("mg/L", firstEntity.EQLUnits);
            Assert.AreEqual(string.Empty, firstEntity.Comments);
            Assert.AreEqual(50.0d, firstEntity.UCL);
            Assert.AreEqual(null, firstEntity.LCL);
        }
        public void OutOfRangeTest()
        {
            var dataSourceLocation = new CSVDataSourceLocation(5, 0);
            var dataToImport       = new CSVDataToImport("test.csv",
                                                         new string[][] {
                new string[] { "1", "2", "3" }
            }
                                                         );

            var parserFactory = new DefaultParserFactory();

            var testCellParser = new CellParser(parserFactory);

            var testParsingResult = testCellParser.Parse(dataToImport, dataSourceLocation, typeof(int)) as ParsingResult;


            Assert.NotNull(testParsingResult);
            Assert.AreEqual(ResultLevel.FATAL, testParsingResult.Level);
            Assert.AreEqual("Index is out of range", testParsingResult.Message);
            Assert.Null(testParsingResult.Value);
        }
        public void PasingSuccessTest()
        {
            var dataSourceLocation = new CSVDataSourceLocation(0, 0);
            var dataToImport       = new CSVDataToImport("test.csv",
                                                         new string[][] {
                new string[] { "1", "2", "3" }
            }
                                                         );

            var parserFactory = new DefaultParserFactory();

            var testCellParser = new CellParser(parserFactory);

            var testParsingResult = testCellParser.Parse(dataToImport, dataSourceLocation, typeof(int)) as ParsingResult;


            Assert.NotNull(testParsingResult);
            Assert.AreEqual(ResultLevel.INFO, testParsingResult.Level);
            Assert.AreEqual("Parsing value successfully", testParsingResult.Message);
            Assert.AreEqual(1, (int)testParsingResult.Value);
        }
예제 #13
0
        public void ChemistryFilePropertyTest()
        {
            var path               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "ChemistryFileExample.csv");
            var dataSource         = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();
            var dataToImport       = new CSVDataToImport(dataFromFileSystem);

            var simpleValueAssginer = new SimpleValueAssigner();

            var chemistryImporter = ESDATTestHelper.BuildChemistryFileImporter();

            var childObjectExtractConfiguration = new ChemistryFileChildObjectExtractConfiguration(chemistryImporter, "ChemistryData", simpleValueAssginer);

            Assert.AreEqual(typeof(ChemistryFileData), childObjectExtractConfiguration.ChildObjectType);

            var testESDATModel = new ESDATModel();

            var extractResult = childObjectExtractConfiguration.ExtractData(testESDATModel, dataToImport);

            Assert.NotNull(extractResult);
            Assert.AreEqual(9, testESDATModel.ChemistryData.Count());
        }
        public void ChemistryFilePropertyTest()
        {
            var path               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "SampleFileExample.csv");
            var dataSource         = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();
            var dataToImport       = new CSVDataToImport(dataFromFileSystem);

            var simpleValueAssginer = new SimpleValueAssigner();

            var sampleDataImporter = ESDATTestHelper.BuildSampleDataFileImporter();

            var childObjectExtractConfiguration = new SampleFileChildObjectExtractConfiguration(sampleDataImporter, "SampleFileData", simpleValueAssginer);

            Assert.AreEqual(typeof(SampleFileData), childObjectExtractConfiguration.ChildObjectType);

            var testESDATModel = new ESDATModel();

            var extractResult = childObjectExtractConfiguration.ExtractData(testESDATModel, dataToImport);

            Assert.NotNull(extractResult);
            Assert.AreEqual(3, testESDATModel.SampleFileData.Count());

            var firstSampleData = testESDATModel.SampleFileData.FirstOrDefault();

            Assert.NotNull(firstSampleData);
            Assert.AreEqual("5828314", firstSampleData.SampleCode);
            Assert.AreEqual(new DateTime(2014, 9, 16), firstSampleData.SampledDateTime);
            Assert.AreEqual("FRL-1 @ 16:00", firstSampleData.FieldID);
            Assert.Null(firstSampleData.SampleDepth);
            Assert.AreEqual("Water", firstSampleData.MatrixType);
            Assert.AreEqual("Normal", firstSampleData.SampleType);
            Assert.AreEqual(string.Empty, firstSampleData.ParentSample);
            Assert.AreEqual("14J891101", firstSampleData.SDG);
            Assert.AreEqual("AGAT", firstSampleData.LabName);
            Assert.AreEqual("5828314", firstSampleData.LabSampleID);
            Assert.AreEqual(string.Empty, firstSampleData.Comments);
            Assert.AreEqual("14J891101", firstSampleData.LabReportNumber);
        }
예제 #15
0
        public IEnumerable <ResultMessageViewModel> ImportFtpFiles(FtpFileImportDataViewModel data)
        {
            XMLDataToImport headerFileXMLFileToImport = null;

            if (!string.IsNullOrEmpty(data.HeaderFileURL))
            {
                var headerFileHttpFileSystem = new FTPFileSystem(data.HeaderFileURL);
                headerFileXMLFileToImport = new XMLDataToImport(headerFileHttpFileSystem.FetchData());
            }

            var sampleFileFtpFileSystem   = new FTPFileSystem(data.SampleFileURL, data.UserName, data.Password);
            var sampleFileCSVFileToImport = new CSVDataToImport(sampleFileFtpFileSystem.FetchData());

            var chemistryFileFtpFileSystem = new FTPFileSystem(data.ChemistryFileURL, data.UserName, data.Password);
            var chemistryCSVFileToImport   = new CSVDataToImport(chemistryFileFtpFileSystem.FetchData());

            var esdatDataToImport = new ESDATDataToImport(headerFileXMLFileToImport, sampleFileCSVFileToImport, chemistryCSVFileToImport);
            var importer          = ESDATDataImportHelper.BuildESDATDataImporter(_wqDefaultValueProvider);

            var results = PersistESDATData(esdatDataToImport, importer);

            return(results);
        }
        public void ExtractSampleDataFileTest()
        {
            var path               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "SampleFileExample.csv");
            var dataSource         = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();

            var dataToImport = new CSVDataToImport(dataFromFileSystem);

            var sampleDataFileImporter = ESDATTestHelper.BuildSampleDataFileImporter();

            var extractResult = sampleDataFileImporter.Extract <SampleFileData>(dataToImport);

            var allFailResults = extractResult.AllParsingResults.Where(x => x.Level == ResultLevel.ERROR).ToList();

            Assert.NotNull(extractResult);
            Assert.AreEqual(ResultLevel.ERROR, extractResult.ThresholdLevel);
            Assert.False(allFailResults.Any());
            Assert.AreEqual(true, extractResult.IsExtractedSuccess);
            Assert.AreEqual(3, extractResult.ExtractedEntities.Count());

            var firstEntity = extractResult.ExtractedEntities.FirstOrDefault();

            Assert.NotNull(firstEntity);
            Assert.AreEqual("5828314", firstEntity.SampleCode);
            Assert.AreEqual(new DateTime(2014, 9, 16), firstEntity.SampledDateTime);
            Assert.AreEqual("FRL-1 @ 16:00", firstEntity.FieldID);
            Assert.Null(firstEntity.SampleDepth);
            Assert.AreEqual("Water", firstEntity.MatrixType);
            Assert.AreEqual("Normal", firstEntity.SampleType);
            Assert.AreEqual(string.Empty, firstEntity.ParentSample);
            Assert.AreEqual("14J891101", firstEntity.SDG);
            Assert.AreEqual("AGAT", firstEntity.LabName);
            Assert.AreEqual("5828314", firstEntity.LabSampleID);
            Assert.AreEqual(string.Empty, firstEntity.Comments);
            Assert.AreEqual("14J891101", firstEntity.LabReportNumber);
        }
        private IDataToImport GetDataToImport(string fileName)
        {
            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", fileName);
            var dataSource = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();

            var dataToImport = new CSVDataToImport(dataFromFileSystem);

            return dataToImport;
        }
예제 #18
0
        private string GetRawDataValue(CSVDataSourceLocation location, CSVDataToImport csvDataToImport)
        {
            var data = csvDataToImport.Data as string[][];

            return(data[location.Row][location.Column]);
        }
 private string GetRawDataValue(CSVDataSourceLocation location, CSVDataToImport csvDataToImport)
 {
     var data = csvDataToImport.Data as string[][];
     return data[location.Row][location.Column];
 }
예제 #20
0
 public ESDATDataToImport(XMLDataToImport headerFileToImport, CSVDataToImport sampleFileToImport, CSVDataToImport chemistryFileToImport)
 {
     _headerFileToImport    = headerFileToImport;
     _sampleFileToImport    = sampleFileToImport;
     _chemistryFileToImport = chemistryFileToImport;
 }