Ejemplo n.º 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;
 }
 private void InvokeObjectDefinitionsCallBack()
 {
     // Populate object definition textboxes
     if (this.Rows.GetRowCount(DataGridViewElementStates.Selected) > 0 && this.SelectedRows[0].Cells[10].Value != null)
     {
         ComparisonObjectType   selectedObjType = FindComparisonObjectType(this.SelectedRows[0].Cells[0].Value.ToString());
         ComparisonObjectStatus selectedStatus  = FindComparisonObjectStatus(this.SelectedRows[0].Cells[4].Value.ToString());
         _objectDefinitionsCallBack.Invoke(this.SelectedRows[0].Cells[10].Value.ToString(), this.SelectedRows[0].Cells[11].Value.ToString(), selectedObjType, selectedStatus);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the ComparisonObject class using multiple parameters.
 /// </summary>
 /// <param name="comparisonObjectType">Type of ComaprisonObject such as Table, Measure, Relationship, etc.</param>
 /// <param name="status">Status of ComaprisonObject such as Same Definition, Different Definitions and Missing In Target.</param>
 /// <param name="mergeAction">Action of ComaprisonObject such as Create, Update, Delete and Skip.</param>
 public ComparisonObject(
     ComparisonObjectType comparisonObjectType,
     ComparisonObjectStatus status,
     MergeAction mergeAction)
 {
     _comparisonObjectType = (comparisonObjectType == ComparisonObjectType.Connection ? ComparisonObjectType.DataSource : comparisonObjectType); //Need to support connection for backwards compatibility when deserializing from xml
     _status                 = status;
     _mergeAction            = mergeAction;
     _childComparisonObjects = new List <ComparisonObject>();
 }
 public ComparisonObject(
     ComparisonObjectType comparisonObjectType,
     ComparisonObjectStatus status,
     TabularObject sourceObject,
     TabularObject targetObject,
     MergeAction mergeAction) : base(comparisonObjectType, status, mergeAction)
 {
     _sourceObject = sourceObject;
     _targetObject = targetObject;
 }
        private void RefreshComparisonObjFromGrid(TreeGridNode node)
        {
            ComparisonObjectType nodeCubeOjbectType = (ComparisonObjectType)Enum.Parse(typeof(ComparisonObjectType), node.Cells[9].Value.ToString());

            ComparisonObject comparisonObject = _comparison.FindComparisonObjectByObjectInternalNames(
                node.Cells[1].Value.ToString(),
                node.Cells[2].Value.ToString(),
                node.Cells[5].Value.ToString(),
                node.Cells[6].Value.ToString(),
                nodeCubeOjbectType);

            if (comparisonObject != null)
            {
                comparisonObject.MergeAction = (MergeAction)Enum.Parse(typeof(MergeAction), node.Cells[8].Value.ToString());
            }

            //this version of the TreeGridView does not support binding from an object collection (or any built in data binding for that matter), so we have to refresh the CubeDiff with changes done by the user in the UI (they can modify the MergeActions).
            foreach (TreeGridNode childNode in node.Nodes)
            {
                RefreshComparisonObjFromGrid(childNode);
            }
        }
Ejemplo n.º 6
0
 public ComparisonObject(
     ComparisonObjectType comparisonObjectType,
     ComparisonObjectStatus status,
     ITabularObject sourceObject,
     string sourceObjectName,
     string sourceObjectId,
     string sourceObjectDefinition,
     MergeAction mergeAction,
     ITabularObject targetObject,
     string targetObjectName,
     string targetObjectId,
     string targetObjectDefinition) : base(comparisonObjectType, status, mergeAction)
 {
     _sourceObject           = sourceObject;
     _sourceObjectName       = sourceObjectName;
     _sourceObjectId         = sourceObjectId;
     _sourceObjectDefinition = sourceObjectDefinition;
     _targetObject           = targetObject;
     _targetObjectName       = targetObjectName;
     _targetObjectId         = targetObjectId;
     _targetObjectDefinition = targetObjectDefinition;
 }
        private void FormatAmoDefinitions(string objDefSource, string objDefTarget, ComparisonObjectType objType)
        {
            ClearObjDefFormatting(txtSourceObjectDefinition);
            ClearObjDefFormatting(txtTargetObjectDefinition);

            txtSourceObjectDefinition.Text = objDefSource;
            txtSourceObjectDefinition.SelectAll();
            txtSourceObjectDefinition.SelectionFont = new Font("Lucida Console", 9, FontStyle.Regular);
            if (objType == ComparisonObjectType.Table)
            {
                SetObjDefFontBold("Base Columns:", txtSourceObjectDefinition);
                SetObjDefFontBold("Calculated Columns:", txtSourceObjectDefinition);
                SetObjDefFontBold("Columns:", txtSourceObjectDefinition);
                SetObjDefFontBold("Hierarchies:", txtSourceObjectDefinition);
                SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
                SetObjDefFontBold("Partitions:", txtSourceObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Measure)
            {
                SetObjDefFontBold("Expression:", txtSourceObjectDefinition);
                SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Kpi)
            {
                SetObjDefFontBold("Expression:", txtSourceObjectDefinition);
                SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
                SetObjDefFontBold("Goal:", txtSourceObjectDefinition);
                SetObjDefFontBold("Status:", txtSourceObjectDefinition);
                SetObjDefFontBold("Trend:", txtSourceObjectDefinition);
                SetObjDefFontBold("Status Graphic:", txtSourceObjectDefinition);
                SetObjDefFontBold("Trend Graphic:", txtSourceObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Role)
            {
                SetObjDefFontBold("Permissions:", txtSourceObjectDefinition);
                SetObjDefFontBold("Row Filters:", txtSourceObjectDefinition);
                SetObjDefFontBold("Members:", txtSourceObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Perspective) //Cultures not supported by AMO version
            {
                SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Action)
            {
                SetObjDefFontBold("Expression:", txtSourceObjectDefinition);
                SetObjDefFontBold("Drillthrough Columns:", txtSourceObjectDefinition);
                SetObjDefFontBold("Report Parameters:", txtSourceObjectDefinition);
                SetObjDefFontBold("Format & Visibility:", txtSourceObjectDefinition);
            }

            txtTargetObjectDefinition.Text = objDefTarget;
            txtTargetObjectDefinition.SelectAll();
            txtTargetObjectDefinition.SelectionFont = new Font("Lucida Console", 9, FontStyle.Regular);
            if (objType == ComparisonObjectType.Table)
            {
                SetObjDefFontBold("Base Columns:", txtTargetObjectDefinition);
                SetObjDefFontBold("Calculated Columns:", txtTargetObjectDefinition);
                SetObjDefFontBold("Columns:", txtTargetObjectDefinition);
                SetObjDefFontBold("Hierarchies:", txtTargetObjectDefinition);
                SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
                SetObjDefFontBold("Partitions:", txtTargetObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Measure)
            {
                SetObjDefFontBold("Expression:", txtTargetObjectDefinition);
                SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Kpi)
            {
                SetObjDefFontBold("Expression:", txtTargetObjectDefinition);
                SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
                SetObjDefFontBold("Goal:", txtTargetObjectDefinition);
                SetObjDefFontBold("Status:", txtTargetObjectDefinition);
                SetObjDefFontBold("Trend:", txtTargetObjectDefinition);
                SetObjDefFontBold("Status Graphic:", txtTargetObjectDefinition);
                SetObjDefFontBold("Trend Graphic:", txtTargetObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Role)
            {
                SetObjDefFontBold("Permissions:", txtTargetObjectDefinition);
                SetObjDefFontBold("Row Filters:", txtTargetObjectDefinition);
                SetObjDefFontBold("Members:", txtTargetObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Perspective) //Cultures not supported by AMO version
            {
                SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
            }
            else if (objType == ComparisonObjectType.Action)
            {
                SetObjDefFontBold("Expression:", txtTargetObjectDefinition);
                SetObjDefFontBold("Drillthrough Columns:", txtTargetObjectDefinition);
                SetObjDefFontBold("Report Parameters:", txtTargetObjectDefinition);
                SetObjDefFontBold("Format & Visibility:", txtTargetObjectDefinition);
            }
        }
        private void PopulateObjectDefinitions(string objDefSource, string objDefTarget, ComparisonObjectType objType, ComparisonObjectStatus objStatus)
        {
            try
            {
                IterateJson(txtSourceObjectDefinition, objDefSource);
                IterateJson(txtTargetObjectDefinition, objDefTarget);
            }
            catch (Exception)
            {
                txtSourceObjectDefinition.Text = "";
                txtSourceObjectDefinition.Text = objDefSource;
                txtTargetObjectDefinition.Text = "";
                txtTargetObjectDefinition.Text = objDefTarget;
            }
            #region Difference Highlighting

            if (objStatus == ComparisonObjectStatus.DifferentDefinitions ||
                (objStatus == ComparisonObjectStatus.SameDefinition && objType == ComparisonObjectType.Perspective && _comparisonInfo.OptionsInfo.OptionMergePerspectives) ||
                (objStatus == ComparisonObjectStatus.SameDefinition && objType == ComparisonObjectType.Culture && _comparisonInfo.OptionsInfo.OptionMergeCultures)
                )
            {
                _diffs = _diff.diff_main(objDefSource, objDefTarget);
                _diff.diff_cleanupSemantic(_diffs);
                //_diff.diff_cleanupSemanticLossless(_diffs);
                //_diff.diff_cleanupEfficiency(_diffs);

                // NG: Evaluate if this needs to be added
                //Are we merging perspectives/cultures?
                if ((objType == ComparisonObjectType.Perspective && _comparisonInfo.OptionsInfo.OptionMergePerspectives) ||
                    (objType == ComparisonObjectType.Culture && _comparisonInfo.OptionsInfo.OptionMergeCultures)
                    )
                {
                    _chunklistSource = CollectChunks(source: true, backColors: _backColorsMerge);
                    _chunklistTarget = CollectChunks(source: false, backColors: _backColorsMerge);

                    //If same definition with merge perspectives/cultures option, just want to highlight differences in target that will not be applied, so do not paint chunks for source
                    if (objStatus == ComparisonObjectStatus.DifferentDefinitions)
                    {
                        PaintChunks(txtSourceObjectDefinition, _chunklistSource);
                    }
                    PaintChunks(txtTargetObjectDefinition, _chunklistTarget);
                }
                else
                {
                    _chunklistSource = CollectChunks(source: true, backColors: _backColors);
                    _chunklistTarget = CollectChunks(source: false, backColors: _backColors);

                    PaintChunks(txtSourceObjectDefinition, _chunklistSource);
                    PaintChunks(txtTargetObjectDefinition, _chunklistTarget);
                }
            }

            #endregion

            //select 1st characters so not scrolled at bottom
            if (txtSourceObjectDefinition.Text != "")
            {
                txtSourceObjectDefinition.SelectionStart  = 0;
                txtSourceObjectDefinition.SelectionLength = 0;
                txtSourceObjectDefinition.ScrollToCaret();
            }
            if (txtTargetObjectDefinition.Text != "")
            {
                txtTargetObjectDefinition.SelectionStart  = 0;
                txtTargetObjectDefinition.SelectionLength = 0;
                txtTargetObjectDefinition.ScrollToCaret();
            }
        }
Ejemplo n.º 9
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);
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Finds ComparisonObject matching search criteria.
 /// </summary>
 /// <param name="sourceObjectName"></param>
 /// <param name="sourceObjectId"></param>
 /// <param name="targetObjectName"></param>
 /// <param name="targetObjectId"></param>
 /// <param name="objType"></param>
 /// <returns>ComparisonObject matching search criteria. If none found, null is returned.</returns>
 public ComparisonObject FindComparisonObjectByObjectInternalNames(string sourceObjectName, string sourceObjectId, string targetObjectName, string targetObjectId, ComparisonObjectType objType)
 {
     foreach (ComparisonObject comparisonObject in _comparisonObjects)
     {
         ComparisonObject matchedComparisonObj;
         if (CheckComparisonObject(comparisonObject, sourceObjectName, sourceObjectId, targetObjectName, targetObjectId, objType, out matchedComparisonObj))
         {
             return(matchedComparisonObj);
         }
     }
     // if didn't find a match, return null
     return(null);
 }