public void SqliteMapDbOutputs(IOutputDescription outputDescription, ref SqliteDBService theService, bool addFields) { // only fetch paths with valid data to map ;) var outputsToMap = outputDescription.DataSourceShapes[0].Paths.Where(p => !string.IsNullOrEmpty(p.DisplayPath) && p.DisplayPath != "DocumentElement"); var rsFields = new List <RecordsetField>(theService.Recordset.Fields); var recordsetIndex = 0; foreach (var path in outputsToMap) { // Remove bogus names and dots var name = path.DisplayPath.Replace("NewDataSet", "").Replace(".Table.", "").Replace("DocumentElement", ""); var alias = path.DisplayPath.Replace("NewDataSet", "").Replace(".Table.", "").Replace(".", "").Replace("DocumentElement", ""); var idx = name.IndexOf("()", StringComparison.InvariantCultureIgnoreCase); if (idx >= 0) { name = name.Remove(0, idx + 3); } idx = alias.IndexOf("()", StringComparison.InvariantCultureIgnoreCase); if (idx >= 0) { alias = alias.Remove(0, idx + 2); } var field = new RecordsetField { Name = name, Alias = string.IsNullOrEmpty(path.OutputExpression) ? alias : path.OutputExpression, Path = path }; RecordsetField rsField; if (!addFields && (rsField = rsFields.FirstOrDefault(f => f.Path != null ? f.Path.ActualPath == path.ActualPath : f.Name == field.Name)) != null) { field.Alias = rsField.Alias; } theService.Recordset.Fields.Add(field); // 2013.12.11 - COMMUNITY BUG - 341463 - data with empty cells displays incorrectly var data = path.SampleData.Split(new[] { GlobalConstants.AnytingToXmlCommaToken }, StringSplitOptions.None); var recordIndex = 0; foreach (var item in data) { theService.Recordset.SetValue(recordIndex, recordsetIndex, item); recordIndex++; } recordsetIndex++; } }
public override IOutputDescription TestSqliteService(SqliteDBService dbService) { VerifyArgument.IsNotNull("SqliteDBService", dbService); VerifyArgument.IsNotNull("SqliteDBService.Source", dbService.Source); IOutputDescription result; using (var server = CreateSqliteDbServer(dbService.Source as SqliteDBSource)) { server.Connect(((SqliteDBSource)dbService.Source).ConnectionString); server.BeginTransaction(); try { // // Execute command and normalize XML // var command = server.CreateCommand(); command.CommandText = dbService.Method.QueryString; var dataTable = server.FetchDataTable(command); // // Map shape of XML // result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); result.DataSourceShapes.Add(dataSourceShape); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); dataSourceShape.Paths.AddRange(dataBrowser.Map(dataTable)); } finally { server.RollbackTransaction(); } } return(result); }