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); }
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); }