diff --git a/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/OracleDbToolsProvider.csproj b/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/OracleDbToolsProvider.csproj
index b5fc6907b7..1dde83e05d 100644
--- a/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/OracleDbToolsProvider.csproj
+++ b/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/OracleDbToolsProvider.csproj
@@ -41,7 +41,6 @@
-
diff --git a/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/OracleFormsArtefactFactory.cs b/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/OracleFormsArtefactFactory.cs
index 6836a93f88..47c06f9787 100644
--- a/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/OracleFormsArtefactFactory.cs
+++ b/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/OracleFormsArtefactFactory.cs
@@ -36,7 +36,6 @@ namespace SharpDbTools.Oracle.Forms
// create root node of the metadata collections tree
TreeNode metaNode = new TreeNode("Db Objects");
- metaNode.Name = logicalConnectionName + ":MetaData";
// retrieve the metadata for this logical connection name
@@ -85,6 +84,23 @@ namespace SharpDbTools.Oracle.Forms
}
return metaNode;
}
+
+ public override string[] GetDescribeTableFieldNames()
+ {
+ return tableFieldsToDisplay;
+ }
+ public override string[] GetDescribeTableColumnHeaderNames()
+ {
+ return tableFieldsColumnHeaders;
+ }
+
+ private static string[] tableFieldsToDisplay =
+ new string [] {"COLUMN_NAME", "DATATYPE",
+ "LENGTH", "PRECISION", "SCALE", "NULLABLE"};
+ private static string[] tableFieldsColumnHeaders =
+ new string[] { "Column", "Type", "Length", "Precision", "Scale", "Nullable" };
+
+
}
}
diff --git a/src/AddIns/Misc/SharpServerTools/ServerBrowserTool/SharpServerTools.addin b/src/AddIns/Misc/SharpServerTools/ServerBrowserTool/SharpServerTools.addin
index 887d848e38..11b82c772a 100644
--- a/src/AddIns/Misc/SharpServerTools/ServerBrowserTool/SharpServerTools.addin
+++ b/src/AddIns/Misc/SharpServerTools/ServerBrowserTool/SharpServerTools.addin
@@ -21,4 +21,10 @@
shortcut = "Control|Alt|D"
class = "SharpServerTools.Forms.ServerBrowserTool"/>
+
+
+
+
+
diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj b/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj
index 077208b45e..8bf57c815f 100644
--- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj
+++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj
@@ -53,6 +53,7 @@
+
diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/ColumnNames.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/ColumnNames.cs
index 00a6ba5754..74fe834696 100644
--- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/ColumnNames.cs
+++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/ColumnNames.cs
@@ -25,10 +25,5 @@ namespace SharpDbTools.Data
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/Forms/FormsArtefactFactories.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/FormsArtefactFactories.cs
index 5ab616f662..7d34460230 100644
--- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/FormsArtefactFactories.cs
+++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/FormsArtefactFactories.cs
@@ -6,18 +6,35 @@
*/
using System;
+using System.Collections;
+
+
using ICSharpCode.Core;
+using System.Collections.Generic;
+
namespace SharpDbTools.Forms
{
///
/// Description of FormsArtefactFactories.
///
- public class FormsArtefactFactories
+ public static class FormsArtefactFactories
{
- public FormsArtefactFactories()
+ public const string FORMS_ARTEFACT_FACTORIES_PATH = "/SharpServerTools/SharpDbTools/FormsArtefactFactory";
+ public static Dictionary factories = new Dictionary();
+
+ static FormsArtefactFactories()
{
+ AddInTreeNode node =
+ AddInTree.GetTreeNode(FORMS_ARTEFACT_FACTORIES_PATH);
+ List codons = node.Codons;
+ foreach (Codon codon in codons) {
+ // create an instance of the relevant FormsArtefactFactory indexed by invariant name
+ string invariant = codon.Id;
+ FormsArtefactFactory factory = (FormsArtefactFactory)node.BuildChildItem(invariant, null, null);
+ factories.Add(invariant, factory);
+ }
}
public static FormsArtefactFactory GetFactory(string invariantName)
@@ -27,18 +44,27 @@ namespace SharpDbTools.Forms
// to test this base it on hardcoded strings for the type of the factory
// TODO: drive this from the AddIn tree
- switch (invariantName)
- {
- case "System.Data.OracleClient":
- Type type = Type.GetType("SharpDbTools.Oracle.Forms.OracleFormsArtefactFactory, OracleDbToolsProvider");
- FormsArtefactFactory factory = (FormsArtefactFactory)Activator.CreateInstance(type);
- LoggingService.Debug("Found FormsArtefactFactory for: " + invariantName);
- return factory;
- default:
- LoggingService.Debug("Failed to find FormsArtefactFactory for: " + invariantName);
- throw new ArgumentException("There is no FormsArtefactFactory for invariant name: " +
- invariantName);
+
+ FormsArtefactFactory factory = null;
+ factories.TryGetValue(invariantName, out factory);
+ if (factory == null) {
+ throw new ArgumentException("No FormsArtefactFactory found for InvariantName: "
+ + invariantName);
}
+ return factory;
+
+// switch (invariantName)
+// {
+// case "System.Data.OracleClient":
+// Type type = Type.GetType("SharpDbTools.Oracle.Forms.OracleFormsArtefactFactory, OracleDbToolsProvider");
+// FormsArtefactFactory factory = (FormsArtefactFactory)Activator.CreateInstance(type);
+// LoggingService.Debug("Found FormsArtefactFactory for: " + invariantName);
+// return factory;
+// default:
+// LoggingService.Debug("Failed to find FormsArtefactFactory for: " + invariantName);
+// throw new ArgumentException("There is no FormsArtefactFactory for invariant name: " +
+// invariantName);
+// }
// TODO: retrieve the relevant factory from file-base config
diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/FormsArtefactFactory.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/FormsArtefactFactory.cs
index 6c3ad26410..26173a6e59 100644
--- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/FormsArtefactFactory.cs
+++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/FormsArtefactFactory.cs
@@ -20,5 +20,7 @@ namespace SharpDbTools.Forms
}
public abstract TreeNode CreateMetaDataNode(string name);
+ public abstract string[] GetDescribeTableFieldNames();
+ public abstract string[] GetDescribeTableColumnHeaderNames();
}
}
diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableDescribeViewContent.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableDescribeViewContent.cs
index b17a45151b..baf9a3cb4b 100644
--- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableDescribeViewContent.cs
+++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableDescribeViewContent.cs
@@ -24,7 +24,10 @@ namespace SharpDbTools.Forms
DataGridView tableInfoDataGridView;
- public TableDescribeViewContent(DataTable tableInfo, string tableName) : base("table: " + tableName)
+ public TableDescribeViewContent(DataTable tableInfo,
+ string tableName,
+ string[] fieldsToDisplay,
+ string[] columnHeaderNames) : base("table: " + tableName)
{
this.tableInfo = tableInfo;
this.tableInfoDataGridView = new DataGridView();
@@ -36,12 +39,10 @@ namespace SharpDbTools.Forms
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];
+ c.Name = columnHeaderNames[i];
v.Columns.Add(c);
}
v.AllowUserToAddRows = false;
diff --git a/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/TableTreeNode.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableTreeNode.cs
similarity index 73%
rename from src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/TableTreeNode.cs
rename to src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableTreeNode.cs
index 20339c2844..6c5e925c89 100644
--- a/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/TableTreeNode.cs
+++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableTreeNode.cs
@@ -10,7 +10,6 @@ using System.Drawing;
using System.Windows.Forms;
using System.Data;
-using SharpDbTools.Forms;
using SharpDbTools.Data;
using SharpServerTools.Forms;
@@ -19,16 +18,14 @@ using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
-namespace SharpDbTools.Oracle.Forms
+namespace SharpDbTools.Forms
{
///
/// specialisation of the TreeNode to add context menu and click handling
/// to invoke the DescribeTable component for Oracle tables.
- /// Does not change any data or metadata content so does not need to be
- /// a ServerExplorerTreeNode
///
- class TableTreeNode: TreeNode
+ public class TableTreeNode: TreeNode
{
string logicalConnectionName;
@@ -49,7 +46,13 @@ namespace SharpDbTools.Oracle.Forms
string tableName = s.TreeNode.Text;
LoggingService.Debug("describe table clicked for: " + logicalConnectionName + " and table name: " + tableName);
DataTable tableInfo = DbModelInfoService.GetTableInfo(logicalConnectionName, tableName);
- TableDescribeViewContent tableDescribeViewContent = new TableDescribeViewContent(tableInfo, tableName);
+ string invariantName = DbModelInfoService.GetDbModelInfo(logicalConnectionName).InvariantName;
+ // TODO: get field names and column header names from factory
+ FormsArtefactFactory factory = FormsArtefactFactories.GetFactory(invariantName);
+
+ TableDescribeViewContent tableDescribeViewContent =
+ new TableDescribeViewContent(tableInfo, tableName, factory.GetDescribeTableFieldNames(),
+ factory.GetDescribeTableColumnHeaderNames());
WorkbenchSingleton.Workbench.ShowView(tableDescribeViewContent);
}
}