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); }
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); }
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); }
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); }
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); }