예제 #1
0
        public IExtractedDataset <T> Extract <T>(IDataToImport dataToImport) where T : new()
        {
            var extractedDataset            = new ExtractedDataset <T>(_thresholdLevel);
            var validatedDataToImportResult = ValidateDataToImport(dataToImport);

            extractedDataset.AddParsingResults(validatedDataToImportResult.Item2);

            if (!validatedDataToImportResult.Item1)
            {
                //format not valid, return
                return(extractedDataset);
            }
            var results = new List <IResult>();
            var model   = new T();
            IDataSourceLocation currentLocation = null;

            foreach (var configuration in _extractConfigurations)
            {
                if (configuration is SimpleXMLExtractConfiguration)
                {
                    currentLocation = new XMLDataSourceLocation(((SimpleXMLExtractConfiguration)configuration).ElementName, ((SimpleXMLExtractConfiguration)configuration).AttributeName);
                }

                results.AddRange(((SimpleXMLExtractConfiguration)configuration).ExtractData(model, dataToImport, currentLocation));
            }

            var parsingResult = new ParsingResult(ResultLevel.DEBUG, "Extract data from single row success", model, null);

            results.Add(parsingResult);

            extractedDataset.AddParsingResults(results);

            return(extractedDataset);
        }
        public void NotSupportDataSourceTest()
        {
            var dataSourceLocation = new XMLDataSourceLocation("", "");
            var mockDataToImport = new Mock<IDataToImport>();

            var parserFactory = new DefaultParserFactory();

            var testCellParser = new ElementParser(parserFactory);

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


            Assert.NotNull(testParsingResult);
            Assert.AreEqual(ResultLevel.FATAL, testParsingResult.Level);
            Assert.AreEqual("Castle.Proxies.IDataToImportProxy is not supported by XML Node Parser", testParsingResult.Message);
            Assert.Null(testParsingResult.Value);
        }
예제 #3
0
        public void NotSupportDataSourceTest()
        {
            var dataSourceLocation = new XMLDataSourceLocation("", "");
            var mockDataToImport   = new Mock <IDataToImport>();

            var parserFactory = new DefaultParserFactory();

            var testCellParser = new ElementParser(parserFactory);

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


            Assert.NotNull(testParsingResult);
            Assert.AreEqual(ResultLevel.FATAL, testParsingResult.Level);
            Assert.AreEqual("Castle.Proxies.IDataToImportProxy is not supported by XML Node Parser", testParsingResult.Message);
            Assert.Null(testParsingResult.Value);
        }
        public void ParsingSuccessTest()
        {
            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "XMLSample.xml");
            var dataSource = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();
            var dataToImport = new XMLDataToImport(dataFromFileSystem);

            var dataSourceLocation = new XMLDataSourceLocation("LabReport", "Lab_Report_Number");

            var parserFactory = new DefaultParserFactory();

            var testCellParser = new ElementParser(parserFactory);

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

            Assert.NotNull(testParsingResult);
            Assert.AreEqual(ResultLevel.INFO, testParsingResult.Level);
            Assert.AreEqual("Parsing value successfully", testParsingResult.Message);
            Assert.AreEqual("LR04927",testParsingResult.Value);
        }
예제 #5
0
        public void ParsingSuccessTest()
        {
            var path               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "XMLSample.xml");
            var dataSource         = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();
            var dataToImport       = new XMLDataToImport(dataFromFileSystem);

            var dataSourceLocation = new XMLDataSourceLocation("LabReport", "Lab_Report_Number");

            var parserFactory = new DefaultParserFactory();

            var testCellParser = new ElementParser(parserFactory);

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

            Assert.NotNull(testParsingResult);
            Assert.AreEqual(ResultLevel.INFO, testParsingResult.Level);
            Assert.AreEqual("Parsing value successfully", testParsingResult.Message);
            Assert.AreEqual("LR04927", testParsingResult.Value);
        }
        public void OutOfRangeTest()
        {
            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "XMLSample.xml");
            var dataSource = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();

            var dataSourceLocation = new XMLDataSourceLocation("here","there");
            var dataToImport = new XMLDataToImport(dataFromFileSystem);
                                                    
            var parserFactory = new DefaultParserFactory();

            var testElementParser = new ElementParser(parserFactory);

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


            Assert.NotNull(testParsingResult);
            Assert.AreEqual(ResultLevel.FATAL, testParsingResult.Level);
            //Assert.AreEqual("Argument is out of range", testParsingResult.Message);
            Assert.Null(testParsingResult.Value);
        }
예제 #7
0
        protected IEnumerable <IResult> ExtractDataForSingleNode <T>(IList <IExtractConfiguration> extractConfigurations, IDataToImport dataToImport) where T : new()
        {
            var resultsForSingleNode = new List <IResult>();
            var model = new T();
            IDataSourceLocation currentLocation = null;

            foreach (var configuration in _extractConfigurations)
            {
                if (configuration is SimpleXMLExtractConfiguration)
                {
                    currentLocation = new XMLDataSourceLocation(((SimpleXMLExtractConfiguration)configuration).ElementName, ((SimpleXMLExtractConfiguration)configuration).AttributeName);
                }

                resultsForSingleNode.AddRange(((SimpleXMLExtractConfiguration)configuration).ExtractData(model, dataToImport, currentLocation));
            }
            var parsingResult = new ParsingResult(ResultLevel.DEBUG, "Extract data from single row success", model, new XMLDataSourceLocation("", ""));

            resultsForSingleNode.Add(parsingResult);

            return(resultsForSingleNode);
        }
예제 #8
0
        public void OutOfRangeTest()
        {
            var path               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataFiles", "XMLSample.xml");
            var dataSource         = new WindowsFileSystem(path);
            var dataFromFileSystem = dataSource.FetchData();

            var dataSourceLocation = new XMLDataSourceLocation("here", "there");
            var dataToImport       = new XMLDataToImport(dataFromFileSystem);

            var parserFactory = new DefaultParserFactory();

            var testElementParser = new ElementParser(parserFactory);

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


            Assert.NotNull(testParsingResult);
            Assert.AreEqual(ResultLevel.FATAL, testParsingResult.Level);
            //Assert.AreEqual("Argument is out of range", testParsingResult.Message);
            Assert.Null(testParsingResult.Value);
        }
        private string GetRawDataValue(XMLDataSourceLocation location, XMLDataToImport xmlDataToImport)
        {
            var data = xmlDataToImport.Data as XDocument;
            var value = "";

            if (data.Root.Name.LocalName == location.ElementName)
            {
                if (String.IsNullOrEmpty(location.AttributeName))
                {
                    return data.Root.Value;
                }
                else
                {
                    return data.Root.Attributes().Where(x => x.Name.LocalName == location.AttributeName).FirstOrDefault().Value;
                }
            }
            else
            {
                foreach (XElement element in data.Descendants())
                {
                    if (String.IsNullOrEmpty(location.ElementName))
                    {
                        return element.Descendants().Attributes().Where(x => x.Name.LocalName == location.AttributeName).FirstOrDefault().Value;
                    }
                    else if (String.IsNullOrEmpty(location.AttributeName))
                    {
                        var theElement = element.Descendants().Where(x => x.Name.LocalName == location.ElementName).First();
                        return theElement.Value;
                    }
                    else
                    {
                        var theElement = element.Descendants().Where(x => x.Name.LocalName == location.ElementName).First();
                        return theElement.Attributes().Where(x => x.Name.LocalName == location.AttributeName).First().Value;
                    }
                }
            }

            return value;
        }
        private IEnumerable <IResult> ExtractHeaderFile(object model, IList <IExtractConfiguration> extractConfiguration, IDataToImport xmlDataToImport)
        {
            var results = new List <IResult>();

            var validatedDataToImportResult = ValidateHeaderFileDataToImport(xmlDataToImport);

            results.AddRange(validatedDataToImportResult.Item2);

            IDataSourceLocation currentLocation = null;

            foreach (var configuration in extractConfiguration.Where(x => x is ISimpleExtractConfiguration))
            {
                if (configuration is SimpleXMLExtractConfiguration)
                {
                    currentLocation = new XMLDataSourceLocation(((SimpleXMLExtractConfiguration)configuration).ElementName, ((SimpleXMLExtractConfiguration)configuration).AttributeName);
                }

                results.AddRange(((SimpleXMLExtractConfiguration)configuration).ExtractData(model, xmlDataToImport, currentLocation));
            }

            return(results);
        }
        private string GetRawDataValue(XMLDataSourceLocation location, XMLDataToImport xmlDataToImport)
        {
            var data  = xmlDataToImport.Data as XDocument;
            var value = "";

            if (data.Root.Name.LocalName == location.ElementName)
            {
                if (String.IsNullOrEmpty(location.AttributeName))
                {
                    return(data.Root.Value);
                }
                else
                {
                    return(data.Root.Attributes().Where(x => x.Name.LocalName == location.AttributeName).FirstOrDefault().Value);
                }
            }
            else
            {
                foreach (XElement element in data.Descendants())
                {
                    if (String.IsNullOrEmpty(location.ElementName))
                    {
                        return(element.Descendants().Attributes().Where(x => x.Name.LocalName == location.AttributeName).FirstOrDefault().Value);
                    }
                    else if (String.IsNullOrEmpty(location.AttributeName))
                    {
                        var theElement = element.Descendants().Where(x => x.Name.LocalName == location.ElementName).First();
                        return(theElement.Value);
                    }
                    else
                    {
                        var theElement = element.Descendants().Where(x => x.Name.LocalName == location.ElementName).First();
                        return(theElement.Attributes().Where(x => x.Name.LocalName == location.AttributeName).First().Value);
                    }
                }
            }

            return(value);
        }