Exemplo n.º 1
0
        private ObjectMetadata GetTableMetaFromSelectedText()
        {
            string selectedText = ShellManager.GetSelectedText();
            var    meta         = ObjectMetadata.FromQualifiedString(selectedText);

            return(meta);
        }
Exemplo n.º 2
0
        public override void ExecuteCommand(CancellationToken token)
        {
            var selectedText = ShellManager.GetSelectedText();
            var sb           = new StringBuilder();
            int errorCount   = 0;

            var dataReaderCallback = new Action <SqlDataReader>((reader) =>
            {
                var base64String = reader.GetString(0);
                // correct base64 strings are of multiples of 4. This is a simple sanity check.
                if (base64String.Length % 4 == 0)
                {
                    sb.AppendLine(GZipManager.DecompressBase64EncodedString(base64String));
                }
                else
                {
                    errorCount++;
                }
            });

            QueryManager.Run(ConnectionManager.GetConnectionStringForCurrentWindow(), token, (queryManager) =>
            {
                queryManager.ExecuteQuery(selectedText, dataReaderCallback);
            });

            if (errorCount > 0)
            {
                ShellManager.ShowMessageBox("Processed results with some errors, some of the rows contain non-64base strings. The successfull results will be displayed.");
            }

            NotepadHelper.ShowInNotepad(sb.ToString());
        }
Exemplo n.º 3
0
        public override void ExecuteCommand(CancellationToken token)
        {
            string selectedText = ShellManager.GetSelectedText();
            var    sb           = new StringBuilder();

            using (var ds = new DataSet())
            {
                QueryManager.Run(ConnectionManager.GetConnectionStringForCurrentWindow(), token, (queryManager) =>
                {
                    queryManager.Fill(string.Format("SET ROWCOUNT 1; {0}", selectedText), ds);
                });
                sb.AppendTempTablesFor(ds);

                if (ds.Tables.Count == 1)
                {
                    sb.Append("INSERT INTO #Temp1");

                    ShellManager.AddTextToTopOfSelection(sb.ToString());

                    sb.Clear();
                    sb.AppendColumnNameList(ds.Tables[0]);
                    ShellManager.AppendToEndOfSelection(
                        string.Format("{0}SELECT{0}{1}{0}FROM #Temp1", Environment.NewLine, sb.ToString())
                        );
                }
                else
                {
                    ShellManager.AppendToEndOfSelection(sb.ToString());
                }
            }
        }
Exemplo n.º 4
0
        public override void ExecuteCommand(CancellationToken token)
        {
            Action <string> ok = new Action <string>(result =>
            {
                int numRows = 0;
                if (!int.TryParse(result, out numRows))
                {
                    ShellManager.ShowMessageBox("Please input a valid number");
                    return;
                }

                numRows = Math.Max(numRows, 0);

                var selectedQuery = ShellManager.GetSelectedText();
                QueryManager.Run(ConnectionManager.GetConnectionStringForCurrentWindow(), token, (queryManager) =>
                {
                    var ds = new DataSet();

                    FileInfo file = DialogManager.ShowExcelSaveFileDialog();
                    if (file == null)
                    {
                        return;
                    }

                    queryManager.Fill(selectedQuery, ds);
                    ExcelManager.TableToExcel(ds, file);
                });
            });

            DialogManager.GetDialogInputFromUser("How many rows to select? (0=max)", "0", ok, cancelCallback);
        }
Exemplo n.º 5
0
        public override void ExecuteCommand(CancellationToken token)
        {
            var selectedText = ShellManager.GetSelectedText();
            var sb           = new StringBuilder();

            DialogManager.GetDialogInputFromUser("Enter Row Template", "Col1 = {0}, Col2 = '{1}'", template =>
            {
                using (var ds = new DataSet())
                {
                    QueryManager.Run(ConnectionManager.GetConnectionStringForCurrentWindow(), token, (queryManager) =>
                    {
                        queryManager.Fill(selectedText, ds);
                    });

                    var columnsRequested = template.Count(c => c == '{');

                    foreach (DataTable table in ds.Tables)
                    {
                        foreach (DataRow row in table.Rows)
                        {
                            if (row.ItemArray.Length < columnsRequested)
                            {
                                sb.AppendLine("-- the result set contain fewer columns than specified in the template");
                                break;
                            }
                            var data = row.ItemArray.Take(columnsRequested).ToArray();
                            sb.AppendLine(string.Format(template, data));
                        }
                    }
                }
            });
            ShellManager.AppendToEndOfSelection(sb.ToString());
        }
Exemplo n.º 6
0
        public override void ExecuteCommand(CancellationToken token)
        {
            string selectedText     = ShellManager.GetSelectedText();
            var    connectionString = ConnectionManager.GetConnectionStringForCurrentWindow();
            var    sb = GetComparisonResultFrom(ref token, selectedText, connectionString);

            ShellManager.AppendToEndOfSelection(sb.ToString());
        }
Exemplo n.º 7
0
        public override void ExecuteCommand(CancellationToken token)
        {
            Action <string> ok = new Action <string>(result =>
            {
                long numRows = 0;
                if (!long.TryParse(result, out numRows))
                {
                    ShellManager.ShowMessageBox("Please input a valid number");
                    return;
                }

                string selectedText = ShellManager.GetSelectedText();
                DataSet ds          = new DataSet();
                string query        = string.Format(@"
set rowcount {0}; 
{1}; 
set rowcount 0;", numRows, selectedText);
                QueryManager.Run(ConnectionManager.GetConnectionStringForCurrentWindow(), token, (queryManager) =>
                {
                    queryManager.Fill(query, ds);
                });
                if (ds.Tables.Count > 0)
                {
                    if (ds.Tables[0].Rows.Count > 50000)
                    {
                        //ShellManager.ShowMessageBox("The result of this query is too large to render in SSMS. Please select a location for the script to be saved.");
                        //var file = DialogManager.ShowSaveFileDialog("SQL files (*.sql)|*.sql|All files (*.*)|*.*");
                        var filename = Path.GetTempFileName();
                        using (var writer = File.CreateText(filename))
                        {
                            WriteInsertFor(ds.Tables[0], writer);
                            writer.Flush();
                        }
                        ShellManager.OpenFile(filename, true);
                    }
                    else
                    {
                        string output = GenerateInsertFor(ds.Tables[0]);
                        ShellManager.AppendToEndOfSelection(output);
                    }
                }
                else
                {
                    ShellManager.ShowMessageBox("Query did not produce any result");
                }
            });

            DialogManager.GetDialogInputFromUser("How many rows to select? (0=max)", "0", ok, cancelCallback);
        }
Exemplo n.º 8
0
        public override void ExecuteCommand(System.Threading.CancellationToken token)
        {
            var selectedText = ShellManager.GetSelectedText();

            var options = new PeterHenell.SSMS.Plugins.Utils.TsqltManager.MockOptionsDictionary();

            options.EachColumnInSelectOnNewRow = false;
            options.EachColumnInValuesOnNewRow = false;
            var connectionString = ConnectionManager.GetConnectionStringForCurrentWindow();

            var meta = ObjectMetadata.FromQualifiedString(selectedText);

            var service      = new ObjectDependencyService();
            var dependencies = service.GetDependencies(meta, connectionString, token);

            var superMockingString = TsqltManager.MockAllDependencies(token, options, connectionString, dependencies);

            ShellManager.AppendToEndOfSelection(superMockingString);
        }
Exemplo n.º 9
0
        public override void ExecuteCommand(CancellationToken token)
        {
            var selectedText = ShellManager.GetSelectedText();
            var meta         = ObjectMetadata.FromQualifiedString(selectedText);

            var fileName     = string.Format("{0}.{1}.sql", meta.SchemaName, meta.ObjectName);
            var sourceFolder = PluginOptions["Source Base Path"];
            var files        = Directory.GetFiles(sourceFolder, fileName, SearchOption.AllDirectories);

            if (files.Length > 0)
            {
                for (int i = 0; i < files.Length; i++)
                {
                    ShellManager.OpenFile(fileName: files[i], newWindow: true);
                }
            }
            else
            {
                throw new FileNotFoundException("The script file for: " + selectedText + " could not be found in " + sourceFolder);
            }
        }
Exemplo n.º 10
0
        public override void ExecuteCommand(CancellationToken token)
        {
            var options = new PeterHenell.SSMS.Plugins.Utils.TsqltManager.MockOptionsDictionary();

            var ok = new Action <string, PeterHenell.SSMS.Plugins.Utils.TsqltManager.MockOptionsDictionary>((result, checkedOptions) =>
            {
                int numRows = 0;
                if (!int.TryParse(result, out numRows))
                {
                    ShellManager.ShowMessageBox("Please input a valid number");
                    return;
                }
                else
                {
                    if (numRows <= 0)
                    {
                        numRows = 0;
                    }
                    else if (numRows > 1000)
                    {
                        numRows = 1000;
                    }
                }


                var selectedText     = ShellManager.GetSelectedText();
                StringBuilder sb     = new StringBuilder();
                var connectionString = ConnectionManager.GetConnectionStringForCurrentWindow();
                var meta             = ObjectMetadata.FromQualifiedString(selectedText);
                sb.AppendLine(TsqltManager.MockTableWithRows(token, options, numRows, meta, connectionString));

                ShellManager.ReplaceSelectionWith(sb.ToString());
            });

            var diagManager = new DialogManager.InputWithCheckboxesDialogManager <PeterHenell.SSMS.Plugins.Utils.TsqltManager.MockOptionsDictionary>();

            diagManager.Show("How many rows to select? (0=max)", "1", options, ok, cancelCallback);
        }
Exemplo n.º 11
0
        public override void ExecuteCommand(CancellationToken token)
        {
            var options = new MockOptionsDictionary();

            var ok = new Action <string, MockOptionsDictionary>((result, checkedOptions) =>
            {
                int numRows = 0;
                if (!int.TryParse(result, out numRows))
                {
                    ShellManager.ShowMessageBox("Please input a valid number");
                    return;
                }
                else
                {
                    if (numRows <= 0)
                    {
                        numRows = 0;
                    }
                    else if (numRows > 1000)
                    {
                        numRows = 1000;
                    }
                }

                string selectedText = ShellManager.GetSelectedText();
                var sb = new StringBuilder();
                using (var ds = new DataSet())
                {
                    QueryManager.Run(ConnectionManager.GetConnectionStringForCurrentWindow(), token, (queryManager) =>
                    {
                        queryManager.Fill(string.Format("SET ROWCOUNT {0}; {1}", numRows, selectedText), ds);
                    });
                    if (ds.Tables.Count == 1)
                    {
                        sb.AppendDropTempTableIfExists("#Actual");
                        sb.AppendLine();
                        sb.AppendDropTempTableIfExists("#Expected");
                        sb.AppendLine();

                        sb.AppendTempTablesFor(ds.Tables[0], "#Actual");
                        sb.Append("INSERT INTO #Actual");

                        ShellManager.AddTextToTopOfSelection(sb.ToString());

                        sb.Clear();
                        sb.AppendColumnNameList(ds.Tables[0]);
                        ShellManager.AppendToEndOfSelection(
                            string.Format("{0}SELECT {1}INTO #Expected{0}FROM #Actual{0}WHERE 1=0;{0}", Environment.NewLine, sb.ToString())
                            );
                        ShellManager.AppendToEndOfSelection(
                            TsqltManager.GenerateInsertFor(ds.Tables[0], ObjectMetadata.FromQualifiedString("#Expected"), false, false));
                    }
                    else
                    {
                        return;
                    }
                }

                //var meta = ObjectMetadata.FromQualifiedString(selectedText);
                //ObjectMetadataAccess da = new ObjectMetadataAccess(ConnectionManager.GetConnectionStringForCurrentWindow());
                //var table = da.SelectTopNFrom(meta, numRows);

                //StringBuilder sb = new StringBuilder();
                //sb.Append(TsqltManager.GetFakeTableStatement(selectedText));
                //sb.AppendLine();
                //sb.Append(TsqltManager.GenerateInsertFor(table, meta, options.EachColumnInSelectOnNewRow, options.EachColumnInValuesOnNewRow));
                //shellManager.ReplaceSelectionWith(sb.ToString());
            });

            var diagManager = new DialogManager.InputWithCheckboxesDialogManager <MockOptionsDictionary>();

            diagManager.Show("How many rows to select? (0=max)", "1", options, ok, cancelCallback);
        }