using Sarand.Net.Standard.Dbas.Data; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using System; using System.Collections.Generic; using System.Text; using Sarand.Net.Standard.Base.Utils; namespace Saxonite.Net.Standard.Dbas.Data { //======================================================================= public abstract class SaxDbDataItem : DbDataItem { //------------------------------------------------------------------- // Definitions. /// /// Database information - object supplied by main application. /// NB Application may have multiple databases with schema differences. /// Each instance of a DbDataItem must be database specific. /// public class SlmDatabaseInfo : IDatabaseInfo { // Data members. private readonly List tables; private static readonly String defaultSchemaName = "dbo"; // Construction. public SlmDatabaseInfo(String databaseName, List tables) { this.DatabaseName = databaseName; this.tables = tables; } // Properties. public String DatabaseName { get; } public String Context { get { return StringUtil.OnEmpty(DatabaseName, "UnknownDb"); } } // Database schema. public DbDfnTable GetTableDefinition(String schemaName, String tableName) { foreach (DbDfnTable table in tables.FindAll(item => item.Name.EqualsCI(tableName))) { if (StringUtil.OnEmpty(table.Schema, defaultSchemaName).EqualsCI(StringUtil.OnEmpty(schemaName, defaultSchemaName))) return table; } return null; } public bool TableExists(String schemaName, String tableName) { return GetTableDefinition(schemaName, tableName) != null; } public bool ColumnExists(String schemaName, String tableName, String columnName) { DbDfnTable table = GetTableDefinition(schemaName, tableName); if (table == null) return false; return table.HasColumnByName(columnName); } public List GetColumnsForTable(String schemaName, String tableName) { DbDfnTable table = GetTableDefinition(schemaName, tableName); if (table != null) return table.Columns; return new List(); } } //------------------------------------------------------------------- // Construction. protected SaxDbDataItem(IDatabaseInfo dbInfo) : base(dbInfo) { } //------------------------------------------------------------------- //------------------------------------------------------------------- } //======================================================================= }