Beispiel #1
0
 /// <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;
 }
Beispiel #2
0
 /// <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);
            }
        }
Beispiel #5
0
 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);
 }
Beispiel #6
0
        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);
            }
        }