public List <MSSQLTable <TableContent, ColumnContent> > Load(params string[] contentFiles) { Contract.Requires(contentFiles != null); Contract.Requires(contentFiles.Length != 0); List <MSSQLTable <TableContent, ColumnContent> > tables; #region Load { var rows = DataSheetManager.Read(contentFiles[0], TableDescriptor.GetRead("Tables{T}", 3)).Tables[0].Rows.Cast <DataRow>(); if (!string.IsNullOrEmpty(_tableGroupFilter)) { rows = rows.Where(row => string.Equals(row[2].ToString(), _tableGroupFilter, StringComparison.InvariantCultureIgnoreCase)); } var tableNames = rows.Select(row => row[1].ToString()).ToArray(); tables = _loader.Load(tableFilter: table => !table.IsView && table.Schema == "DATA" && tableNames.Contains(table.Name)); } #endregion #region Prepare content tables.Handle(PrepareEntityName); tables.SelectMany(table => table.Columns).Handle(PrepareEntityPropertyName); #endregion #region Content load var contentLoader = MSSQLLoadManager <TableContent, ColumnContent> .Instance.GetContentLoader(tables); foreach (var contentFile in contentFiles) { contentLoader.Load(contentFile); } #endregion return(tables); }
public List <MSSQLTable <TableContent, ColumnContent> > Load(params string[] contentFiles) { Contract.Requires(contentFiles != null); Contract.Requires(contentFiles.Length != 0); List <MSSQLTable <TableContent, ColumnContent> > tables; #region Load { var rows = DataSheetManager.Read(contentFiles[0], TableDescriptor.GetRead("Tables{T}", 5)).Tables[0].Rows.Cast <DataRow>(); rows = rows.AddFilter(_tableContext, 2).AddFilter(_tableGroup, 3).AddFilter(_tableSubGroup, 4); var tableNames = rows.Select(row => GetFullTableName(row[0].ToString(), row[1].ToString())).ToArray(); tables = _loader.Load(tableFilter: table => /*!table.IsView &&*/ tableNames.Contains(GetFullTableName(table.Schema, table.Name))); } #endregion #region Prepare content tables.Handle(PrepareEntityName); tables.SelectMany(table => table.Columns).Handle(PrepareEntityPropertyName); #endregion #region Content load var contentLoader = MSSQLLoadManager <TableContent, ColumnContent> .Instance.GetContentLoader(tables); foreach (var contentFile in contentFiles) { contentLoader.Load(contentFile); } #endregion return(tables); }
public void CreateDefaultTemplate(string filePath, ContentLoadType type, bool hasSchema = true) { string[] names; #region Names switch (type) { case ContentLoadType.Column: case ContentLoadType.TableOrColumn: names = hasSchema ? new[] { "Schema", "Table", "Column" } : new[] { "Table", "Column" }; break; case ContentLoadType.Table: names = hasSchema ? new[] { "Schema", "Table" } : new[] { "Table" }; break; default: throw new ArgumentOutOfRangeException(); } #endregion var descriptor = TableDescriptor.GetWrite("template", names); var set = new DataSet(); var dataTable = new DataTable(descriptor.SheetName); set.Tables.Add(dataTable); #region Fill table foreach (var columnName in descriptor.ColumnNames) { dataTable.Columns.Add(columnName, typeof(string)); } var getTableRow = hasSchema ? (Func <TTable, object[]>)(table => new object[] { table.Schema, table.Name }) : (table => new object[] { table.Name }); var getColumnRow = hasSchema ? (Func <TColumn, object[]>)(column => new object[] { column.Parent.Schema, column.Parent.Name, column.Name }) : (column => new object[] { column.Parent.Name, column.Name }); foreach (var table in _tables) { if (type.HasFlag(ContentLoadType.Table)) { dataTable.Rows.Add(getTableRow(table)); } if (type.HasFlag(ContentLoadType.Column)) { foreach (var column in table.Columns) { dataTable.Rows.Add(getColumnRow(column)); } } } #endregion #region Create file using (var sourceStream = _extractor.ReadFileFromResToStream("model.xlsx")) using (var destinationStream = File.Create(filePath)) { sourceStream.CopyTo((destinationStream)); } #endregion DataSheetManager.Write(filePath, set, descriptor); }