using System.ComponentModel; using System.Data; using System.Windows.Forms; using Benner.Tecnologia.Business; using Stimulsoft.Base; using Stimulsoft.Base.Localization; using Stimulsoft.Base.Services; using Stimulsoft.Report.Dictionary.Design; namespace Stimulsoft.Report.Dictionary { [TypeConverter(typeof(StiSqlDatabaseConverter))] public class StiBennerDatabase : StiSqlDatabase { public override string ServiceName { get { return "Benner Database"; } } protected override string DataAdapterType { get { return "Stimulsoft.Report.Dictionary.StiBennerAdapterService"; } } //[StiOrder((int)Order.ConnectionString)] //[Browsable(false)] //public new string ConnectionString //{ // get { return base.ConnectionString; } // set { base.ConnectionString = value; } //} public StiBennerDatabase() : this(string.Empty, string.Empty) { } public StiBennerDatabase(string name, string connectionString) : base(name, connectionString) { } public StiBennerDatabase(string name, string alias, string connectionString) : base(name, alias, connectionString) { } public StiBennerDatabase(string name, string alias, string connectionString, bool promptUserNameAndPassword) :base (name, alias, connectionString, promptUserNameAndPassword) { } public override StiSqlAdapterService GetDataAdapter() { StiServiceContainer services = StiConfig.Services.GetServices(typeof(StiDataAdapterService), false); foreach (StiDataAdapterService adapter in services) { if (adapter.GetType().ToString() == DataAdapterType) { return adapter as StiBennerAdapterService; } } return StiActivator.CreateObject(this.GetType()) as StiBennerAdapterService; } public override StiDatabaseInformation GetDatabaseInformation() { var isSqlServer = BusinessPartFactory.CreateDataAccessUtilsService().GetSqlDriverName().StartsWith("MSSQL"); StiDatabaseInformation stiDatabaseInformation; if (isSqlServer) stiDatabaseInformation = new StiSqlDatabase(Name, ConnectionString).GetDatabaseInformation(); else stiDatabaseInformation = new StiOracleODPDatabase(Name, ConnectionString).GetDatabaseInformation(); stiDatabaseInformation.Views.Clear(); stiDatabaseInformation.StoredProcedures.Clear(); return stiDatabaseInformation; } public override void RegData(StiDictionary dictionary, bool loadData) { var adapterService = new StiBennerAdapterService(); adapterService.CreateConnectionInDataStore(dictionary, this); } public override bool CanEditConnectionString { get { return false; } } public override DialogResult Edit(bool newDatabase) { MessageBox.Show("A configuração é fornecida automaticamente pelo sistema.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return DialogResult.Cancel; } public override void ApplyDatabaseInformation(StiDatabaseInformation information, StiReport report) { ApplyDatabaseInformation(information, report, null); } public override void ApplyDatabaseInformation(StiDatabaseInformation information, StiReport report, StiDatabaseInformation informationAll) { foreach (DataTable dataTable in information.Tables) { var source = new StiBennerSource(Name, StiNameCreation.CreateName(report, dataTable.TableName, false, false, true)); string table = dataTable.TableName; if (table.Trim().Contains(" ")) table = string.Format("[{0}]", table); source.SqlCommand = "select * from " + table; foreach (DataColumn dataColumn in dataTable.Columns) { StiDataColumn column = new StiDataColumn(dataColumn.ColumnName, dataColumn.DataType); source.Columns.Add(column); } report.Dictionary.DataSources.Add(source); } } } }