public IQueryConnection CreateQueryConnection(QuerySource sourceType, InstanceInfo instance) { bool isOdbc = instance.IsODBC; QuerySource queryType = instance.Type; instance.SetSettings(this._model.Settings); if (sourceType == QuerySource.SQLite) { IStorageManager storageManager = this._model.GetVaultProcessor( instance.ConnectionGroup ?? new ConnectionGroupInfo() ); AttachingSqliteQueryConnection sqliteQueryConnection; string connectionString = instance.GetConnectionString(); SqliteConnectionParameters connectionParameters = SqliteConnectionParameters.Parse(connectionString); if (connectionParameters.IsValid) { sqliteQueryConnection = new SqliteInnerQueryConnection( storageManager.CurrentStorage, connectionParameters ); } else { sqliteQueryConnection = new SqliteInternalQueryConnection( storageManager.CurrentStorage, instance ); } if (storageManager.HistoryStorage != null) { foreach (var historyStorage in storageManager.HistoryStorage) { sqliteQueryConnection.AddDatabaseToAttach( historyStorage.Alias, historyStorage.FileName ); } } if (storageManager.ReportStorage != null) { sqliteQueryConnection.AddDatabaseToAttach( "report", storageManager.ReportStorage.FileName ); } return(sqliteQueryConnection); } if (isOdbc) { OdbcConnection odbcConnection = ConnectionFactory.CreateOdbcConnection(instance, true); return(new OdbcQueryConnection(odbcConnection)); } if (sourceType == queryType) { switch (sourceType) { case QuerySource.MSSQL: SqlConnection sqlConnection = ConnectionFactory.CreateSqlConnection(instance, true); return(new MsSqlQueryConnection(sqlConnection)); case QuerySource.TDSQL: TdConnection tdConnection = ConnectionFactory.CreateTdConnection(instance, true); return(new TeradataSqlQueryConnection(tdConnection)); case QuerySource.SQLiteExternal: SQLiteConnection sqliteConnection = ConnectionFactory.CreateSQLiteExternalConnection(instance); return(new SqliteExternalQueryConnection(sqliteConnection)); case QuerySource.ActiveDirectory: ActiveDirectoryConnection activeDirectoryConnection = ConnectionFactory.CreateActiveDirectoryConnection(instance); return(new ActiveDirectoryQueryConnection(activeDirectoryConnection)); case QuerySource.EventLog: EventLogConnection eventLogConnection = ConnectionFactory.CreateEventLogConnection(instance); return(new EventLogQueryConnection(eventLogConnection)); case QuerySource.NetworkInformation: NetworkInformationConnection networkInfoConnection = ConnectionFactory.CreateNetworkInformationConnection(instance); return(new NetworkInformationQueryConnection(networkInfoConnection)); } } string errorMessage = String.Format( "There is no QueryConnection defined. QuerySource: {0}, QueryType: {1}", sourceType, queryType ); Log.ErrorFormat(errorMessage); throw new ArgumentException(errorMessage); }
public IQueryConnection CreateQueryConnection(QuerySource sourceType, InstanceInfo instance) { bool isOdbc = instance.IsODBC; QuerySource queryType = instance.Type; instance.SetSettings(this._model.Settings); if (sourceType == QuerySource.SQLite) { IStorageManager storageManager = this._model.GetVaultProcessor( instance.ConnectionGroup ?? new ConnectionGroupInfo() ); AttachingSqliteQueryConnection sqliteQueryConnection; string connectionString = instance.GetConnectionString(); SqliteConnectionParameters connectionParameters = SqliteConnectionParameters.Parse(connectionString); if (connectionParameters.IsValid) { sqliteQueryConnection = new SqliteInnerQueryConnection( storageManager.CurrentStorage, connectionParameters ); } else { sqliteQueryConnection = new SqliteInternalQueryConnection( storageManager.CurrentStorage, instance ); } if (storageManager.HistoryStorage != null) { foreach (var historyStorage in storageManager.HistoryStorage) { sqliteQueryConnection.AddDatabaseToAttach( historyStorage.Alias, historyStorage.FileName ); } } if (storageManager.ReportStorage != null) { sqliteQueryConnection.AddDatabaseToAttach( "report", storageManager.ReportStorage.FileName ); } return sqliteQueryConnection; } if (isOdbc) { OdbcConnection odbcConnection = ConnectionFactory.CreateOdbcConnection(instance, true); return new OdbcQueryConnection(odbcConnection); } if (sourceType == queryType) { switch (sourceType) { case QuerySource.MSSQL: SqlConnection sqlConnection = ConnectionFactory.CreateSqlConnection(instance, true); return new MsSqlQueryConnection(sqlConnection); case QuerySource.TDSQL: TdConnection tdConnection = ConnectionFactory.CreateTdConnection(instance, true); return new TeradataSqlQueryConnection(tdConnection); case QuerySource.SQLiteExternal: SQLiteConnection sqliteConnection = ConnectionFactory.CreateSQLiteExternalConnection(instance); return new SqliteExternalQueryConnection(sqliteConnection); case QuerySource.ActiveDirectory: ActiveDirectoryConnection activeDirectoryConnection = ConnectionFactory.CreateActiveDirectoryConnection(instance); return new ActiveDirectoryQueryConnection(activeDirectoryConnection); case QuerySource.EventLog: EventLogConnection eventLogConnection = ConnectionFactory.CreateEventLogConnection(instance); return new EventLogQueryConnection(eventLogConnection); case QuerySource.NetworkInformation: NetworkInformationConnection networkInfoConnection = ConnectionFactory.CreateNetworkInformationConnection(instance); return new NetworkInformationQueryConnection(networkInfoConnection); } } string errorMessage = String.Format( "There is no QueryConnection defined. QuerySource: {0}, QueryType: {1}", sourceType, queryType ); Log.ErrorFormat(errorMessage); throw new ArgumentException(errorMessage); }