diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj b/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj deleted file mode 100644 index e7671ebe0b..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj +++ /dev/null @@ -1,81 +0,0 @@ - - - Library - SharpDbTools - SharpDbTools - Debug - AnyCPU - {F2CC804D-5A9C-4875-A423-4FB9A5D07018} - False - False - False - Auto - 4194304 - AnyCPU - 4096 - 4 - false - - - obj\ - obj\Debug\ - ..\..\..\..\..\AddIns\AddIns\Misc\SharpServerTools\ - False - DEBUG;TRACE - true - Full - True - - - obj\ - obj\Release\ - ..\..\..\..\..\AddIns\AddIns\Misc\SharpServerTools\ - True - TRACE - false - None - False - - - - - - - - - - - - - - - - - - - - - - - ConnectionStringDefinitionDialog.cs - - - GetConnectionLogicalNameDialog.cs - - - - - - - - - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} - ICSharpCode.Core - - - {2748AD25-9C63-4E12-877B-4DCE96FBED54} - ICSharpCode.SharpDevelop - - - - \ No newline at end of file diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.sln b/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.sln deleted file mode 100644 index 21c00f472a..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.sln +++ /dev/null @@ -1,16 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# SharpDevelop 2.1.0.1793 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDbTools", "SharpDbTools.csproj", "{F2CC804D-5A9C-4875-A423-4FB9A5D07018}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F2CC804D-5A9C-4875-A423-4FB9A5D07018}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F2CC804D-5A9C-4875-A423-4FB9A5D07018}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F2CC804D-5A9C-4875-A423-4FB9A5D07018}.Release|Any CPU.Build.0 = Release|Any CPU - {F2CC804D-5A9C-4875-A423-4FB9A5D07018}.Release|Any CPU.ActiveCfg = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Configuration/AssemblyInfo.cs deleted file mode 100644 index bb222f9790..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Configuration/AssemblyInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -// -// -// -// -// $Revision: 1760 $ -// - -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following -// attributes. -// -// change them to the information which is associated with the assembly -// you compile. - -[assembly: AssemblyTitle("SharpDbTools")] -[assembly: AssemblyDescription("Addin for SharpDevelop 2.0")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/ColumnNames.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/ColumnNames.cs deleted file mode 100644 index 00a6ba5754..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/ColumnNames.cs +++ /dev/null @@ -1,34 +0,0 @@ -// -// -// -// -// $Revision: 1784 $ -// - -/* - * User: dickon - * Date: 30/07/2006 - * Time: 23:37 - * - */ - -using System; - -namespace SharpDbTools.Data -{ - /// - /// Description of Columns. - /// - public sealed class ColumnNames - { - public const string InvariantName = "invariantName"; - public const string Name = "name"; - public const string ConnectionString = "connectionString"; - public const string TableName = "TABLE_NAME"; - public static string[] TableTableFieldsToDisplay = - new string [] {"COLUMN_NAME", "DATATYPE", - "LENGTH", "PRECISION", "SCALE", "NULLABLE"}; - public static string[] TableTableFieldsColumnHeaders = - new string[] { "Column", "Type", "Length", "Precision", "Scale", "Nullable" }; - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbModelInfo.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbModelInfo.cs deleted file mode 100644 index f1ecb9cc15..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbModelInfo.cs +++ /dev/null @@ -1,181 +0,0 @@ -// -// -// -// -// $Revision: 1784 $ -// - -/* - * User: Dickon Field - * Date: 10/07/2006 - * Time: 09:12 - * - */ - -using System; -using System.Data; -using System.Data.Common; -using System.Collections.Generic; - -using ICSharpCode.Core; - -namespace SharpDbTools.Data -{ - /// - /// DbModel is a DataSet containing the metadata tables returned from a DbConnection. - /// It adds methods designed specifically to facilitate access to the data in the - /// DataTables contained by the DbModel. - /// - /// The DbModel class is intended to be usable in a fully disconnected mode - that is, - /// it requires a DbConnection to populate it, but it may then be locally persisted and subsequently - /// retrieved from its persisted data. This is intended to allow work to progress against the - /// DbModel without requiring a connection to its RDB server. - /// - /// - public class DbModelInfo: DataSet - { - public const string METADATACOLLECTIONS = "MetaDataCollections"; - - public DbModelInfo() : base() - { - } - - public DbModelInfo(string name) : base() - { - DataTable table = CreateConnectionInfoTable(); - // add the first and only column of this table; - table.Rows.Add(new object[] {name, null, null}); - } - - public DbModelInfo(string name, string invariantName, string connectionString): base() - { - DataTable table = CreateConnectionInfoTable(); - // add the first and only column of this table; - table.Rows.Add(new object[] {name, invariantName, connectionString}); - } - - public string Name { - get { - DataTable table = this.Tables[TableNames.ConnectionInfo]; - string name = table.Rows[0][ColumnNames.Name] as string; - return name; - } - } - - public string InvariantName { - get { - DataTable table = this.Tables[TableNames.ConnectionInfo]; - string invariantName = null; - try { - invariantName = table.Rows[0][ColumnNames.InvariantName] as string; - } - catch(ArgumentException) { - // see comment below - it is correct to bury this exception - //LoggingService.Info("InvariantName property was accessed while undefined" + e); - } - return invariantName; - } - set { - DataTable table = this.Tables[TableNames.ConnectionInfo]; - string invariantName = table.Rows[0][ColumnNames.InvariantName] as string; - string name = this.Name; - string connectionString = this.ConnectionString; - - if (invariantName == null) { - table.Rows[0][ColumnNames.InvariantName] = value; - } - - // if invariant has changed must clear any existing metadata - else if (!(invariantName.Equals(value))) { - // clear tables - this.Clear(); - DataTable newTable = CreateConnectionInfoTable(); - // add the first and only column of this table; - newTable.Rows.Add(new object[] {name, invariantName, connectionString}); - } - } - } - - public string ConnectionString { - get { - DataTable table = this.Tables[TableNames.ConnectionInfo]; - string connectionString = null; - try { - connectionString = table.Rows[0][ColumnNames.ConnectionString] as string; - } - catch(ArgumentException) { - // this simply indicates that this attribute was not defined when the - // DbModelInfo was saved, returning null makes sense here - so it is - // correct to bury this exception - //LoggingService.Info("InvariantName property was accessed while undefined" + e); - } - return connectionString; - } - set { - DataTable table = this.Tables[TableNames.ConnectionInfo]; - string connectionString = this.ConnectionString; - if (connectionString == null) { - table.Rows[0][ColumnNames.ConnectionString] = value; - } - else if (!(connectionString.Equals(value))) { - string invariantName = this.InvariantName; - string name = this.Name; - this.Clear(); - // add the first and only column of this table; - table.Rows.Add(new object[] {name, invariantName, value}); - } - } - } - - public void SetConnectionInfo(string invariantName, string connectionString) - { - string name = this.Name; - SetConnectionInfo(name, invariantName, connectionString); - } - - public void SetConnectionInfo(string name, string invariantName, - string connectionString) - { - this.Clear(); - DataTable table = CreateConnectionInfoTable(); - // add the first and only column of this table; - table.Rows.Add(new object[] {name, invariantName, connectionString}); - - } - - private DataTable CreateConnectionInfoTable() - { - // create a table in the DbModelInfo to hold this initial info. - // this creates a consistent representation of the data and makes - // it easier to serialise it - DataTable table = this.Tables.Add(TableNames.ConnectionInfo); - table.Columns.Add(ColumnNames.Name, typeof(string)); - table.Columns.Add(ColumnNames.InvariantName, typeof(string)); - table.Columns.Add(ColumnNames.ConnectionString, typeof(string)); - return table; - } - - public void ClearMetaData() - { - DataTable metadataCollectionsTable = this.MetaDataCollections; - if (metadataCollectionsTable != null) { - foreach (DataRow collectionRow in metadataCollectionsTable.Rows) { - String collectionName = (string)collectionRow[0]; - this.Tables.Remove(collectionName); - } - } - } - - public DataTable MetaDataCollections { - get { - return this.Tables[METADATACOLLECTIONS]; - } - } - - public DataTable this[string collectionName] { - get { - return this.Tables[collectionName]; - } - } - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbModelInfoService.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbModelInfoService.cs deleted file mode 100644 index a9b5077405..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbModelInfoService.cs +++ /dev/null @@ -1,283 +0,0 @@ -// -// -// -// -// $Revision: 1784 $ -// - -/* - * User: dickon - * Date: 28/07/2006 - * Time: 21:55 - * - */ - -using System; -using System.Data; -using System.Data.Common; -using System.Collections.Generic; -using System.IO; -using ICSharpCode.Core; - -namespace SharpDbTools.Data -{ - /// - /// Manages a collection of DbModelInfo: - /// - retrieval from files - /// - opening (essentially refreshing) from a database connection - /// - adding for new connection data (name, invariant name, connection string) - /// - saving to files - /// - public static class DbModelInfoService - { - static string saveLocation = null; - static object lockObject = new Object(); - const string dbFilesDir = "DbTools"; - static SortedList cache = new SortedList(); - - public static IList Names { - get { - return cache.Keys; - } - } - - /// - /// - /// - /// The user readable name of the provider - /// the identifying name of the provider - /// the connection string for this connection - /// - public static DbModelInfo Add(string name, string invariantName, string connectionString) - { - // TODO: add validation on name; invariant name - // assume that connection string is valid - if it fails an exception will be thrown later - // this allows partially defined connection strings at least to be saved and worked on later - DbModelInfo dbModel = new DbModelInfo(name, invariantName, connectionString); - - // add to cache - cache.Add(name, dbModel); - return dbModel; - } - - public static void Remove(string name) - { - cache.Remove(name); - } - - public static DbModelInfo GetDbModelInfo(string name) { - DbModelInfo modelInfo = null; - bool exists = cache.TryGetValue(name, out modelInfo); - return modelInfo; - } - - public static DataTable GetTableInfo(string modelName, string tableName) - { - LoggingService.Debug("-->GetTableInfo"); - DbModelInfo modelInfo = GetDbModelInfo(modelName); - DataTable columnTable = modelInfo.Tables[TableNames.Columns]; - DataRow[] columnsMetadata = columnTable.Select(ColumnNames.TableName + "='" + tableName + "'"); - LoggingService.Debug("found: " + columnsMetadata.Length + " columns belonging to table: " + tableName); - DataTable tableInfo = new DataTable(); - DataColumnCollection cols = columnTable.Columns; - foreach (DataColumn c in cols) { - DataColumn nc = new DataColumn(c.ColumnName, c.DataType); - tableInfo.Columns.Add(nc); - } - foreach (DataRow r in columnsMetadata) { - DataRow newRow = tableInfo.NewRow(); - newRow.ItemArray = r.ItemArray; - tableInfo.Rows.Add(newRow); - tableInfo.AcceptChanges(); - } - return tableInfo; - - } - - public static DbModelInfo LoadMetadataFromConnection(string name) - { - // get the DbModelInfo - - DbModelInfo modelInfo = null; - bool exists = cache.TryGetValue(name, out modelInfo); - if (!exists) - { - // TODO: more detail... - throw new KeyNotFoundException(); - } - - // get the invariant name and connection string - - string invariantName = modelInfo.InvariantName; - string connectionString = modelInfo.ConnectionString; - - // get a connection - wait until a connection has been successfully made - // before clearing the DbModelInfo - - DbProvidersService factoryService = DbProvidersService.GetDbProvidersService(); - DbConnection connection = null; - try { - - DbProviderFactory factory = factoryService.GetFactoryByInvariantName(invariantName); - connection = factory.CreateConnection(); - - - modelInfo.ClearMetaData(); - - // reload the metadata from the connection - // get the Schema table - connection.ConnectionString = connectionString; - - connection.Open(); - DataTable schemaInfo = connection.GetSchema(); - - // clear the DbModelInfo prior to refreshing from the connection - modelInfo.ClearMetaData(); - - // iterate through the rows in it - the first column of each is a - // schema info collection name that can be retrieved as a DbTable - // Add each one to the DbModel DataSet - - foreach (DataRow collectionRow in schemaInfo.Rows) { - String collectionName = (string)collectionRow[0]; - DataTable nextMetaData = connection.GetSchema(collectionName); - modelInfo.Merge(nextMetaData); - } - return modelInfo; - } - catch(Exception e) { - LoggingService.Fatal("Exception caught while trying to retrieve database metadata: " + e); - throw e; - } - finally { - connection.Close(); - } - } - - /// - /// - /// - /// the logical name of the DbModelInfo to save to a file - /// if true, any existing file will be overwritten - /// true if the DbModelInfo was saved, false if not. It will not be saved if - /// either overwriteExistingFile is set to true, and there is an existing file - public static bool SaveToFile(string name, bool overwriteExistingFile) - { - string path = GetSaveLocation(); - DbModelInfo modelInfo = null; - cache.TryGetValue(name, out modelInfo); - if (modelInfo != null) { - string modelName = modelInfo.Name; - // write to a file in 'path' called .metadata - // TODO: may want to consider ways of making this more resilient - string filePath = path + @"\" + name + ".metadata"; - LoggingService.Debug("writing metadata to: " + filePath); - if (File.Exists(filePath)) { - if (overwriteExistingFile) { - File.Delete(filePath); - } else { - return false; - } - } - using (StreamWriter sw = File.CreateText(filePath)) { - string xml = modelInfo.GetXml(); - sw.Write(xml); - sw.Flush(); - sw.Close(); - return true; - } - } else { - throw new DbModelInfoDoesNotExistException(name); - } - } - - public static void SaveAll() - { - foreach (string name in cache.Keys) { - SaveToFile(name, true); - } - } - - public static void LoadNamesFromFiles() - { - // load DbModelInfo's from file system - string saveLocation = GetSaveLocation(); - LoggingService.Debug("looking for metadata files at: " + saveLocation); - string[] files = Directory.GetFileSystemEntries(saveLocation); - - cache.Clear(); - for (int i = 0; i < files.Length; i++) { - LoggingService.Debug("found to load metadata from: " + files[i]); - int start = files[i].LastIndexOf('\\'); - int end = files[i].LastIndexOf('.'); - start++; - string name = files[i].Substring(start, end - start); - DbModelInfo nextModel = new DbModelInfo(name); - cache.Add(nextModel.Name, nextModel); - } - } - - public static void LoadFromFiles() - { - // load DbModelInfo's from file system - string saveLocation = GetSaveLocation(); - string[] files = Directory.GetFiles(saveLocation); - cache.Clear(); - for (int i = 0; i < files.Length; i++) { - DbModelInfo nextModel = LoadFromFileAtPath(@files[i]); - cache.Add(nextModel.Name, nextModel); - } - } - - private static DbModelInfo LoadFromFileAtPath(string filePath) - { - LoggingService.Debug("loading DbModelInfo from filePath: " + filePath); - DbModelInfo nextModel = new DbModelInfo(); - nextModel.ReadXml(filePath); - return nextModel; - } - - public static void LoadFromFile(string logicalConnectionName) - { - LoggingService.Debug("loading DbModelInfo for name: " + logicalConnectionName); - string saveLocation = GetSaveLocation(); - string path = saveLocation + "\\" + logicalConnectionName + ".metadata"; - DbModelInfo info = LoadFromFileAtPath(path); - cache.Remove(logicalConnectionName); - cache.Add(logicalConnectionName, info); - } - - private static string GetSaveLocation() - { - // append the path of the directory for saving Db files - - if (saveLocation == null) { - lock(lockObject) { - string configDir = PropertyService.ConfigDirectory; - saveLocation = configDir + @"\" + dbFilesDir; - saveLocation = saveLocation.Replace("/", @"\"); - } - } - if (!Directory.Exists(saveLocation)) { - Directory.CreateDirectory(@saveLocation); - } - return saveLocation; - } - } - - public class DbModelInfoDoesNotExistException: ApplicationException - { - string name; - - public DbModelInfoDoesNotExistException(string dbModelInfoName): base() - { - this.name = dbModelInfoName; - } - - public string Name { - get { - return name; - } - } - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbProvidersService.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbProvidersService.cs deleted file mode 100644 index 40c705eaf6..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbProvidersService.cs +++ /dev/null @@ -1,123 +0,0 @@ -// -// -// -// -// $Revision: 1697 $ -// - -/* - * Responsibilities:
- *
- * Collaboration:
- *
- * User: Dickon Field - * Date: 21/05/2006 - * Time: 23:19 - * - */ - -using System; -using System.Data.Common; -using System.Data; -using System.Collections.Generic; - -using ICSharpCode.Core; - -namespace SharpDbTools.Data -{ - /// - /// A utility class that caches the DbProviderFactory and DbConnectionString - /// objects whose state is stored in the current processes config space. - /// - public class DbProvidersService - { - private static DbProvidersService me = new DbProvidersService(); - private static Boolean initialized = false; - private Dictionary factories = new Dictionary(); - private Dictionary factoriesByInvariantName = new Dictionary(); - - // This is only valid witin one session - do not persist - private Dictionary invariantByNameLookup = new Dictionary(); - private List names = new List(); - - private DbProvidersService() - { - } - - private void Initialize() - { - // get a complete list of config data for DbProviderFactories, indexed by name - DataTable providerFactoriesTable = DbProviderFactories.GetFactoryClasses(); - DataRow[] rows = providerFactoriesTable.Select(); - - foreach(DataRow row in rows) - { - // TODO: factor out string literals for column names - string name = (string)row["Name"]; - string invariantName = (string)row["InvariantName"]; - invariantByNameLookup.Add(name, invariantName); - //factoryData.Add(name, row); - LoggingService.Debug("retrieving DbProviderFactory for Name: " + name + " InvariantName: " + invariantName); - DbProviderFactory factory = DbProviderFactories.GetFactory(row); - names.Add(name); - factories.Add(name, factory); - factoriesByInvariantName.Add(invariantName, factory); - } - - initialized = true; - } - - public List Names - { - get - { - return names; - } - } - - public string this[int i] - { - get - { - return names[i]; - } - } - - public string GetInvariantName(string name) { - string invariantName = null; - invariantByNameLookup.TryGetValue(name, out invariantName); - return invariantName; - } - - public DbProviderFactory this[string name] - { - get - { - return factories[name]; - } - set - { - factories[name] = value; - } - } - - public DbProviderFactory GetFactoryByInvariantName(string invariantName) - { - DbProviderFactory factory = null; - this.factoriesByInvariantName.TryGetValue(invariantName, out factory); - return factory; - } - - public static DbProvidersService GetDbProvidersService() - { - lock(me) - { - if (!initialized) - { - me.Initialize(); - } - } - return me; - } - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/TableNames.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/TableNames.cs deleted file mode 100644 index d3c75e8675..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/TableNames.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -// -// -// -// $Revision: 1784 $ -// - -/* - * User: dickon - * Date: 30/07/2006 - * Time: 23:35 - * - */ - -using System; - -namespace SharpDbTools.Data -{ - /// - /// Description of Tables. - /// - public sealed class TableNames - { - public const string MetaDataCollections = "MetaDataCollections"; - public const string ConnectionInfo = "ConnectionInfo"; - public static string[] PrimaryObjects = new string[] { "Tables", "Procedures", "Functions", "Views", "Users" }; - public const string Columns = "Columns"; - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.Designer.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.Designer.cs deleted file mode 100644 index 757a491845..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.Designer.cs +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Responsibilities:
- *
- * Collaboration:
- *
- * User: ${USER} - * Date: ${DATE} - * Time: ${TIME} - * - */ -namespace SharpDbTools.Forms -{ - partial class ConnectionStringDefinitionDialog : System.Windows.Forms.Form - { - /// - /// Designer variable used to keep track of non-visual components. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Disposes resources used by the form. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing) { - if (components != null) { - components.Dispose(); - } - } - base.Dispose(disposing); - } - - /// - /// This method is required for Windows Forms designer support. - /// Do not change the method contents inside the source code editor. The Forms designer might - /// not be able to load this method if it was changed manually. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.connStringPropertyGrid = new System.Windows.Forms.PropertyGrid(); - this.buttonsFlowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); - this.testButton = new System.Windows.Forms.Button(); - this.submitButton = new System.Windows.Forms.Button(); - this.cancelButton = new System.Windows.Forms.Button(); - this.providerTypeComboBox = new System.Windows.Forms.ComboBox(); - this.dataSourceTypeLabel = new System.Windows.Forms.Label(); - this.connStringResult = new System.Windows.Forms.TextBox(); - this.connectionStringLabel = new System.Windows.Forms.Label(); - this.progressTimer = new System.Windows.Forms.Timer(this.components); - this.statusStrip = new System.Windows.Forms.StatusStrip(); - this.outputMessageTabControl = new System.Windows.Forms.TabControl(); - this.connectionStringTab = new System.Windows.Forms.TabPage(); - this.testResultTab = new System.Windows.Forms.TabPage(); - this.testResultTextBox = new System.Windows.Forms.TextBox(); - this.buttonsFlowLayoutPanel.SuspendLayout(); - this.outputMessageTabControl.SuspendLayout(); - this.connectionStringTab.SuspendLayout(); - this.testResultTab.SuspendLayout(); - this.SuspendLayout(); - // - // connStringPropertyGrid - // - this.connStringPropertyGrid.Location = new System.Drawing.Point(0, 39); - this.connStringPropertyGrid.Name = "connStringPropertyGrid"; - this.connStringPropertyGrid.Size = new System.Drawing.Size(547, 300); - this.connStringPropertyGrid.TabIndex = 0; - // - // buttonsFlowLayoutPanel - // - this.buttonsFlowLayoutPanel.Controls.Add(this.testButton); - this.buttonsFlowLayoutPanel.Controls.Add(this.submitButton); - this.buttonsFlowLayoutPanel.Controls.Add(this.cancelButton); - this.buttonsFlowLayoutPanel.Location = new System.Drawing.Point(3, 447); - this.buttonsFlowLayoutPanel.Name = "buttonsFlowLayoutPanel"; - this.buttonsFlowLayoutPanel.Size = new System.Drawing.Size(312, 34); - this.buttonsFlowLayoutPanel.TabIndex = 1; - // - // testButton - // - this.testButton.Location = new System.Drawing.Point(3, 3); - this.testButton.Name = "testButton"; - this.testButton.Size = new System.Drawing.Size(75, 23); - this.testButton.TabIndex = 0; - this.testButton.Text = "Test"; - this.testButton.UseVisualStyleBackColor = true; - this.testButton.Click += new System.EventHandler(this.TestButtonClick); - // - // submitButton - // - this.submitButton.Location = new System.Drawing.Point(84, 3); - this.submitButton.Name = "submitButton"; - this.submitButton.Size = new System.Drawing.Size(75, 23); - this.submitButton.TabIndex = 1; - this.submitButton.Text = "Submit"; - this.submitButton.UseVisualStyleBackColor = true; - this.submitButton.Click += new System.EventHandler(this.SubmitButtonClick); - // - // cancelButton - // - this.cancelButton.Location = new System.Drawing.Point(165, 3); - this.cancelButton.Name = "cancelButton"; - this.cancelButton.Size = new System.Drawing.Size(75, 23); - this.cancelButton.TabIndex = 2; - this.cancelButton.Text = "Cancel"; - this.cancelButton.UseVisualStyleBackColor = true; - this.cancelButton.Click += new System.EventHandler(this.CancelButtonClick); - // - // providerTypeComboBox - // - this.providerTypeComboBox.FormattingEnabled = true; - this.providerTypeComboBox.Location = new System.Drawing.Point(117, 12); - this.providerTypeComboBox.Name = "providerTypeComboBox"; - this.providerTypeComboBox.Size = new System.Drawing.Size(195, 21); - this.providerTypeComboBox.TabIndex = 2; - this.providerTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.ProviderTypeSelectedIndexChanged); - // - // dataSourceTypeLabel - // - this.dataSourceTypeLabel.Location = new System.Drawing.Point(3, 9); - this.dataSourceTypeLabel.Name = "dataSourceTypeLabel"; - this.dataSourceTypeLabel.Size = new System.Drawing.Size(108, 23); - this.dataSourceTypeLabel.TabIndex = 3; - this.dataSourceTypeLabel.Text = "Data Source Type:"; - this.dataSourceTypeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // connStringResult - // - this.connStringResult.Enabled = false; - this.connStringResult.Location = new System.Drawing.Point(0, 0); - this.connStringResult.Multiline = true; - this.connStringResult.Name = "connStringResult"; - this.connStringResult.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.connStringResult.Size = new System.Drawing.Size(413, 74); - this.connStringResult.TabIndex = 4; - // - // connectionStringLabel - // - this.connectionStringLabel.Location = new System.Drawing.Point(12, 348); - this.connectionStringLabel.Name = "connectionStringLabel"; - this.connectionStringLabel.Size = new System.Drawing.Size(100, 23); - this.connectionStringLabel.TabIndex = 5; - this.connectionStringLabel.Text = "Connection String:"; - // - // progressTimer - // - this.progressTimer.Interval = 1000; - this.progressTimer.Tick += new System.EventHandler(this.ProgressTimerTick); - // - // statusStrip - // - this.statusStrip.Location = new System.Drawing.Point(0, 478); - this.statusStrip.Name = "statusStrip"; - this.statusStrip.Size = new System.Drawing.Size(547, 22); - this.statusStrip.TabIndex = 6; - this.statusStrip.Text = "statusStrip1"; - // - // testResultTab - // - this.outputMessageTabControl.Controls.Add(this.connectionStringTab); - this.outputMessageTabControl.Controls.Add(this.testResultTab); - this.outputMessageTabControl.Location = new System.Drawing.Point(118, 345); - this.outputMessageTabControl.Name = "testResultTab"; - this.outputMessageTabControl.SelectedIndex = 0; - this.outputMessageTabControl.Size = new System.Drawing.Size(417, 100); - this.outputMessageTabControl.TabIndex = 7; - // - // tabPage1 - // - this.connectionStringTab.Controls.Add(this.connStringResult); - this.connectionStringTab.Location = new System.Drawing.Point(4, 22); - this.connectionStringTab.Name = "tabPage1"; - this.connectionStringTab.Padding = new System.Windows.Forms.Padding(3); - this.connectionStringTab.Size = new System.Drawing.Size(409, 74); - this.connectionStringTab.TabIndex = 0; - this.connectionStringTab.Text = "Connection String"; - this.connectionStringTab.UseVisualStyleBackColor = true; - // - // tabPage2 - // - this.testResultTab.Controls.Add(this.testResultTextBox); - this.testResultTab.Location = new System.Drawing.Point(4, 22); - this.testResultTab.Name = "tabPage2"; - this.testResultTab.Padding = new System.Windows.Forms.Padding(3); - this.testResultTab.Size = new System.Drawing.Size(409, 74); - this.testResultTab.TabIndex = 1; - this.testResultTab.Text = "Test Result Message"; - this.testResultTab.UseVisualStyleBackColor = true; - // - // testResultTextBox - // - this.testResultTextBox.Location = new System.Drawing.Point(-5, 0); - this.testResultTextBox.Multiline = true; - this.testResultTextBox.Name = "testResultTextBox"; - this.testResultTextBox.Size = new System.Drawing.Size(418, 77); - this.testResultTextBox.TabIndex = 0; - // - // ConnectionStringDefinitionDialog - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(547, 500); - this.Controls.Add(this.outputMessageTabControl); - this.Controls.Add(this.statusStrip); - this.Controls.Add(this.connectionStringLabel); - this.Controls.Add(this.dataSourceTypeLabel); - this.Controls.Add(this.providerTypeComboBox); - this.Controls.Add(this.buttonsFlowLayoutPanel); - this.Controls.Add(this.connStringPropertyGrid); - this.Name = "ConnectionStringDefinitionDialog"; - this.Text = "Set up Connection String"; - this.buttonsFlowLayoutPanel.ResumeLayout(false); - this.outputMessageTabControl.ResumeLayout(false); - this.connectionStringTab.ResumeLayout(false); - this.connectionStringTab.PerformLayout(); - this.testResultTab.ResumeLayout(false); - this.testResultTab.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - } - private System.Windows.Forms.TabControl outputMessageTabControl; - private System.Windows.Forms.TextBox testResultTextBox; - private System.Windows.Forms.TabPage testResultTab; - private System.Windows.Forms.TabPage connectionStringTab; - - private System.Windows.Forms.Timer progressTimer; - private System.Windows.Forms.StatusStrip statusStrip; - private System.Windows.Forms.TextBox connStringResult; - private System.Windows.Forms.Label connectionStringLabel; - private System.Windows.Forms.Label dataSourceTypeLabel; - private System.Windows.Forms.ComboBox providerTypeComboBox; - private System.Windows.Forms.Button cancelButton; - private System.Windows.Forms.Button submitButton; - private System.Windows.Forms.Button testButton; - private System.Windows.Forms.FlowLayoutPanel buttonsFlowLayoutPanel; - private System.Windows.Forms.PropertyGrid connStringPropertyGrid; - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.cs deleted file mode 100644 index 560c9527e6..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.cs +++ /dev/null @@ -1,257 +0,0 @@ -// -// -// -// -// $Revision: 1684 $ -// - -using System; -using System.Drawing; -using System.Windows.Forms; -using System.Collections.Generic; -using System.Data.Common; -using System.ComponentModel; - -using SharpDbTools.Data; - -namespace SharpDbTools.Forms -{ - /// - /// This class creates a dialog that can be used to create and test connection strings - /// that can be used with .net 2.0 DbProviders. - /// It utilises .net 2.0 configuration to discover any DbProviderFactories that are - /// installed and configured in machine.config, app.config or user.config using - /// standard .net 2.0 apis. - /// It then enables a user to browse the properties of each type of db connection, - /// set values for them and test the resulting connection string. - /// When the submit button is clicked the dialog is dismissed and the connection - /// string constructed is accessible through the ConnectionString property of the dialog. - /// - public partial class ConnectionStringDefinitionDialog - { - ToolStripProgressBar connectionTestProgressBar = new ToolStripProgressBar(); - ConnectionTestBackgroundWorker testConnectionBackgroundWorker; - string resultMessage; - string invariantName; - ConnectionTestState connectionTestState = ConnectionTestState.UnTested; - - public ConnectionStringDefinitionDialog() - { - // - // The InitializeComponent() call is required for Windows Forms designer support. - // - InitializeComponent(); - this.connStringPropertyGrid.PropertyValueChanged += - new PropertyValueChangedEventHandler(this.ConnStringAttributesViewPropertyValueChanged); - // add a ProgressBar to the statusString - this.statusStrip.Items.Add(connectionTestProgressBar); - this.connectionTestProgressBar.Step = 10; - this.connectionTestProgressBar.Minimum = 0; - this.connectionTestProgressBar.Maximum = 150; - } - - public string InvariantName { - get { - return this.invariantName; - } - set { - this.invariantName = value; - } - } - - public ConnectionTestState ConnectionTestState { - get { - return this.connectionTestState; - } - } - - public string ResultMessage - { - get - { - return resultMessage; - } - set - { - resultMessage = value; - } - } - - public DbConnectionStringBuilder ConnectionStringBuilder - { - get - { - return (DbConnectionStringBuilder)this.connStringPropertyGrid.SelectedObject; - } - } - - public string ConnectionString - { - get - { - return ((DbConnectionStringBuilder)this.connStringPropertyGrid.SelectedObject).ConnectionString; - } - } - - protected override void OnLoad(EventArgs e) - { - // - // set the PropertyGrid to browse the available DbProviders - // - - base.OnLoad(e); - - DbProvidersService service = DbProvidersService.GetDbProvidersService(); - List names = service.Names; - this.providerTypeComboBox.DataSource = names; - this.connStringResult.Text = this.ConnectionString; - } - - void CancelButtonClick(object sender, System.EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - this.Close(); - } - - void ProviderTypeSelectedIndexChanged(object sender, System.EventArgs e) - { - string selection = (string)this.providerTypeComboBox.SelectedItem; - DbProvidersService service = DbProvidersService.GetDbProvidersService(); - DbProviderFactory factory = service[selection]; - DbConnectionStringBuilder builder = factory.CreateConnectionStringBuilder(); - connStringPropertyGrid.SelectedObject = builder; - } - - void ConnStringAttributesViewPropertyValueChanged(Object s, PropertyValueChangedEventArgs args) - { - // looking for changes to the ConnectionString property in the PropertyGrid - this.connStringResult.Text = this.ConnectionString; - this.outputMessageTabControl.SelectTab(this.connectionStringTab); - ResetTestResultTextBox(); - } - - void TestButtonClick(object sender, System.EventArgs e) - { - string dbTypeName = (string)this.providerTypeComboBox.SelectedItem; - testConnectionBackgroundWorker = new ConnectionTestBackgroundWorker(dbTypeName); - testConnectionBackgroundWorker.WorkerSupportsCancellation = false; - progressTimer.Enabled = true; - testConnectionBackgroundWorker.DoWork += - new DoWorkEventHandler(this.TestConnectionBackgroundWorkerDoWork); - testConnectionBackgroundWorker.RunWorkerCompleted += - new RunWorkerCompletedEventHandler(TestConnectionRunWorkerComplete); - testConnectionBackgroundWorker.RunWorkerAsync(); - } - - void ProgressTimerTick(object sender, System.EventArgs e) - { - this.BeginInvoke(new EventHandler(UpdateProgressBar)); - } - - void UpdateProgressBar(object sender, EventArgs e) - { - ToolStripProgressBar p = connectionTestProgressBar; - if (p.Value == p.Maximum) p.Value = 0; - p.PerformStep(); - } - - void SetTestResultTextBox() - { - this.testResultTextBox.Text = ResultMessage; - this.outputMessageTabControl.SelectTab(this.testResultTab); - } - - void ResetTestResultTextBox() - { - this.testResultTextBox.Text = ""; - this.connectionTestState = ConnectionTestState.UnTested; - } - - void TestConnectionBackgroundWorkerDoWork(object sender, DoWorkEventArgs e) - { - DbConnection connection = null; - try - { - // get the current name - - ConnectionTestBackgroundWorker bw = sender as ConnectionTestBackgroundWorker; - string currentDbTypeName = bw.DatabaseType; - - // get the DbProviderFactory for this name - - DbProvidersService service = DbProvidersService.GetDbProvidersService(); - DbProviderFactory factory = service[currentDbTypeName]; - - // get a connection object or this factory - - connection = factory.CreateConnection(); - connection.ConnectionString = this.ConnectionString; - - connection.Open(); - e.Result = "Connection Succeeded"; - connectionTestState = ConnectionTestState.TestSucceeded; - } - catch(Exception ex) - { - e.Result = "Connection Failed: " + ex.Message; - connectionTestState = ConnectionTestState.TestFailed; - } - finally - { - if (connection != null) - { - connection.Close(); - } - } - } - - void TestConnectionRunWorkerComplete(object sender, RunWorkerCompletedEventArgs args) - { - ResultMessage = args.Result as string; - this.Invoke(new EventHandler(TestConnectionCompleted)); - } - - void TestConnectionCompleted(object sender, EventArgs args) - { - progressTimer.Enabled = false; - connectionTestProgressBar.Value = 0; - SetTestResultTextBox(); - testConnectionBackgroundWorker.Dispose(); - } - - void SubmitButtonClick(object sender, System.EventArgs e) - { - string name = (string)this.providerTypeComboBox.SelectedItem; - DbProvidersService service = DbProvidersService.GetDbProvidersService(); - this.InvariantName = service.GetInvariantName(name); - - this.DialogResult = DialogResult.OK; - this.Close(); - } - } - - public enum ConnectionTestState - { - UnTested, - TestFailed, - TestSucceeded - } - - class ConnectionTestBackgroundWorker: BackgroundWorker - { - private string dbTypeName; - - public ConnectionTestBackgroundWorker(string dbTypeName): base() - { - this.dbTypeName = dbTypeName; - } - - public string DatabaseType - { - get - { - return dbTypeName; - } - } - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.resx b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.resx deleted file mode 100644 index 157d9061d2..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ConnectionStringDefinitionDialog.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 247, 17 - - - 371, 17 - - \ No newline at end of file diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.Designer.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.Designer.cs deleted file mode 100644 index bf888294c5..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.Designer.cs +++ /dev/null @@ -1,100 +0,0 @@ -/* - * User: dickon - * Date: 04/08/2006 - * Time: 22:21 - */ -namespace SharpDbTools.Forms -{ - partial class GetConnectionLogicalNameDialog : System.Windows.Forms.Form - { - /// - /// Designer variable used to keep track of non-visual components. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Disposes resources used by the form. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing) { - if (components != null) { - components.Dispose(); - } - } - base.Dispose(disposing); - } - - /// - /// This method is required for Windows Forms designer support. - /// Do not change the method contents inside the source code editor. The Forms designer might - /// not be able to load this method if it was changed manually. - /// - private void InitializeComponent() - { - this.connectionName = new System.Windows.Forms.TextBox(); - this.connectionNameOKButton = new System.Windows.Forms.Button(); - this.connectionNameCancelButton = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // connectionName - // - this.connectionName.Location = new System.Drawing.Point(12, 33); - this.connectionName.MaxLength = 30; - this.connectionName.Name = "connectionName"; - this.connectionName.Size = new System.Drawing.Size(292, 21); - this.connectionName.TabIndex = 0; - // - // connectionNameOKButton - // - this.connectionNameOKButton.Location = new System.Drawing.Point(66, 70); - this.connectionNameOKButton.Name = "connectionNameOKButton"; - this.connectionNameOKButton.Size = new System.Drawing.Size(75, 23); - this.connectionNameOKButton.TabIndex = 1; - this.connectionNameOKButton.Text = "OK"; - this.connectionNameOKButton.UseVisualStyleBackColor = true; - this.connectionNameOKButton.Click += new System.EventHandler(this.ConnectionNameOKButtonClick); - // - // connectionNameCancelButton - // - this.connectionNameCancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.connectionNameCancelButton.Location = new System.Drawing.Point(171, 70); - this.connectionNameCancelButton.Name = "connectionNameCancelButton"; - this.connectionNameCancelButton.Size = new System.Drawing.Size(75, 23); - this.connectionNameCancelButton.TabIndex = 2; - this.connectionNameCancelButton.Text = "Cancel"; - this.connectionNameCancelButton.UseVisualStyleBackColor = true; - this.connectionNameCancelButton.Click += new System.EventHandler(this.ConnectionNameCancelButtonClick); - // - // label1 - // - this.label1.Location = new System.Drawing.Point(12, 9); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(259, 23); - this.label1.TabIndex = 3; - this.label1.Text = "Please provide the name for your db connection:"; - // - // GetConnectionLogicalNameDialog - // - this.AcceptButton = this.connectionNameOKButton; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.connectionNameCancelButton; - this.ClientSize = new System.Drawing.Size(316, 114); - this.Controls.Add(this.label1); - this.Controls.Add(this.connectionNameCancelButton); - this.Controls.Add(this.connectionNameOKButton); - this.Controls.Add(this.connectionName); - this.Name = "GetConnectionLogicalNameDialog"; - this.Text = "Connection Name"; - this.ResumeLayout(false); - this.PerformLayout(); - } - private System.Windows.Forms.TextBox connectionName; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button connectionNameCancelButton; - private System.Windows.Forms.Button connectionNameOKButton; - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.cs deleted file mode 100644 index b485d5180b..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.cs +++ /dev/null @@ -1,46 +0,0 @@ -/* - * User: dickon - * Date: 04/08/2006 - * Time: 22:21 - */ - -using System; -using System.Drawing; -using System.Windows.Forms; - -namespace SharpDbTools.Forms -{ - /// - /// Description of GetConnectionLogicalNameDialog. - /// - public partial class GetConnectionLogicalNameDialog - { - public GetConnectionLogicalNameDialog() - { - // - // The InitializeComponent() call is required for Windows Forms designer support. - // - InitializeComponent(); - - // - // TODO: Add constructor code after the InitializeComponent() call. - // - } - - public string LogicalConnectionName { - get { - return this.connectionName.Text; - } - } - - void ConnectionNameOKButtonClick(object sender, System.EventArgs e) - { - this.Close(); - } - - void ConnectionNameCancelButtonClick(object sender, System.EventArgs e) - { - this.Close(); - } - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.resx b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.resx deleted file mode 100644 index 7080a7d118..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/GetConnectionLogicalNameDialog.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ServerBrowserTool.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ServerBrowserTool.cs deleted file mode 100644 index 2e4b76c179..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/ServerBrowserTool.cs +++ /dev/null @@ -1,454 +0,0 @@ -// -// -// -// -// $Revision: 1766 $ -// - -/* - * User: Dickon Field - * Date: 12/06/2006 - * Time: 06:25 - */ - -using System; -using System.Windows.Forms; -using System.Data; -using System.Data.Common; -using System.Collections.Generic; - -using ICSharpCode.Core; -using ICSharpCode.SharpDevelop.Gui; -using SharpDbTools.Data; - -namespace SharpDbTools.Forms -{ - /// - /// Enables a user to browse metadata associated with a db server and to open resources - /// referenced therein. The intention is to extend this to other server processes over - /// time. - /// - public class ServerBrowserTool : AbstractPadContent - { - Panel ctl; - - /// - /// ServerBrowserTool hosts one or more TreeViews providing views of types - /// of server. Currently it shows only relational database servers. - /// - public ServerBrowserTool() - { - LoggingService.Debug("Loading ServerBrowserTool"); - ServerToolTreeView dbTree = new ServerToolTreeView(); - dbTree.Dock = DockStyle.Fill; - ctl = new Panel(); - ctl.Controls.Add(dbTree); - } - - /// - /// The representing the pad - /// - public override Control Control { - get { - return ctl; - } - } - - /// - /// Rebuildes the pad - /// - public override void RedrawContent() - { - // TODO: Rebuild the whole pad control here, renew all resource strings whatever - // Note that you do not need to recreate the control. - } - - /// - /// Cleans up all used resources - /// - public override void Dispose() - { - ctl.Dispose(); - } - } - - class ServerToolTreeView : TreeView - { - public ServerToolTreeView(): base() - { - // this is the wrong place for this, but lets give it a go... - DbModelInfoService.LoadNamesFromFiles(); - Rebuild(); - - } - - /// - /// Rebuilds the database connection tree. - /// Should only be called from a delegate via Invoke or BeginInvoke. - /// - public void Rebuild() - { - this.BeginUpdate(); - // TODO: put the Rebuild... behaviour into a view builder; - TreeNode dbNode = null; - TreeNode[] dbNodes = this.Nodes.Find("DatabaseExplorer", true); - - // lets assume there is only one with this above name - if (dbNodes.Length == 0) { - LoggingService.Debug("could not find DatabaseExplorer Node, so creating it now"); - dbNode = new TreeNode(); - dbNode.Text = "Database Explorer"; - dbNode.Name = "DatabaseExplorer"; - this.Nodes.Add(dbNode); - } else { - dbNode = dbNodes[0]; - } - - // create the context menu for the database server node - ContextMenuStrip cMenu = new ContextMenuStrip(); - ToolStripMenuItem addConnectionMenuItem = - new ToolStripMenuItem("Add Connection"); - addConnectionMenuItem.Click += new EventHandler(AddDbConnectionClickHandler); - - ToolStripMenuItem deleteConnectionMenuItem = - new ToolStripMenuItem("Delete Connection"); - deleteConnectionMenuItem.Click += new EventHandler(DeleteDbConnectionClickHandler); - - ToolStripMenuItem saveMetadataMenuItem = - new ToolStripMenuItem("Save All"); - saveMetadataMenuItem.Click += new EventHandler(SaveDbModelInfoClickHandler); - - - cMenu.Items.AddRange(new ToolStripMenuItem[] - { - addConnectionMenuItem, - deleteConnectionMenuItem, - saveMetadataMenuItem - } - ); - dbNode.ContextMenuStrip = cMenu; - - // Rebuild each of the root nodes in the ServerToolTreeView - dbNode.Nodes.Clear(); - foreach (string name in DbModelInfoService.Names) { - TreeNode dbModelInfoNode = CreateDbModelInfoNode(name); - TreeNode connectionNode = CreateConnectionPropertiesNode(name); - TreeNode metadataNode = CreateMetaDataNode(name); - dbModelInfoNode.Nodes.Add(connectionNode); - dbModelInfoNode.Nodes.Add(metadataNode); - dbNode.Nodes.Add(dbModelInfoNode); - } - this.EndUpdate(); - } - - public TreeNode CreateDbModelInfoNode(string name) - { - TreeNode treeNode = new TreeNode(name); - treeNode.Tag = "ConnectionRoot"; - // create and add the menustrip for this node - - NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(treeNode); - - // create menu items - ToolStripMenuItem setConnectionStringMenuItem = - new ToolStripMenuItem("Set Connection String"); - setConnectionStringMenuItem.Click += new EventHandler(SetConnectionStringOnDbModelInfoClickHandler); - - ToolStripMenuItem loadMetadataFromConnectionMenuItem = - new ToolStripMenuItem("Load Metadata from Connection"); - loadMetadataFromConnectionMenuItem.Click += new EventHandler(LoadMetadataFromConnectionClickHandler); - - ToolStripMenuItem loadMetadataFromFileMenuItem = - new ToolStripMenuItem("Load Metadata from File"); - loadMetadataFromFileMenuItem.Click += new EventHandler(LoadMetadataFromFileClickHandler); - - - cMenu.Items.AddRange(new ToolStripMenuItem[] - { - setConnectionStringMenuItem, - loadMetadataFromConnectionMenuItem, - loadMetadataFromFileMenuItem - }); - - treeNode.ContextMenuStrip = cMenu; - return treeNode; - } - - /// - /// - /// - /// - /// a TreeNode representation of the connection properties - /// of the connection - public TreeNode CreateConnectionPropertiesNode(string name) - { - // create sub TreeNodes for the connection string and invariant name if they exist - DbModelInfo modelInfo = DbModelInfoService.GetDbModelInfo(name); - if (name == null) throw new KeyNotFoundException(); - string connectionString = modelInfo.ConnectionString; - string invariantName = modelInfo.InvariantName; - - TreeNode attributesNode = new TreeNode("Connection Properties"); - - if (connectionString != null) { - TreeNode cstringNode = new TreeNode("Connection String: " + connectionString); - attributesNode.Nodes.Add(cstringNode); - } - - if (invariantName != null) { - TreeNode invNameNode = new TreeNode("Invariant Name: " + invariantName); - attributesNode.Nodes.Add(invNameNode); - } - - return attributesNode; - } - - public TreeNode CreateMetaDataNode(string name) - { - TreeNode metaNode = new TreeNode("Db Objects"); - metaNode.Name = name + ":MetaData"; - DbModelInfo info = DbModelInfoService.GetDbModelInfo(name); - DataTable metadataCollectionsTable = info.Tables[TableNames.MetaDataCollections]; - if (metadataCollectionsTable != null) { - for (int i = 0; i < TableNames.PrimaryObjects.Length; i++) { - string metadataCollectionName = TableNames.PrimaryObjects[i]; - LoggingService.Debug("looking for metadata: " + metadataCollectionName); - DataTable metaCollectionTable = info.Tables[metadataCollectionName]; - LoggingService.Debug("found metadata collection: " + metadataCollectionName); - TreeNode collectionNode = new TreeNode(metadataCollectionName); - collectionNode.Name = name + ":Collection:" + metadataCollectionName; - metaNode.Nodes.Add(collectionNode); - foreach (DataRow dbObjectRow in metaCollectionTable.Rows) { - // TODO: >>>>>>>NEXT: at this point it is not enough to make this assumption - it doesn't hold - // for SQLServer for example, only for Oracle. The following text illustrates the difference between - // SQLServer and Oracle for the Users metadatacollection. - - /* - * C:\workspace\ExampleDBFactories\DbExperiments\bin\Debug>DbExperiments.exe Users - -uid user_name createdate updatedate -0 public 08/04/2003 09:10:19 14/10/2005 01:36:15 -1 dbo 08/04/2003 09:10:19 08/04/2003 09:10:19 -2 guest 08/04/2003 09:10:19 08/04/2003 09:10:19 -3 INFORMATION_SCHEMA 14/10/2005 01:36:06 14/10/2005 01:36:06 -4 sys 14/10/2005 01:36:06 14/10/2005 01:36:06 -5 ##MS_AgentSigningCertificate## 26/08/2006 23:04:16 26/08/2006 23:04:16 -16384 db_owner 08/04/2003 09:10:19 14/10/2005 01:36:15 -16385 db_accessadmin 08/04/2003 09:10:19 14/10/2005 01:36:15 -16386 db_securityadmin 08/04/2003 09:10:19 14/10/2005 01:36:15 -16387 db_ddladmin 08/04/2003 09:10:19 14/10/2005 01:36:15 -16389 db_backupoperator 08/04/2003 09:10:19 14/10/2005 01:36:15 -16390 db_datareader 08/04/2003 09:10:19 14/10/2005 01:36:15 -16391 db_datawriter 08/04/2003 09:10:19 14/10/2005 01:36:15 -16392 db_denydatareader 08/04/2003 09:10:19 14/10/2005 01:36:15 -16393 db_denydatawriter 08/04/2003 09:10:19 14/10/2005 01:36:15 - -C:\workspace\ExampleDBFactories\DbExperiments\bin\Debug>DbExperiments.exe Users - -NAME ID CREATEDATE -ANONYMOUS 28 07/02/2006 22:40:15 -CTXSYS 25 07/02/2006 22:38:38 -DBSNMP 23 07/02/2006 22:35:21 -DEV 36 26/07/2006 00:09:58 -DIP 18 07/02/2006 22:17:03 -FLOWS_020100 35 07/02/2006 22:52:43 -FLOWS_FILES 34 07/02/2006 22:52:43 -HR 33 07/02/2006 22:51:21 -MDSYS 32 07/02/2006 22:44:47 -OUTLN 11 07/02/2006 22:10:24 -SYS 0 07/02/2006 22:10:13 -SYSTEM 5 07/02/2006 22:10:13 -TSMSYS 20 07/02/2006 22:27:15 -XDB 27 07/02/2006 22:40:14 - -C:\workspace\ExampleDBFactories\DbExperiments\bin\Debug> - * - * - */ - TreeNode objectNode = null; - if (dbObjectRow.ItemArray.Length > 1) { - objectNode = new TreeNode((string)dbObjectRow[1]); - objectNode.Name = name + ":Object:" + (string)dbObjectRow[1]; - } else { - objectNode = new TreeNode((string)dbObjectRow[0]); - objectNode.Name = name + ":Object:" + (string)dbObjectRow[0]; - } - // HACK All this building stuff needs to be externalise I think - if (metadataCollectionName.Equals("Tables")) { - // add the handler to invoke describer - NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(objectNode); - ToolStripMenuItem invokeDescriberMenuItem = new ToolStripMenuItem("Describe"); - invokeDescriberMenuItem.Click += new EventHandler(DescribeTableClickHandler); - cMenu.Items.Add(invokeDescriberMenuItem); - objectNode.ContextMenuStrip = cMenu; - } - - - -// TreeNode ownerNode = new TreeNode("Owner: " + (string)dbObjectRow["OWNER"]); -// TreeNode typeNode = new TreeNode("Type: " + (string)dbObjectRow["TYPE"]); -// // TODO: add fields to each Table -// TreeNode fieldsNode = new TreeNode("Fields [TODO]"); -// objectNode.Nodes.AddRange(new TreeNode[] {ownerNode, typeNode, fieldsNode }); - collectionNode.Nodes.Add(objectNode); - } - } - } - return metaNode; - } - - /// - /// Uses a dialog to get the logical name of a new Connection then - /// adds a new DbModelInfo for it to the cache and updates the DatabaseServer - /// Tree. - /// - /// - /// - public void AddDbConnectionClickHandler(object sender, EventArgs e) - { - LoggingService.Debug("add connection clicked"); - - // get the logical name of the new connection - string logicalName = null; - using (GetConnectionLogicalNameDialog dialog = new GetConnectionLogicalNameDialog()) { - dialog.ShowDialog(); - logicalName = dialog.LogicalConnectionName; - } - if (logicalName.Equals("") || logicalName == null) return; - - LoggingService.Debug("name received is: " + logicalName); - - // add a new DbModelInfo to the cache - DbModelInfoService.Add(logicalName, null, null); - - // rebuild the database server node - this.BeginInvoke(new MethodInvoker(this.Rebuild)); - } - - public void DeleteDbConnectionClickHandler(object sender, EventArgs e) - { - LoggingService.Debug("delete connection clicked"); - } - - public void SaveDbModelInfoClickHandler(object sender, EventArgs e) - { - // save each DbModelInfo separately, confirming overwrite where necessary - LoggingService.Debug("save all metadata clicked - will iterate through each and attempt to save"); - IList names = DbModelInfoService.Names; - foreach (string name in names) { - bool saved = DbModelInfoService.SaveToFile(name, false); - if (!saved) { - DialogResult result = MessageBox.Show("Overwrite existing file for connection: " + name + "?", - "File exists for connection", MessageBoxButtons.YesNo, - MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); - if (result.Equals(DialogResult.Yes)) { - DbModelInfoService.SaveToFile(name, true); - } - } - } - } - - public void LoadMetadataFromFileClickHandler(object sender, EventArgs e) - { - LoggingService.Debug("load metadata from file clicked"); - string logicalConnectionName = getConnectionName(sender); - DbModelInfoService.LoadFromFile(logicalConnectionName); - this.BeginInvoke(new MethodInvoker(this.Rebuild)); - } - - private static string getConnectionName(object sender) - { - ToolStripMenuItem menuItem = sender as ToolStripMenuItem; - NodeAwareContextMenuStrip toolStrip = menuItem.Owner as NodeAwareContextMenuStrip; - TreeNode node = toolStrip.TreeNode; - while ((node.Tag == null) || (!node.Tag.Equals("ConnectionRoot"))) { - node = node.Parent; - } - string connectionLogicalName = node.Text; - return connectionLogicalName; - } - - public void SetConnectionStringOnDbModelInfoClickHandler(object sender, EventArgs e) - { - string connectionLogicalName = getConnectionName(sender); - LoggingService.Debug("add connection string clicked for item with name: " + connectionLogicalName); - - // use the ConnectionStringDefinitionDialog to get a connection string and invariant name - ConnectionStringDefinitionDialog definitionDialog = new ConnectionStringDefinitionDialog(); - DialogResult result = definitionDialog.ShowDialog(); - - // if the dialog was cancelled then do nothing - if (result == DialogResult.Cancel) { - return; - } - - // if the dialog was submitted and connection string has changed then clear the DbModelInfo metadata - // note that is is not required for the Connection string to be valid - it may be work - // in progress and a user might want to save a partially formed connection string - - DbModelInfo dbModelInfo = DbModelInfoService.GetDbModelInfo(connectionLogicalName); - string connectionString = dbModelInfo.ConnectionString; - string newConnectionString = definitionDialog.ConnectionString; - - if (newConnectionString == null) { - return; - } - - dbModelInfo.ConnectionString = newConnectionString; - dbModelInfo.InvariantName = definitionDialog.InvariantName; - - // rebuild the database explorer node - this.BeginInvoke(new MethodInvoker(this.Rebuild)); - } - - public void LoadMetadataFromConnectionClickHandler(object sender, EventArgs args) - { - string connectionLogicalName = getConnectionName(sender); - LoggingService.Debug("load metadata from connection clicked for connection with name: " - + connectionLogicalName); - try { - DbModelInfoService.LoadMetadataFromConnection(connectionLogicalName); - } - catch(DbException e) { - MessageService.ShowError(e, - "An Exception was thrown while trying to connect to: " + connectionLogicalName); - } - } - - public void DescribeTableClickHandler(object sender, EventArgs args) - { - string logicalConnectionName = getConnectionName(sender); - ToolStripMenuItem item = sender as ToolStripMenuItem; - NodeAwareContextMenuStrip s = item.Owner as NodeAwareContextMenuStrip; - string tableName = s.TreeNode.Text; - LoggingService.Debug("describe table clicked for: " + logicalConnectionName + " and table name: " + tableName); - DataTable tableInfo = DbModelInfoService.GetTableInfo(logicalConnectionName, tableName); - //DataSet dbModelInfo = DbModelInfoService.GetDbModelInfo(logicalConnectionName); -// TableDescribeForm describeForm = new TableDescribeForm(tableInfo); -// describeForm.Show(); - TableDescribeViewContent tableDescribeViewContent = new TableDescribeViewContent(tableInfo, tableName); - WorkbenchSingleton.Workbench.ShowView(tableDescribeViewContent); - } - } - - class NodeAwareContextMenuStrip : ContextMenuStrip - { - TreeNode treeNodeAttached; - - public NodeAwareContextMenuStrip(TreeNode treeNodeAttached) : base() - { - this.treeNodeAttached = treeNodeAttached; - } - - public TreeNode TreeNode { - get { - return treeNodeAttached; - } - } - } -} - - - - - diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableDescribeViewContent.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableDescribeViewContent.cs deleted file mode 100644 index b17a45151b..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableDescribeViewContent.cs +++ /dev/null @@ -1,72 +0,0 @@ -/* - * User: dickon - * Date: 06/09/2006 - * Time: 08:43 - * - */ - -using System; -using System.Data; -using System.Windows.Forms; - -using ICSharpCode.SharpDevelop.Gui; -using SharpDbTools.Data; - - -namespace SharpDbTools.Forms -{ - /// - /// Description of TableDescribeViewContent. - /// - public class TableDescribeViewContent : AbstractViewContent - { - DataTable tableInfo; - DataGridView tableInfoDataGridView; - - - public TableDescribeViewContent(DataTable tableInfo, string tableName) : base("table: " + tableName) - { - this.tableInfo = tableInfo; - this.tableInfoDataGridView = new DataGridView(); - DataGridView v = this.tableInfoDataGridView; - - v.AutoGenerateColumns = false; - v.AutoSize = true; - - v.DataSource = this.tableInfo; - //v.DataMember = TableNames.Columns; - - string[] fieldsToDisplay = ColumnNames.TableTableFieldsToDisplay; - string[] fieldColumnNames = ColumnNames.TableTableFieldsColumnHeaders; - for (int i = 0; i < fieldsToDisplay.Length; i++ ) { - DataGridViewColumn c = new DataGridViewTextBoxColumn(); - c.DataPropertyName = fieldsToDisplay[i]; - c.Name = fieldColumnNames[i]; - v.Columns.Add(c); - } - v.AllowUserToAddRows = false; - v.AllowUserToDeleteRows = false; - v.AllowUserToResizeRows = false; - v.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; - v.AutoResizeColumns(); - } - - public override System.Windows.Forms.Control Control { - get { - return this.tableInfoDataGridView; - } - } - - public override bool IsReadOnly { - get { - return true; - } - } - - public override bool IsViewOnly { - get { - return true; - } - } - } -} diff --git a/src/AddIns/Misc/SharpServerTools/SharpServerTools.addin b/src/AddIns/Misc/SharpServerTools/SharpServerTools.addin deleted file mode 100644 index 7ee944f77b..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpServerTools.addin +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/AddIns/Misc/SharpServerTools/SharpServerTools.csproj b/src/AddIns/Misc/SharpServerTools/SharpServerTools.csproj deleted file mode 100644 index 08b126616d..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpServerTools.csproj +++ /dev/null @@ -1,71 +0,0 @@ - - - Library - SharpServerTools - SharpServerTools - Debug - AnyCPU - false - {E8922383-B6F5-4107-AB82-49662D98B2FE} - False - False - Auto - 4194304 - AnyCPU - 4096 - 4 - false - - - obj\ - obj\Debug\ - ..\..\..\..\AddIns\AddIns\Misc\SharpServerTools\ - False - DEBUG;TRACE - true - Full - True - - - obj\ - obj\Release\ - ..\..\..\..\AddIns\AddIns\Misc\SharpServerTools\ - True - TRACE - false - None - False - - - - - - - - - - - - - - - - - Always - - - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} - ICSharpCode.Core - - - {2748AD25-9C63-4E12-877B-4DCE96FBED54} - ICSharpCode.SharpDevelop - - - - {F2CC804D-5A9C-4875-A423-4FB9A5D07018} - SharpDbTools - - - - \ No newline at end of file diff --git a/src/AddIns/Misc/SharpServerTools/SharpServerTools.sln b/src/AddIns/Misc/SharpServerTools/SharpServerTools.sln deleted file mode 100644 index 9a5b8c7bf0..0000000000 --- a/src/AddIns/Misc/SharpServerTools/SharpServerTools.sln +++ /dev/null @@ -1,6 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# SharpDevelop 2.1.0.1768 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpServerTools", "SharpServerTools.csproj", "{E8922383-B6F5-4107-AB82-49662D98B2FE}" -EndProject -Global -EndGlobal diff --git a/src/AddIns/Misc/SharpServerTools/Src/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/SharpServerTools/Src/Configuration/AssemblyInfo.cs deleted file mode 100644 index 8721b99386..0000000000 --- a/src/AddIns/Misc/SharpServerTools/Src/Configuration/AssemblyInfo.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following -// attributes. -// -// change them to the information which is associated with the assembly -// you compile. - -[assembly: AssemblyTitle("")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has following format : -// -// Major.Minor.Build.Revision -// -// You can specify all values by your own or you can build default build and revision -// numbers with the '*' character (the default): - -[assembly: AssemblyVersion("1.0.*")] \ No newline at end of file diff --git a/src/AddIns/Misc/SharpServerTools/Src/Forms/ServerBrowserTool.cs b/src/AddIns/Misc/SharpServerTools/Src/Forms/ServerBrowserTool.cs deleted file mode 100644 index 53b1c90b2f..0000000000 --- a/src/AddIns/Misc/SharpServerTools/Src/Forms/ServerBrowserTool.cs +++ /dev/null @@ -1,455 +0,0 @@ -// -// -// -// -// $Revision: 1766 $ -// - -/* - * User: Dickon Field - * Date: 12/06/2006 - * Time: 06:25 - */ - -using System; -using System.Windows.Forms; -using System.Data; -using System.Data.Common; -using System.Collections.Generic; - -using ICSharpCode.Core; -using ICSharpCode.SharpDevelop.Gui; -using SharpDbTools.Data; -using SharpDbTools.Forms; - -namespace SharpServerTools.Forms -{ - /// - /// Enables a user to browse metadata associated with a db server and to open resources - /// referenced therein. The intention is to extend this to other server processes over - /// time. - /// - public class ServerBrowserTool : AbstractPadContent - { - Panel ctl; - - /// - /// ServerBrowserTool hosts one or more TreeViews providing views of types - /// of server. Currently it shows only relational database servers. - /// - public ServerBrowserTool() - { - LoggingService.Debug("Loading ServerBrowserTool"); - ServerToolTreeView dbTree = new ServerToolTreeView(); - dbTree.Dock = DockStyle.Fill; - ctl = new Panel(); - ctl.Controls.Add(dbTree); - } - - /// - /// The representing the pad - /// - public override Control Control { - get { - return ctl; - } - } - - /// - /// Rebuildes the pad - /// - public override void RedrawContent() - { - // TODO: Rebuild the whole pad control here, renew all resource strings whatever - // Note that you do not need to recreate the control. - } - - /// - /// Cleans up all used resources - /// - public override void Dispose() - { - ctl.Dispose(); - } - } - - class ServerToolTreeView : TreeView - { - public ServerToolTreeView(): base() - { - // this is the wrong place for this, but lets give it a go... - DbModelInfoService.LoadNamesFromFiles(); - Rebuild(); - - } - - /// - /// Rebuilds the database connection tree. - /// Should only be called from a delegate via Invoke or BeginInvoke. - /// - public void Rebuild() - { - this.BeginUpdate(); - // TODO: put the Rebuild... behaviour into a view builder; - TreeNode dbNode = null; - TreeNode[] dbNodes = this.Nodes.Find("DatabaseExplorer", true); - - // lets assume there is only one with this above name - if (dbNodes.Length == 0) { - LoggingService.Debug("could not find DatabaseExplorer Node, so creating it now"); - dbNode = new TreeNode(); - dbNode.Text = "Database Explorer"; - dbNode.Name = "DatabaseExplorer"; - this.Nodes.Add(dbNode); - } else { - dbNode = dbNodes[0]; - } - - // create the context menu for the database server node - ContextMenuStrip cMenu = new ContextMenuStrip(); - ToolStripMenuItem addConnectionMenuItem = - new ToolStripMenuItem("Add Connection"); - addConnectionMenuItem.Click += new EventHandler(AddDbConnectionClickHandler); - - ToolStripMenuItem deleteConnectionMenuItem = - new ToolStripMenuItem("Delete Connection"); - deleteConnectionMenuItem.Click += new EventHandler(DeleteDbConnectionClickHandler); - - ToolStripMenuItem saveMetadataMenuItem = - new ToolStripMenuItem("Save All"); - saveMetadataMenuItem.Click += new EventHandler(SaveDbModelInfoClickHandler); - - - cMenu.Items.AddRange(new ToolStripMenuItem[] - { - addConnectionMenuItem, - deleteConnectionMenuItem, - saveMetadataMenuItem - } - ); - dbNode.ContextMenuStrip = cMenu; - - // Rebuild each of the root nodes in the ServerToolTreeView - dbNode.Nodes.Clear(); - foreach (string name in DbModelInfoService.Names) { - TreeNode dbModelInfoNode = CreateDbModelInfoNode(name); - TreeNode connectionNode = CreateConnectionPropertiesNode(name); - TreeNode metadataNode = CreateMetaDataNode(name); - dbModelInfoNode.Nodes.Add(connectionNode); - dbModelInfoNode.Nodes.Add(metadataNode); - dbNode.Nodes.Add(dbModelInfoNode); - } - this.EndUpdate(); - } - - public TreeNode CreateDbModelInfoNode(string name) - { - TreeNode treeNode = new TreeNode(name); - treeNode.Tag = "ConnectionRoot"; - // create and add the menustrip for this node - - NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(treeNode); - - // create menu items - ToolStripMenuItem setConnectionStringMenuItem = - new ToolStripMenuItem("Set Connection String"); - setConnectionStringMenuItem.Click += new EventHandler(SetConnectionStringOnDbModelInfoClickHandler); - - ToolStripMenuItem loadMetadataFromConnectionMenuItem = - new ToolStripMenuItem("Load Metadata from Connection"); - loadMetadataFromConnectionMenuItem.Click += new EventHandler(LoadMetadataFromConnectionClickHandler); - - ToolStripMenuItem loadMetadataFromFileMenuItem = - new ToolStripMenuItem("Load Metadata from File"); - loadMetadataFromFileMenuItem.Click += new EventHandler(LoadMetadataFromFileClickHandler); - - - cMenu.Items.AddRange(new ToolStripMenuItem[] - { - setConnectionStringMenuItem, - loadMetadataFromConnectionMenuItem, - loadMetadataFromFileMenuItem - }); - - treeNode.ContextMenuStrip = cMenu; - return treeNode; - } - - /// - /// - /// - /// - /// a TreeNode representation of the connection properties - /// of the connection - public TreeNode CreateConnectionPropertiesNode(string name) - { - // create sub TreeNodes for the connection string and invariant name if they exist - DbModelInfo modelInfo = DbModelInfoService.GetDbModelInfo(name); - if (name == null) throw new KeyNotFoundException(); - string connectionString = modelInfo.ConnectionString; - string invariantName = modelInfo.InvariantName; - - TreeNode attributesNode = new TreeNode("Connection Properties"); - - if (connectionString != null) { - TreeNode cstringNode = new TreeNode("Connection String: " + connectionString); - attributesNode.Nodes.Add(cstringNode); - } - - if (invariantName != null) { - TreeNode invNameNode = new TreeNode("Invariant Name: " + invariantName); - attributesNode.Nodes.Add(invNameNode); - } - - return attributesNode; - } - - public TreeNode CreateMetaDataNode(string name) - { - TreeNode metaNode = new TreeNode("Db Objects"); - metaNode.Name = name + ":MetaData"; - DbModelInfo info = DbModelInfoService.GetDbModelInfo(name); - DataTable metadataCollectionsTable = info.Tables[TableNames.MetaDataCollections]; - if (metadataCollectionsTable != null) { - for (int i = 0; i < TableNames.PrimaryObjects.Length; i++) { - string metadataCollectionName = TableNames.PrimaryObjects[i]; - LoggingService.Debug("looking for metadata: " + metadataCollectionName); - DataTable metaCollectionTable = info.Tables[metadataCollectionName]; - LoggingService.Debug("found metadata collection: " + metadataCollectionName); - TreeNode collectionNode = new TreeNode(metadataCollectionName); - collectionNode.Name = name + ":Collection:" + metadataCollectionName; - metaNode.Nodes.Add(collectionNode); - foreach (DataRow dbObjectRow in metaCollectionTable.Rows) { - // TODO: >>>>>>>NEXT: at this point it is not enough to make this assumption - it doesn't hold - // for SQLServer for example, only for Oracle. The following text illustrates the difference between - // SQLServer and Oracle for the Users metadatacollection. - - /* - * C:\workspace\ExampleDBFactories\DbExperiments\bin\Debug>DbExperiments.exe Users - -uid user_name createdate updatedate -0 public 08/04/2003 09:10:19 14/10/2005 01:36:15 -1 dbo 08/04/2003 09:10:19 08/04/2003 09:10:19 -2 guest 08/04/2003 09:10:19 08/04/2003 09:10:19 -3 INFORMATION_SCHEMA 14/10/2005 01:36:06 14/10/2005 01:36:06 -4 sys 14/10/2005 01:36:06 14/10/2005 01:36:06 -5 ##MS_AgentSigningCertificate## 26/08/2006 23:04:16 26/08/2006 23:04:16 -16384 db_owner 08/04/2003 09:10:19 14/10/2005 01:36:15 -16385 db_accessadmin 08/04/2003 09:10:19 14/10/2005 01:36:15 -16386 db_securityadmin 08/04/2003 09:10:19 14/10/2005 01:36:15 -16387 db_ddladmin 08/04/2003 09:10:19 14/10/2005 01:36:15 -16389 db_backupoperator 08/04/2003 09:10:19 14/10/2005 01:36:15 -16390 db_datareader 08/04/2003 09:10:19 14/10/2005 01:36:15 -16391 db_datawriter 08/04/2003 09:10:19 14/10/2005 01:36:15 -16392 db_denydatareader 08/04/2003 09:10:19 14/10/2005 01:36:15 -16393 db_denydatawriter 08/04/2003 09:10:19 14/10/2005 01:36:15 - -C:\workspace\ExampleDBFactories\DbExperiments\bin\Debug>DbExperiments.exe Users - -NAME ID CREATEDATE -ANONYMOUS 28 07/02/2006 22:40:15 -CTXSYS 25 07/02/2006 22:38:38 -DBSNMP 23 07/02/2006 22:35:21 -DEV 36 26/07/2006 00:09:58 -DIP 18 07/02/2006 22:17:03 -FLOWS_020100 35 07/02/2006 22:52:43 -FLOWS_FILES 34 07/02/2006 22:52:43 -HR 33 07/02/2006 22:51:21 -MDSYS 32 07/02/2006 22:44:47 -OUTLN 11 07/02/2006 22:10:24 -SYS 0 07/02/2006 22:10:13 -SYSTEM 5 07/02/2006 22:10:13 -TSMSYS 20 07/02/2006 22:27:15 -XDB 27 07/02/2006 22:40:14 - -C:\workspace\ExampleDBFactories\DbExperiments\bin\Debug> - * - * - */ - TreeNode objectNode = null; - if (dbObjectRow.ItemArray.Length > 1) { - objectNode = new TreeNode((string)dbObjectRow[1]); - objectNode.Name = name + ":Object:" + (string)dbObjectRow[1]; - } else { - objectNode = new TreeNode((string)dbObjectRow[0]); - objectNode.Name = name + ":Object:" + (string)dbObjectRow[0]; - } - // HACK All this building stuff needs to be externalise I think - if (metadataCollectionName.Equals("Tables")) { - // add the handler to invoke describer - NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(objectNode); - ToolStripMenuItem invokeDescriberMenuItem = new ToolStripMenuItem("Describe"); - invokeDescriberMenuItem.Click += new EventHandler(DescribeTableClickHandler); - cMenu.Items.Add(invokeDescriberMenuItem); - objectNode.ContextMenuStrip = cMenu; - } - - - -// TreeNode ownerNode = new TreeNode("Owner: " + (string)dbObjectRow["OWNER"]); -// TreeNode typeNode = new TreeNode("Type: " + (string)dbObjectRow["TYPE"]); -// // TODO: add fields to each Table -// TreeNode fieldsNode = new TreeNode("Fields [TODO]"); -// objectNode.Nodes.AddRange(new TreeNode[] {ownerNode, typeNode, fieldsNode }); - collectionNode.Nodes.Add(objectNode); - } - } - } - return metaNode; - } - - /// - /// Uses a dialog to get the logical name of a new Connection then - /// adds a new DbModelInfo for it to the cache and updates the DatabaseServer - /// Tree. - /// - /// - /// - public void AddDbConnectionClickHandler(object sender, EventArgs e) - { - LoggingService.Debug("add connection clicked"); - - // get the logical name of the new connection - string logicalName = null; - using (GetConnectionLogicalNameDialog dialog = new GetConnectionLogicalNameDialog()) { - dialog.ShowDialog(); - logicalName = dialog.LogicalConnectionName; - } - if (logicalName.Equals("") || logicalName == null) return; - - LoggingService.Debug("name received is: " + logicalName); - - // add a new DbModelInfo to the cache - DbModelInfoService.Add(logicalName, null, null); - - // rebuild the database server node - this.BeginInvoke(new MethodInvoker(this.Rebuild)); - } - - public void DeleteDbConnectionClickHandler(object sender, EventArgs e) - { - LoggingService.Debug("delete connection clicked"); - } - - public void SaveDbModelInfoClickHandler(object sender, EventArgs e) - { - // save each DbModelInfo separately, confirming overwrite where necessary - LoggingService.Debug("save all metadata clicked - will iterate through each and attempt to save"); - IList names = DbModelInfoService.Names; - foreach (string name in names) { - bool saved = DbModelInfoService.SaveToFile(name, false); - if (!saved) { - DialogResult result = MessageBox.Show("Overwrite existing file for connection: " + name + "?", - "File exists for connection", MessageBoxButtons.YesNo, - MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); - if (result.Equals(DialogResult.Yes)) { - DbModelInfoService.SaveToFile(name, true); - } - } - } - } - - public void LoadMetadataFromFileClickHandler(object sender, EventArgs e) - { - LoggingService.Debug("load metadata from file clicked"); - string logicalConnectionName = getConnectionName(sender); - DbModelInfoService.LoadFromFile(logicalConnectionName); - this.BeginInvoke(new MethodInvoker(this.Rebuild)); - } - - private static string getConnectionName(object sender) - { - ToolStripMenuItem menuItem = sender as ToolStripMenuItem; - NodeAwareContextMenuStrip toolStrip = menuItem.Owner as NodeAwareContextMenuStrip; - TreeNode node = toolStrip.TreeNode; - while ((node.Tag == null) || (!node.Tag.Equals("ConnectionRoot"))) { - node = node.Parent; - } - string connectionLogicalName = node.Text; - return connectionLogicalName; - } - - public void SetConnectionStringOnDbModelInfoClickHandler(object sender, EventArgs e) - { - string connectionLogicalName = getConnectionName(sender); - LoggingService.Debug("add connection string clicked for item with name: " + connectionLogicalName); - - // use the ConnectionStringDefinitionDialog to get a connection string and invariant name - ConnectionStringDefinitionDialog definitionDialog = new ConnectionStringDefinitionDialog(); - DialogResult result = definitionDialog.ShowDialog(); - - // if the dialog was cancelled then do nothing - if (result == DialogResult.Cancel) { - return; - } - - // if the dialog was submitted and connection string has changed then clear the DbModelInfo metadata - // note that is is not required for the Connection string to be valid - it may be work - // in progress and a user might want to save a partially formed connection string - - DbModelInfo dbModelInfo = DbModelInfoService.GetDbModelInfo(connectionLogicalName); - string connectionString = dbModelInfo.ConnectionString; - string newConnectionString = definitionDialog.ConnectionString; - - if (newConnectionString == null) { - return; - } - - dbModelInfo.ConnectionString = newConnectionString; - dbModelInfo.InvariantName = definitionDialog.InvariantName; - - // rebuild the database explorer node - this.BeginInvoke(new MethodInvoker(this.Rebuild)); - } - - public void LoadMetadataFromConnectionClickHandler(object sender, EventArgs args) - { - string connectionLogicalName = getConnectionName(sender); - LoggingService.Debug("load metadata from connection clicked for connection with name: " - + connectionLogicalName); - try { - DbModelInfoService.LoadMetadataFromConnection(connectionLogicalName); - } - catch(DbException e) { - MessageService.ShowError(e, - "An Exception was thrown while trying to connect to: " + connectionLogicalName); - } - } - - public void DescribeTableClickHandler(object sender, EventArgs args) - { - string logicalConnectionName = getConnectionName(sender); - ToolStripMenuItem item = sender as ToolStripMenuItem; - NodeAwareContextMenuStrip s = item.Owner as NodeAwareContextMenuStrip; - string tableName = s.TreeNode.Text; - LoggingService.Debug("describe table clicked for: " + logicalConnectionName + " and table name: " + tableName); - DataTable tableInfo = DbModelInfoService.GetTableInfo(logicalConnectionName, tableName); - //DataSet dbModelInfo = DbModelInfoService.GetDbModelInfo(logicalConnectionName); -// TableDescribeForm describeForm = new TableDescribeForm(tableInfo); -// describeForm.Show(); - TableDescribeViewContent tableDescribeViewContent = new TableDescribeViewContent(tableInfo, tableName); - WorkbenchSingleton.Workbench.ShowView(tableDescribeViewContent); - } - } - - class NodeAwareContextMenuStrip : ContextMenuStrip - { - TreeNode treeNodeAttached; - - public NodeAwareContextMenuStrip(TreeNode treeNodeAttached) : base() - { - this.treeNodeAttached = treeNodeAttached; - } - - public TreeNode TreeNode { - get { - return treeNodeAttached; - } - } - } -} - - - - - diff --git a/src/SharpDevelop.sln b/src/SharpDevelop.sln index 8fb099a6a8..150ae015f9 100644 --- a/src/SharpDevelop.sln +++ b/src/SharpDevelop.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 9.00 -# SharpDevelop 2.1.0.1865 +# SharpDevelop 2.1.0.1806 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}" ProjectSection(SolutionItems) = postProject EndProjectSection @@ -58,10 +58,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDbTools", "AddIns\Misc\SharpServerTools\SharpDbTools\SharpDbTools.csproj", "{F2CC804D-5A9C-4875-A423-4FB9A5D07018}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpServerTools", "AddIns\Misc\SharpServerTools\SharpServerTools.csproj", "{E8922383-B6F5-4107-AB82-49662D98B2FE}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}" ProjectSection(SolutionItems) = postProject EndProjectSection @@ -423,8 +419,6 @@ Global {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {E8922383-B6F5-4107-AB82-49662D98B2FE} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {F2CC804D-5A9C-4875-A423-4FB9A5D07018} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}