Esempio n. 1
0
        private static List <Script> GenerateScript(TableComparisonResult result)
        {
            var scripts        = new List <Script>();
            var detail         = result.GetDetails();
            var first          = true;
            var identityInsert = false;

            foreach (var change in result.Changes)
            {
                var script = new Script();
                scripts.Add(script);
                if (first)
                {
                    script.AddToken(TokenType.Comment, string.Format("---[{0}].[{1}]---\r\n", result.SchemaName, result.TableName));
                    if (detail.AnyColumnIdentity && result.Changes.Where(n => n.Result == CompareResult.NotFoundInB).Any())
                    {
                        identityInsert = true;
                        script.AddScript(string.Format("SET IDENTITY_INSERT [{0}].[{1}] ON\r\n", result.SchemaName, result.TableName));
                        script = new Script();
                        scripts.Add(script);
                    }
                    first = false;
                }
                FillChangeScript(change, detail, script);
            }
            if (identityInsert)
            {
                scripts.Add(new Script(string.Format("SET IDENTITY_INSERT [{0}].[{1}] OFF\r\n", result.SchemaName, result.TableName)));
            }
            return(scripts);
        }
        private void RenderBody(TableComparisonResult result)
        {
            var body      = new HtmlGenericControl("body");
            var container = new Panel {
                CssClass = "container"
            };

            body.Controls.Add(container);
            container.Controls.Add(CreateTitle());
            var divBody = new Panel {
                CssClass = "body"
            };

            divBody.Controls.Add(CreateSummary(result));
            divBody.Controls.Add(CreateDetails(result));
            container.Controls.Add(divBody);
            body.RenderControl(HWriter);
        }
        private Panel CreateSummary(TableComparisonResult result)
        {
            var panel = new Panel {
                CssClass = "section"
            };
            var title = new HtmlGenericControl("h2");

            title.Controls.AddLiteral("Summary");
            panel.Controls.Add(title);
            var details = new Panel {
                CssClass = "details"
            };
            var table = new Table();

            table.Rows.Add(CreateRowByLiterals("Total Number of <strong>Checked</strong> Records:", result.TotalComparedRows.ToString()));
            table.Rows.Add(CreateRowByLiterals("Total Number of <strong>Equal</strong> Records:", result.EqualRowsCount.ToString()));
            table.Rows.Add(CreateRowByLiterals("Total Number of <strong>Changed</strong> Records:", result.Changes.Count.ToString()));
            table.Rows[0].Cells[1].CssClass = "Bold";
            table.Rows[1].Cells[1].CssClass = "Bold Green";
            table.Rows[2].Cells[1].CssClass = result.Changes.Count > 0 ? "Bold Red" : "Bold Green";
            details.Controls.Add(table);
            panel.Controls.Add(details);
            return(panel);
        }
Esempio n. 4
0
 private void ShowDetails(TableComparisonResult table)
 {
     Process.Start(WebService.GetComparisonDetailsUrl(table.SchemaName, table.TableName));
 }
        private Panel CreateDetails(TableComparisonResult result)
        {
            var panel = new Panel {
                CssClass = "section"
            };
            var title = new HtmlGenericControl("h2");

            title.Controls.AddLiteral("Details");
            panel.Controls.Add(title);
            if (result.Changes.Count > 0)
            {
                var scriptLink = new HyperLink
                {
                    CssClass    = "ScriptButton",
                    Text        = "Script",
                    ToolTip     = "Generate scripts to make Connection B equal to Connection A",
                    NavigateUrl = "/Script/" + result.SchemaName + "/" + result.TableName
                };
                title.Controls.Add(scriptLink);
            }
            var columnsButton = new HyperLink
            {
                CssClass    = "ColumnsButton",
                Text        = "Columns",
                ToolTip     = "Change the columns' visibility",
                NavigateUrl = "#"
            };

            columnsButton.Attributes["onclick"] = "chooseColumns();";
            title.Controls.Add(columnsButton);

            var details = new Panel {
                CssClass = "details"
            };

            details.Style[System.Web.UI.HtmlTextWriterStyle.OverflowY] = "auto";
            panel.Controls.Add(details);
            if (result.Changes.Count == 0)
            {
                var tick = new Image {
                    ImageUrl = WebService.GetFileUrl("Tick.png"), AlternateText = "Identical"
                };
                var identicalLabel = new Label {
                    CssClass = "Green Font16"
                };
                identicalLabel.Controls.AddLiteral("Tables are identical in two databases");
                details.Controls.Add(tick);
                details.Controls.Add(identicalLabel);
                return(panel);
            }
            var detailedResult = result.GetDetails();
            var table          = CreateTableWithHeader(detailedResult.Columns);

            foreach (var change in result.Changes)
            {
                var row = new TableRow {
                    CssClass = "Row" + change.Result
                };
                foreach (var column in detailedResult.Columns)
                {
                    row.Cells.Add(CreateCell(change.Key, column, detailedResult.TableA, detailedResult.TableB, change.Result));
                }
                table.Rows.Add(row);
            }
            details.Controls.Add(table);
            panel.Controls.Add(details);
            return(panel);
        }