Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }