/// <summary> /// Initializes a new instance of the SkipSelection class using a ComparisonInfo object. /// </summary> /// <param name="comparisonInfo">ComparisonInfo object typically deserialized from a BSMN file.</param> public SkipSelection(Core.ComparisonObject comparisonObject) { _comparisonObjectType = comparisonObject.ComparisonObjectType; _comparisonObjectStatus = comparisonObject.Status; _sourceObjectInternalName = comparisonObject.SourceObjectInternalName; _targetObjectInternalName = comparisonObject.TargetObjectInternalName; }
/// <summary> /// A Boolean specifying whether the collection contains an Core.ComparisonObject . /// </summary> /// <param name="comparisonObj"></param> /// <returns>True if an object of that name is found, or False if it's not found.</returns> public bool Contains(Core.ComparisonObject comparisonObj) { foreach (SkipSelection skipSelection in this) { if (skipSelection.ComparisonObjectType == comparisonObj.ComparisonObjectType && skipSelection.Status == comparisonObj.Status && (skipSelection.Status == ComparisonObjectStatus.MissingInSource || skipSelection.SourceObjectInternalName == comparisonObj.SourceObjectInternalName) && (skipSelection.Status == ComparisonObjectStatus.MissingInTarget || skipSelection.TargetObjectInternalName == comparisonObj.TargetObjectInternalName)) { return(true); } } return(false); }
private void RefreshSkipSelectionsFromChildComparisonObjects(ComparisonObject comparisonObject) { if (comparisonObject.Status != ComparisonObjectStatus.SameDefinition && comparisonObject.MergeAction == MergeAction.Skip && !_comparisonInfo.SkipSelections.Contains(comparisonObject)) { _comparisonInfo.SkipSelections.Add(new SkipSelection(comparisonObject)); } foreach (ComparisonObject childComparisonObject in comparisonObject.ChildComparisonObjects) { RefreshSkipSelectionsFromChildComparisonObjects(childComparisonObject); } }
private void RefreshChildComparisonObjectsFromSkipSelections(ComparisonObject comparisonObject) { if (comparisonObject.Status != ComparisonObjectStatus.SameDefinition) { foreach (SkipSelection skipSelection in _comparisonInfo.SkipSelections) { if (comparisonObject.Status == skipSelection.Status && comparisonObject.ComparisonObjectType == skipSelection.ComparisonObjectType && (skipSelection.Status == ComparisonObjectStatus.MissingInSource || comparisonObject.SourceObjectInternalName == skipSelection.SourceObjectInternalName) && (skipSelection.Status == ComparisonObjectStatus.MissingInTarget || comparisonObject.TargetObjectInternalName == skipSelection.TargetObjectInternalName)) { comparisonObject.MergeAction = MergeAction.Skip; break; } } } foreach (ComparisonObject childComparisonObject in comparisonObject.ChildComparisonObjects) { RefreshChildComparisonObjectsFromSkipSelections(childComparisonObject); } }
private bool CheckComparisonObject(ComparisonObject comparisonObject, string sourceObjectName, string sourceObjectId, string targetObjectName, string targetObjectId, ComparisonObjectType objType, out ComparisonObject matchedComparisonObj) { if (comparisonObject.SourceObjectName == sourceObjectName && comparisonObject.SourceObjectInternalName == sourceObjectId && comparisonObject.TargetObjectName == targetObjectName && comparisonObject.TargetObjectInternalName == targetObjectId && comparisonObject.ComparisonObjectType == objType) { matchedComparisonObj = comparisonObject; return(true); } foreach (ComparisonObject childComparisonObject in comparisonObject.ChildComparisonObjects) { if (CheckComparisonObject(childComparisonObject, sourceObjectName, sourceObjectId, targetObjectName, targetObjectId, objType, out matchedComparisonObj)) { if (matchedComparisonObj == null) { matchedComparisonObj = childComparisonObject; } return(true); } } // if didn't find a match, return null matchedComparisonObj = null; return(false); }
private void PopulateExcelRow(Excel.Worksheet Ws, ref int row, ref int lastDataSourceRow, ref int lastTableRow, ComparisonObject comparisonObject, ToolStripProgressBar progBar) { progBar.PerformStep(); row += 1; // Close out groups if necessary if (comparisonObject.ComparisonObjectType == ComparisonObjectType.DataSource || comparisonObject.ComparisonObjectType == ComparisonObjectType.Table || comparisonObject.ComparisonObjectType == ComparisonObjectType.Perspective || comparisonObject.ComparisonObjectType == ComparisonObjectType.Culture || comparisonObject.ComparisonObjectType == ComparisonObjectType.Role || comparisonObject.ComparisonObjectType == ComparisonObjectType.Expression || comparisonObject.ComparisonObjectType == ComparisonObjectType.Action) //treat perspectives/cultures/roles/expressions like datasources for purpose of grouping { // do we need to close a table group? if (lastTableRow + 1 < row && lastTableRow != -1) { Ws.Application.Rows[Convert.ToString(lastTableRow + 1) + ":" + Convert.ToString(row - 1)].Select(); Ws.Application.Selection.Rows.Group(); } lastTableRow = row; } //Type column switch (comparisonObject.ComparisonObjectType) { case ComparisonObjectType.Model: Ws.Cells[row, 1].Value = "Model"; break; case ComparisonObjectType.DataSource: Ws.Cells[row, 1].Value = "Data Source"; break; case ComparisonObjectType.Table: Ws.Cells[row, 1].Value = "Table"; break; case ComparisonObjectType.Relationship: Ws.Cells[row, 1].Value = "Relationship"; Ws.Cells[row, 1].InsertIndent(3); Ws.Cells[row, 2].InsertIndent(3); Ws.Cells[row, 5].InsertIndent(3); break; case ComparisonObjectType.Measure: Ws.Cells[row, 1].Value = "Measure"; Ws.Cells[row, 1].InsertIndent(3); Ws.Cells[row, 2].InsertIndent(3); Ws.Cells[row, 5].InsertIndent(3); break; case ComparisonObjectType.Kpi: Ws.Cells[row, 1].Value = "KPI"; Ws.Cells[row, 1].InsertIndent(3); Ws.Cells[row, 2].InsertIndent(3); Ws.Cells[row, 5].InsertIndent(3); break; case ComparisonObjectType.CalculationItem: Ws.Cells[row, 1].Value = "Calculation Item"; Ws.Cells[row, 1].InsertIndent(3); Ws.Cells[row, 2].InsertIndent(3); Ws.Cells[row, 5].InsertIndent(3); break; case ComparisonObjectType.Perspective: Ws.Cells[row, 1].Value = "Perspective"; break; case ComparisonObjectType.Culture: Ws.Cells[row, 1].Value = "Culture"; break; case ComparisonObjectType.Role: Ws.Cells[row, 1].Value = "Role"; break; case ComparisonObjectType.Expression: Ws.Cells[row, 1].Value = "Expression"; break; case ComparisonObjectType.Action: Ws.Cells[row, 1].Value = "Action"; break; default: Ws.Cells[row, 1].Value = comparisonObject.ComparisonObjectType.ToString(); break; } //Source Obj Name column if (comparisonObject.SourceObjectName != null && comparisonObject.SourceObjectName != "") { Ws.Cells[row, 2].Value = comparisonObject.SourceObjectName; if (comparisonObject.SourceObjectDefinition != null && comparisonObject.SourceObjectDefinition != "") { Ws.Cells[row, 3].Value = comparisonObject.SourceObjectDefinition; } } else { Ws.Cells[row, 2].Interior.Pattern = Excel.Constants.xlSolid; Ws.Cells[row, 2].Interior.PatternColorIndex = Excel.Constants.xlAutomatic; Ws.Cells[row, 2].Interior.ThemeColor = Excel.XlThemeColor.xlThemeColorDark1; Ws.Cells[row, 2].Interior.TintAndShade = -0.149998474074526; Ws.Cells[row, 2].Interior.PatternTintAndShade = 0; Ws.Cells[row, 3].Interior.Pattern = Excel.Constants.xlSolid; Ws.Cells[row, 3].Interior.PatternColorIndex = Excel.Constants.xlAutomatic; Ws.Cells[row, 3].Interior.ThemeColor = Excel.XlThemeColor.xlThemeColorDark1; Ws.Cells[row, 3].Interior.TintAndShade = -0.149998474074526; Ws.Cells[row, 3].Interior.PatternTintAndShade = 0; } //status switch (comparisonObject.Status) { case ComparisonObjectStatus.SameDefinition: Ws.Cells[row, 4].Value = "Same Definition"; break; case ComparisonObjectStatus.DifferentDefinitions: Ws.Cells[row, 4].Value = "Different Definitions"; break; case ComparisonObjectStatus.MissingInTarget: Ws.Cells[row, 4].Value = "Missing in Target"; break; case ComparisonObjectStatus.MissingInSource: Ws.Cells[row, 4].Value = "Missing in Source"; break; default: Ws.Cells[row, 4].Value = comparisonObject.Status.ToString(); break; } //Target Obj Name column if (comparisonObject.TargetObjectName != null && comparisonObject.TargetObjectName != "") { Ws.Cells[row, 5].Value = comparisonObject.TargetObjectName; if (comparisonObject.TargetObjectDefinition != null && comparisonObject.TargetObjectDefinition != "") { Ws.Cells[row, 6].Value = comparisonObject.TargetObjectDefinition; } } else { Ws.Cells[row, 5].Interior.Pattern = Excel.Constants.xlSolid; Ws.Cells[row, 5].Interior.PatternColorIndex = Excel.Constants.xlAutomatic; Ws.Cells[row, 5].Interior.ThemeColor = Excel.XlThemeColor.xlThemeColorDark1; Ws.Cells[row, 5].Interior.TintAndShade = -0.149998474074526; Ws.Cells[row, 5].Interior.PatternTintAndShade = 0; Ws.Cells[row, 6].Interior.Pattern = Excel.Constants.xlSolid; Ws.Cells[row, 6].Interior.PatternColorIndex = Excel.Constants.xlAutomatic; Ws.Cells[row, 6].Interior.ThemeColor = Excel.XlThemeColor.xlThemeColorDark1; Ws.Cells[row, 6].Interior.TintAndShade = -0.149998474074526; Ws.Cells[row, 6].Interior.PatternTintAndShade = 0; } // Insert blank in last cell so defintion doesn't overlap Ws.Cells[row, 7].Value = " "; foreach (ComparisonObject childComparisonObject in comparisonObject.ChildComparisonObjects) { PopulateExcelRow(Ws, ref row, ref lastDataSourceRow, ref lastTableRow, childComparisonObject, progBar); } }
private void PopulateExcelRow(Excel.Worksheet Ws, ref int row, ref int lastDataSourceRow, ref int lastTableRow, ComparisonObject comparisonObject, ProgressBar progBar) { progBar.PerformStep(); row += 1; // Close out groups if necessary if (comparisonObject.ComparisonObjectType == ComparisonObjectType.DataSource || comparisonObject.ComparisonObjectType == ComparisonObjectType.Table || comparisonObject.ComparisonObjectType == ComparisonObjectType.Perspective || comparisonObject.ComparisonObjectType == ComparisonObjectType.Culture || comparisonObject.ComparisonObjectType == ComparisonObjectType.Role || comparisonObject.ComparisonObjectType == ComparisonObjectType.Expression || comparisonObject.ComparisonObjectType == ComparisonObjectType.Action) //treat perspectives/cultures/roles/expressions like datasources for purpose of grouping { // do we need to close a table group? if (lastTableRow + 1 < row && lastTableRow != -1) { Ws.Application.Rows[Convert.ToString(lastTableRow + 1) + ":" + Convert.ToString(row - 1)].Select(); Ws.Application.Selection.Rows.Group(); } lastTableRow = row; //Todo: delete (no longer group tables by data source) //if (comparisonObject.ComparisonObjectType == ComparisonObjectType.DataSource || comparisonObject.ComparisonObjectType == ComparisonObjectType.Table || comparisonObject.ComparisonObjectType == ComparisonObjectType.Perspective || comparisonObject.ComparisonObjectType == ComparisonObjectType.Culture || comparisonObject.ComparisonObjectType == ComparisonObjectType.Role || comparisonObject.ComparisonObjectType == ComparisonObjectType.Expression || comparisonObject.ComparisonObjectType == ComparisonObjectType.Action) ///treat perspectives/cultures/roles/expressions like datasources for purpose of grouping //{ // // do we need to close a datasource group? // if (lastDataSourceRow + 1 < row && lastDataSourceRow != -1) // { // Ws.Application.Rows[Convert.ToString(lastDataSourceRow + 1) + ":" + Convert.ToString(row - 1)].Select(); // Ws.Application.Selection.Rows.Group(); // } // lastDataSourceRow = row; //} } //Type column switch (comparisonObject.ComparisonObjectType) { case ComparisonObjectType.DataSource: Ws.Cells[row, 1].Value = "Data Source"; break; case ComparisonObjectType.Table: Ws.Cells[row, 1].Value = "Table"; break; case ComparisonObjectType.Relationship: Ws.Cells[row, 1].Value = "Relationship"; Ws.Cells[row, 1].InsertIndent(3); Ws.Cells[row, 2].InsertIndent(3); Ws.Cells[row, 4].InsertIndent(3); break; case ComparisonObjectType.Measure: Ws.Cells[row, 1].Value = "Measure"; Ws.Cells[row, 1].InsertIndent(3); Ws.Cells[row, 2].InsertIndent(3); Ws.Cells[row, 4].InsertIndent(3); break; case ComparisonObjectType.Kpi: Ws.Cells[row, 1].Value = "KPI"; Ws.Cells[row, 1].InsertIndent(3); Ws.Cells[row, 2].InsertIndent(3); Ws.Cells[row, 4].InsertIndent(3); break; case ComparisonObjectType.Perspective: Ws.Cells[row, 1].Value = "Perspective"; break; case ComparisonObjectType.Culture: Ws.Cells[row, 1].Value = "Culture"; break; case ComparisonObjectType.Role: Ws.Cells[row, 1].Value = "Role"; break; case ComparisonObjectType.Expression: Ws.Cells[row, 1].Value = "Expression"; break; case ComparisonObjectType.Action: Ws.Cells[row, 1].Value = "Action"; break; default: Ws.Cells[row, 1].Value = comparisonObject.ComparisonObjectType.ToString(); break; } //Source Obj Name column if (comparisonObject.SourceObjectName != null && comparisonObject.SourceObjectName != "") { Ws.Cells[row, 2].Value = comparisonObject.SourceObjectName; //source obj def Ws.Cells[row, 2].AddComment(); Ws.Cells[row, 2].Comment.Visible = false; if (comparisonObject.SourceObjectDefinition != null && comparisonObject.SourceObjectDefinition != "") { Ws.Cells[row, 2].Comment.Text("Object Definition:\n\n" + comparisonObject.SourceObjectDefinition); Ws.Cells[row, 2].Comment.Shape.TextFrame.Characters.Font.Bold = false; Ws.Cells[row, 2].Comment.Shape.Width = 200; Ws.Cells[row, 2].Comment.Shape.Height = 250; } } else { Ws.Cells[row, 2].Interior.Pattern = Excel.Constants.xlSolid; Ws.Cells[row, 2].Interior.PatternColorIndex = Excel.Constants.xlAutomatic; Ws.Cells[row, 2].Interior.ThemeColor = Excel.XlThemeColor.xlThemeColorDark1; Ws.Cells[row, 2].Interior.TintAndShade = -0.149998474074526; Ws.Cells[row, 2].Interior.PatternTintAndShade = 0; } //status switch (comparisonObject.Status) { case ComparisonObjectStatus.SameDefinition: Ws.Cells[row, 3].Value = "Same Definition"; break; case ComparisonObjectStatus.DifferentDefinitions: Ws.Cells[row, 3].Value = "Different Definitions"; break; case ComparisonObjectStatus.MissingInTarget: Ws.Cells[row, 3].Value = "Missing in Target"; break; case ComparisonObjectStatus.MissingInSource: Ws.Cells[row, 3].Value = "Missing in Source"; break; default: Ws.Cells[row, 3].Value = comparisonObject.Status.ToString(); break; } //Target Obj Name column if (comparisonObject.TargetObjectName != null && comparisonObject.TargetObjectName != "") { Ws.Cells[row, 4].Value = comparisonObject.TargetObjectName; //Target obj def Ws.Cells[row, 4].AddComment(); Ws.Cells[row, 4].Comment.Visible = false; if (comparisonObject.TargetObjectDefinition != null && comparisonObject.TargetObjectDefinition != "") { Ws.Cells[row, 4].Comment.Text("Object Definition:\n\n" + comparisonObject.TargetObjectDefinition); Ws.Cells[row, 4].Comment.Shape.TextFrame.Characters.Font.Bold = false; Ws.Cells[row, 4].Comment.Shape.Width = 200; Ws.Cells[row, 4].Comment.Shape.Height = 250; } } else { Ws.Cells[row, 4].Interior.Pattern = Excel.Constants.xlSolid; Ws.Cells[row, 4].Interior.PatternColorIndex = Excel.Constants.xlAutomatic; Ws.Cells[row, 4].Interior.ThemeColor = Excel.XlThemeColor.xlThemeColorDark1; Ws.Cells[row, 4].Interior.TintAndShade = -0.149998474074526; Ws.Cells[row, 4].Interior.PatternTintAndShade = 0; } foreach (ComparisonObject childComparisonObject in comparisonObject.ChildComparisonObjects) { PopulateExcelRow(Ws, ref row, ref lastDataSourceRow, ref lastTableRow, childComparisonObject, progBar); } }