using System; using System.Collections.Generic; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Interfaces; using Sarand.Net.Standard.Dbas.Base; using Sarand.Net.Standard.Dbas.Data; namespace Sarand.Net.Standard.Dbas.Interfaces { //======================================================================= public partial class SaInterfaceMgr_Dbas : SaInterfaceMgr { //------------------------------------------------------------------- // Data members. //------------------------------------------------------------------- // Static initialisation. static SaInterfaceMgr_Dbas () { } //------------------------------------------------------------------- // Construction. internal SaInterfaceMgr_Dbas (SaInterfaceConsole_Dbas interfaceConsole) : base(interfaceConsole) { Database = interfaceConsole.Database; DbInfo = new DbDataItem.DatabaseInfo(interfaceConsole.Database); // Verify Interface table names. // NB Some databases omit the 'Sa' prefix. if (!Database.TableExists(TableName_Interface) && !Database.TableExists(TableName_InterfaceDataItem) && !Database.TableExists(TableName_InterfaceProcess) && !Database.TableExists(TableName_InterfaceProcessDataItem) && !Database.TableExists(TableName_InterfaceProcessMessage)) { if (Database.TableExists("Interface") && Database.TableExists("InterfaceDataItem") && Database.TableExists("InterfaceProcess") && Database.TableExists("InterfaceProcessDataItem") && Database.TableExists("InterfaceProcessMessage")) { TableName_Interface = "Interface"; TableName_InterfaceProcess = "InterfaceProcess"; TableName_InterfaceProcessMessage = "InterfaceProcessMessage"; TableName_InterfaceDataItem = "InterfaceDataItem"; TableName_InterfaceProcessDataItem = "InterfaceProcessDataItem"; SaLogger.Info(GetType().Name+".CTR Switching to Interface table names without 'Sa' prefix"); } } } //------------------------------------------------------------------- // Properties. internal ISacsDatabase Database { get; } private DbDataItem.DatabaseInfo DbInfo { get; } public String TableName_Interface { get; } = SaInterfaceDbDfn.GetTableName(SaInterfaceDbDfn.TableIdx.SaInterface); public String TableName_InterfaceProcess { get; } = SaInterfaceDbDfn.GetTableName(SaInterfaceDbDfn.TableIdx.SaInterfaceProcess); public String TableName_InterfaceProcessMessage { get; } = SaInterfaceDbDfn.GetTableName(SaInterfaceDbDfn.TableIdx.SaInterfaceProcessMessage); public String TableName_InterfaceDataItem { get; } = SaInterfaceDbDfn.GetTableName(SaInterfaceDbDfn.TableIdx.SaInterfaceDataItem); public String TableName_InterfaceProcessDataItem { get; } = SaInterfaceDbDfn.GetTableName(SaInterfaceDbDfn.TableIdx.SaInterfaceProcessDataItem); public override bool DatabaseIsValid { get { return (Database != null && Database.GetTableNames().Contains(TableName_Interface) && Database.GetTableNames().Contains(TableName_InterfaceProcess)); } } public override bool CanUpdateDatabase { get { return DatabaseIsValid; } } //------------------------------------------------------------------- // Utilities. public override bool ColumnExists (SaInterfaceDbDfn.ColumnIdx columnIdx) { SaInterfaceDbDfn.TableIdx tableIdx = SaInterfaceDbDfn.GetTableForColumn(columnIdx); String tableName = SaInterfaceDbDfn.GetTableName(tableIdx, false); switch (tableIdx) { // Ensure correct table name used - with/without 'Sa' prefix. case SaInterfaceDbDfn.TableIdx.SaInterface: tableName = TableName_Interface; break; case SaInterfaceDbDfn.TableIdx.SaInterfaceProcess: tableName = TableName_InterfaceProcess; break; case SaInterfaceDbDfn.TableIdx.SaInterfaceProcessMessage: tableName = TableName_InterfaceProcessMessage; break; case SaInterfaceDbDfn.TableIdx.SaInterfaceDataItem: tableName = TableName_InterfaceDataItem; break; case SaInterfaceDbDfn.TableIdx.SaInterfaceProcessDataItem: tableName = TableName_InterfaceProcessDataItem; break; } String columnName = SaInterfaceDbDfn.GetColumnName(columnIdx, false); return Database.ColumnExists(tableName, columnName); } //------------------------------------------------------------------- } //======================================================================= }