Browse Source

bugfixes to the table describe feature and integration of table describe into #D as ViewContent

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1766 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Dickon Field 20 years ago
parent
commit
df57cf8bc4
  1. 5
      src/AddIns/Misc/SharpDbTools/Project/Src/Model/ColumnNames.cs
  2. 4
      src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfo.cs
  3. 8
      src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfoService.cs
  4. 2
      src/AddIns/Misc/SharpDbTools/Project/Src/Model/TableNames.cs
  5. 3
      src/AddIns/Misc/SharpDbTools/Project/Src/ServerBrowserTool.cs
  6. 80
      src/AddIns/Misc/SharpDbTools/Project/Src/Viewer/TableDescribeForm.Designer.cs
  7. 33
      src/AddIns/Misc/SharpDbTools/Project/Src/Viewer/TableDescribeForm.cs
  8. 120
      src/AddIns/Misc/SharpDbTools/Project/Src/Viewer/TableDescribeForm.resx
  9. 72
      src/AddIns/Misc/SharpDbTools/Project/Src/Viewer/TableDescribeViewContent.cs

5
src/AddIns/Misc/SharpDbTools/Project/Src/Model/ColumnNames.cs

@ -25,5 +25,10 @@ namespace SharpDbTools.Model @@ -25,5 +25,10 @@ namespace SharpDbTools.Model
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" };
}
}

4
src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfo.cs

@ -17,6 +17,8 @@ using System.Data; @@ -17,6 +17,8 @@ using System.Data;
using System.Data.Common;
using System.Collections.Generic;
using ICSharpCode.Core;
namespace SharpDbTools.Model
{
/// <summary>
@ -69,6 +71,7 @@ namespace SharpDbTools.Model @@ -69,6 +71,7 @@ namespace SharpDbTools.Model
}
catch(ArgumentException) {
// see comment below - it is correct to bury this exception
LoggingService.Info("InvariantName property was accessed while undefined" + e);
}
return invariantName;
}
@ -104,6 +107,7 @@ namespace SharpDbTools.Model @@ -104,6 +107,7 @@ namespace SharpDbTools.Model
// 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;
}

8
src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfoService.cs

@ -79,8 +79,12 @@ namespace SharpDbTools.Model @@ -79,8 +79,12 @@ namespace SharpDbTools.Model
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 = columnTable.Copy();
tableInfo.Clear();
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;

2
src/AddIns/Misc/SharpDbTools/Project/Src/Model/TableNames.cs

@ -24,6 +24,6 @@ namespace SharpDbTools.Model @@ -24,6 +24,6 @@ namespace SharpDbTools.Model
public const string MetaDataCollections = "MetaDataCollections";
public const string ConnectionInfo = "ConnectionInfo";
public static string[] PrimaryObjects = new string[] { "Tables", "Procedures", "Functions", "Views", "Users" };
public static string Columns = "Columns";
public const string Columns = "Columns";
}
}

3
src/AddIns/Misc/SharpDbTools/Project/Src/ServerBrowserTool.cs

@ -381,8 +381,11 @@ namespace SharpDbTools @@ -381,8 +381,11 @@ namespace SharpDbTools
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);
}
}

80
src/AddIns/Misc/SharpDbTools/Project/Src/Viewer/TableDescribeForm.Designer.cs generated

@ -1,80 +0,0 @@ @@ -1,80 +0,0 @@
/*
* User: dickon
* Date: 30/08/2006
* Time: 07:27
*
*/
namespace SharpDbTools.Viewer
{
partial class TableDescribeForm : System.Windows.Forms.Form
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// 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.
/// </summary>
private void InitializeComponent()
{
this.closeButton = new System.Windows.Forms.Button();
this.tableInfoDataGridView = new System.Windows.Forms.DataGridView();
((System.ComponentModel.ISupportInitialize)(this.tableInfoDataGridView)).BeginInit();
this.SuspendLayout();
//
// closeButton
//
this.closeButton.Location = new System.Drawing.Point(108, 502);
this.closeButton.Name = "closeButton";
this.closeButton.Size = new System.Drawing.Size(79, 23);
this.closeButton.TabIndex = 1;
this.closeButton.Text = "Close";
this.closeButton.UseVisualStyleBackColor = true;
this.closeButton.Click += new System.EventHandler(this.CloseButtonClick);
//
// dataGridView1
//
this.tableInfoDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.tableInfoDataGridView.Location = new System.Drawing.Point(2, 1);
this.tableInfoDataGridView.Name = "dataGridView1";
this.tableInfoDataGridView.Size = new System.Drawing.Size(307, 495);
this.tableInfoDataGridView.TabIndex = 2;
//
// TableDescribeForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(312, 532);
this.Controls.Add(this.tableInfoDataGridView);
this.Controls.Add(this.closeButton);
this.Name = "TableDescribeForm";
this.Text = "Describe";
((System.ComponentModel.ISupportInitialize)(this.tableInfoDataGridView)).EndInit();
this.ResumeLayout(false);
}
private System.Windows.Forms.DataGridView tableInfoDataGridView;
private System.Windows.Forms.Button closeButton;
void CloseButtonClick(object sender, System.EventArgs e)
{
this.Close();
}
}
}

33
src/AddIns/Misc/SharpDbTools/Project/Src/Viewer/TableDescribeForm.cs

@ -1,33 +0,0 @@ @@ -1,33 +0,0 @@
/*
* User: dickon
* Date: 30/08/2006
* Time: 07:27
*
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
namespace SharpDbTools.Viewer
{
/// <summary>
/// Description of TableDescribeForm.
/// </summary>
public partial class TableDescribeForm
{
DataTable tableInfo;
public TableDescribeForm(DataTable tableInfo)
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
this.tableInfo = tableInfo;
this.tableInfoDataGridView.DataSource = tableInfo;
}
}
}

120
src/AddIns/Misc/SharpDbTools/Project/Src/Viewer/TableDescribeForm.resx

@ -1,120 +0,0 @@ @@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

72
src/AddIns/Misc/SharpDbTools/Project/Src/Viewer/TableDescribeViewContent.cs

@ -0,0 +1,72 @@ @@ -0,0 +1,72 @@
/*
* User: dickon
* Date: 06/09/2006
* Time: 08:43
*
*/
using System;
using System.Data;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Gui;
using SharpDbTools.Model;
namespace SharpDbTools.Viewer
{
/// <summary>
/// Description of TableDescribeViewContent.
/// </summary>
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;
}
}
}
}
Loading…
Cancel
Save